|
楼主 |
发表于 2016-11-26 17:32:26
|
显示全部楼层
从图像可知,函数与X轴有3个焦点。
利用微分的思想,逐步逼近X轴,使Y接近于0,则可求得近似解。
- #coding:utf-8
- '''计算给定范围内一元多次方程的解的个数:
- 例如:
- X **5 - 5*X**4 + 4*X**3 - 3*X**2 + 2*X + 40 = 0 (当X在-2到5范围内的解的个数)'''
- from matplotlib import pylab as plt
- import numpy as np
- X = np.linspace(-2,5,70000)
- Y = X**5 - 5*X**4 + 4*X**3 - 3*X**2 + 2*X + 40
- Z = np.linspace(0,0,70000)
- # plt.plot(X,Y)
- # plt.plot(X,Z)
- # plt.show()
- for i in range(0,10000):
- if Y[i] <= 0 and Y[i+1] >0:
- print (X[i],Y[i])
- break
- for i in range(40000,50000):
- if Y[i] >= 0 and Y[i+1] <0:
- print (X[i],Y[i])
- break
- for i in range(50000,70000):
- if Y[i] <= 0 and Y[i+1] >0:
- print (X[i],Y[i])
- break
复制代码
输出:
- -1.35919084558 -0.00764877237992
- 2.33526193231 0.00152775539961
- 3.99998571408 -0.00242856428554
复制代码
所以,这3个解分别是:-1.3591 , 2.3353 , 4.0000(这个是精确解) |
|