# 引入所需要的库
import numpy as np
import matplotlib.pyplot as plt
# 使用 polyld() 函数创建多项式 func=1x3+2x2+3x+4
func = np.poly1d(np.array([1,2,3,4]).astype(float))
# 使用 NumPy 的 linspace() 函数在 -10 和 10 之间产生 30 个均匀分布的值,作为函数 x 轴的取值
x = np.linspace(-10, 10 , 30)
# 将 x 的值代入 func() 函数,计算得到 y 值
y=func(x)
# 调用 pyplot 的 plot 函数 (),绘制函数图像
plt.plot(x, y)
# 使用 xlable() 函数添加 x 轴标签
plt.xlabel('x')
# 使用 ylabel() 函数添加 y 轴标签
plt.ylabel('y(x)')
# 调用 show() 函数显示函数图像
plt.show()
import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt
# 定义函数
def g(x):
return x**2 + 20*np.sin(x)
# x取值:-10到10之间,间隔0.1
x = np.arange(-10, 10, 0.1)
# 画出函数曲线
plt.plot(x, g(x))
# 第一个参数是函数名,第二个参数是梯度下降的起点。返回值是函数最小值的x值(ndarray数组)
# 可以看到5.0附近有个局部最小,把初始值设置为7, 返回的应该是这个局部最小值。
xopt = optimize.fmin_bfgs(g, 7)
xmin = xopt[0] # x值
ymin = g(xmin) # y值,即函数最小值
print('xmin: ', xmin)
print('ymin: ', ymin)
# 画出最小值的点, s=20设置点的大小,c='r'设置点的颜色
plt.scatter(xmin, ymin, s=20, c='r')
#plt.savefig('./opt5-1.png') # 保存要显示的图片
plt.show()
Scipy优化:SciPy 优化_from scipy import optimize-CSDN博客