如何得到方程f(x)=0的所有可能形式x=p(x)

2024-04-23 23:37:41 发布

您现在位置:Python中文网/ 问答频道 /正文

x**3-2*x-5=0

下式[x=p(x)],其中p(x)是连续可微的:

x=5/(x**2-2)

x=(2*x+5)**(1/3)

x=(x**3-5)/2

2条回答

这只是一个粗略的解决方案。。你知道吗

from  sympy import *
import numpy as np
var('x')
expr=sympify('x**3-2*x-5')
p = poly(expr);

p1=factor(p-(p).coeff_monomial(1))
for i in p1.args:
    if (poly(i).is_monomial):
        z=(np.prod([j for j in p1.args if j!=i]))
        p2=(-(p).coeff_monomial(1)/z)**(1/degree(i));
        v=i.coeff(x)
        if p2:print(p2)
        elif v:
                p2=(-z/v)
                print(p2)
for i in (p.all_terms())[:-1]:
    if i[1]:
        p3= ((i[1]*x**i[0][0]-expr)/i[1])**(1/Integer(i[0][0])) ;print(p3);

'''o
5/(x**2 - 2)
(2*x + 5)**(1/3)
x**3/2 - 5/2
'''

给定一个表达式,如expr = x**3-2*x-5,假设为零,可以用多种方式形成一个方程x=p(x)。最简单的方法是将x添加到两边:Eq(x, expr + x)。你知道吗

这会像人们所期望的那样打印:pprint(Eq(x, expr + x))

     3        
x = x  - x - 5

几个更有趣的重写:

牛顿法迭代:Eq(x, simplify(x - expr/diff(expr, x)))

       3    
    2⋅x  + 5
x = ────────
       2    
    3⋅x  - 2

把主导词孤立在一边并扎根:

p = poly(expr)
Eq(x, (LM(p) - expr)**(1/degree(p))) 

    3 _________
x = ╲╱ 2⋅x + 5 

相关问题 更多 >