为了账号安全,请及时绑定邮箱和手机立即绑定

python求方程

python求方程

交互式爱情 2019-06-19 09:05:14
方程x^5+2x^4+3x^3-x^2-3x=1怎样求出其五个数值解?
查看完整描述

2 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

使用sympy库进行方程计算
In[1]:fromsympyimport*
In[2]:x=symbols('x')
In[3]:solve(Eq(x**5+2*x**4+3*x**3-x**2-3*x-1,0),x)
Out[3]:
[CRootOf(x**5+2*x**4+3*x**3-x**2-3*x-1,0),
CRootOf(x**5+2*x**4+3*x**3-x**2-3*x-1,1),
CRootOf(x**5+2*x**4+3*x**3-x**2-3*x-1,2),
CRootOf(x**5+2*x**4+3*x**3-x**2-3*x-1,3),
CRootOf(x**5+2*x**4+3*x**3-x**2-3*x-1,4)]
In[5]:R=solve(Eq(x**5+2*x**4+3*x**3-x**2-3*x-1,0),x)
In[6]:[N(solution)forsolutioninR]
Out[6]:
[0.933791433341506,
-0.557328385553605-0.0683867345066456*I,
-0.557328385553605+0.0683867345066456*I,
-0.909567331117148-1.60288306941394*I,
-0.909567331117148+1.60288306941394*I]
                            
查看完整回答
反对 回复 2019-06-19
?
慕村9548890

TA贡献1884条经验 获得超4个赞

非线性方程数值解适合使用scipy.optimize的fslove和root,速递比sympy的符号推导快很多这道题代码可以这样写
fromscipy.optimizeimportfsolve
deffunc(v):
x,=v.tolist()
return[
x**5+2*(x**4)+3*(x**3)-x**2-3*x-1
]
r=fsolve(func,[1])
print(r[0])
r=fsolve(func,[-1])
print(r[0])
采用最小二乘法拟合,需要你给出试算初值。这道题来说,1和-1两个初值向两个方向拟合,所以会得到两个不同的近似解,一个是0.93379143,一个是-0.5563642。试算初值的选定倚赖推导和经验,可以借助sympy。
                            
查看完整回答
反对 回复 2019-06-19
  • 2 回答
  • 0 关注
  • 355 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信