python 求解高阶线性方程并画出图像

这篇博客介绍了如何使用Python的sympy库求解一元四次方程,并尝试将复数结果转换为浮点数。博主在解方程后遇到结果仍显示为复数的问题,并通过绘制函数图像验证解的正确性。虽然发现当x=1.02时方程值接近于0,但未能找出直接导致复数结果的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上教程很多 一搜 比较容易学 

第一次接触python处理方程 浅浅记录

1. 对象:一元四次方程

from sympy import * #sympy包 pip install sympy安装即可

x= symbols('x')

#solve求解方程
print(solve(8*(x**4) + 36*(x**3) + 22 *(x**2) - 37*x - 32, x))

输出的结果是用逗号隔开的(如上).

2. 但是结果特别长 我想转成小数型.从网上搜 把代码改成如下:

from sympy import * #sympy包 pip install sympy安装即可

x= symbols('x')

#solve求解方程
print(solve(8*(x**4) + 36*(x**3) + 22 *(x**2) - 37*x - 32, x.evalf(n=3))) #3位有效数字

结果运行 还是原来长长的结果.

3.因为我只求一个结果 我就将四个结果挨着求小数型

#将结果变成浮点数
r = -9/8 - sqrt(155/24 - 2*(-1043/1728 + sqrt(5017)/192)**(1/3) + 37/(32*sqrt(155/48 + 11/(9*(-1043/1728 + sqrt(5017)/192)**(1/3)) + 2*(-1043/1728 + sqrt(5017)/192)**(1/3))) - 11/(9*(-1043/1728 + sqrt(5017)/192)**(1/3)))/2 - sqrt(155/48 + 11/(9*(-1043/1728 + sqrt(5017)/192)**(1/3)) + 2*(-1043/1728 + sqrt(5017)/192)**(1/3))/2

print(r.evalf(n=3))

小数型如图(下) 

4.然后 我画了一下图试了试:

#画图象
x = np.linspace(-5, 5, 100)
y = 8*(x**4) + 36*(x**3) + 22 *(x**2) - 37*x - 32
z = 0*x


plt.plot(x,y, color = 'lightcoral')
plt.plot(x,z, color = 'burlywood')
plt.show()

结果如下(感觉也有交点,为啥求出来还是复数呢.应该哪里有错误,但是我没找到):

 但是当x = 1.02时,方程为0.01174528000000663. 

没找问题 取了1.02这个解.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值