python求解一元高次方程
网络上面的python解方程,几乎都是解一元二次方程,很好奇一元高次方程怎么解的,是用numpy还是sympy?希望大佬能随便举个例子(最好一元四次方程)解答。 不知这边有一元五次的例子哈哈:https://segmentfault.com/q/1010000019401143
用sympy库 Twilight6 发表于 2020-6-13 23:08
不知这边有一元五次的例子哈哈:
https://segmentfault.com/q/1010000019401143
一元五次方程不是没有求根公式吗?怎么求? 很难,因为高次方程需要涉及复数运算,python好像没有复数类型,因此你还要手动创建一个复数类型,复数类型创建好了之后,你就可以在网上搜求根公式,然后根据求根公式编写一个函数,不过要注意五次及更高次方程,没有求根公式,四次方程有求根公式,不过很复杂 这是一元三次方程的例子
def scfc(a,b,c,d):
#三次方程
d=b*c/(6*(a**2))-(b**3)/(27*(a**3))-d/2/a
e=(d+(c/3/a-(b**2)/9/(a**2))**3)**0.5
q=-b/3/a
u=0+1j
v=(-1+(3**0.5)*u)/2
v1=(-1-(3**0.5)*u)/2
return q+(d+e)**(1/3)+(d-1)**(1/3),q+v*((d+e)**(1/3))+v1*((d-e)**(1/3)),q+v1*((d+e)**(1/3))+v*((d-e)**(1/3))
如果问题已经解决,那么别忘了设置最佳答案 这是一次方程到四次方程的程序
def ycfc(a,b):
#一次方程
return -b/a
def ecfc(a,b,c):
#二次方程
return (-b+((b**2)-4*a*c)**0.5)/a/2,(-b-((b**2)-4*a*c)**0.5)/a/2
def scfc(a,b,c,d):
#三次方程
d=b*c/(6*(a**2))-(b**3)/(27*(a**3))-d/2/a
e=(d+(c/3/a-(b**2)/9/(a**2))**3)**0.5
q=-b/3/a
u=0+1j
v=(-1+(3**0.5)*u)/2
v1=(-1-(3**0.5)*u)/2
return q+(d+e)**(1/3)+(d-1)**(1/3),q+v*((d+e)**(1/3))+v1*((d-e)**(1/3)),q+v1*((d+e)**(1/3))+v*((d-e)**(1/3))
def hcfc(a,b,c,d,e):
#四次方程
d1=(c**2)-3*b*d+12*a*e
d2=2*(c**3)-9*b*c*d+27*a*(d**2)+27*(b**2)*e-72*a*e
d3=((2**(1/3))*d1)/(3*a*(d2+(-4*d1**3+d2*2)**0.5)*(1/3))
d4=((d2+(-4*(d1**3)+d2**2)**0.5)*1/3)/(3*(2**1/3)*a)
d=d3+d4
q=-b/4/a
w=(b**2)/4*(a**2)-2*c/3/a
r=-b*b*b/a/a/a+4*b*c/a/a-8*d/a
t=(w+d)**0.25
y=r/t
u=0.5*(w+d)**0.5
return q-u-0.5*(w-d-y)**0.5,q-u+0.5*(w-d-y)**0.5,q+u-0.5*(w-d+y)**0.5,q+u+0.5*(w-d+y)**0.5
如果问题解决,那么别忘了设置最佳答案
页:
[1]