#导入相关的模块
import numpy as np
import scipy as sp
import scipy.optimize as opt
import matplotlib.pyplot as plt
#定义数学函数 f(x) = cos(x) - x
#定义函数目前学到了两种方法,第一种
def f(x):
return np.cos(x) - x
#第二种方法
f = lambda x: np.cos(x) - x
#画出函数在区间【-5,5】上的图像,(哈哈,还是高中时学到的数学思想,数形结合)
x = np.linspace(-5,5,1000)
y = f(x)
plt.plot(x,y)
plt.axhline(0,color='k')
plt.xlim(-5,5)
plt.show()
practice_1.png
根据图像可以看出函数f(x) = cos(x) -x 在【-5,5】区间上只有一个根,scipy.optimize模块提供了几个函数求根的方法,比如bisect()函数通过二分法来求解方程的根,输入的参数包括函数和求根区间,比如求解函数f(x) = cos(x) - x 在区间【-5,5】上的根
opt.bisect(f,-5,5)
输出结果是 0.7390851332155535
Let us visualize the root on the plot
a = opt.bisect(f,-5,5)
plt.plot(x,y)
plt.axline(0,color='k')
plt.scatter(a,f(a),c='r',s=150)
plt.xlim(-5,5)
plt.show()
practice_2.png
还有一个函数brentq()可以求解方程的根,而且比bisect()函数更快
opt.brentq(f,-5,5)
以上内容均参考自 IPython Interactive Computing and Visualization Cookbook
电子版可以自网站httpwww.ebook7777.com下载