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))
:几个更有趣的重写:
牛顿法迭代:
Eq(x, simplify(x - expr/diff(expr, x)))
把主导词孤立在一边并扎根:
相关问题 更多 >
编程相关推荐