在Python中绘制贝塞尔函数
当我运行这段代码时:
from scipy.optimize import minimize
import numpy as np
import matplotlib.pyplot as plt
import scipy.special as spl
def minf(x):
return x[0]**2 + (x[1]-1.)**2
sol = minimize(minf, [1,2])
x = np.linspace(0,10,5000)
plt.plot(x, spl.jv(3,x), '-', sol.x, -sol.fun, 'o')
我遇到了这个错误:ValueError: x 和 y 必须有相同的第一个维度
我该如何正确地写出绘图的语句呢?
我的目标是绘制一个输入和函数值的图像。在这个例子中,我有一组二维的输入。我想知道如何使用 linspace、贝塞尔函数以及正确绘图来实现这个目标。
我希望得到这样的图,并且还要标出最佳点:
https://sites.google.com/site/haripkannan/Home/plot_pdqp.png
1 个回答
1
从minimize
得到的结果好像有点问题。你想用这个结果做什么还不太清楚。看看sol
的输出,这个结果应该怎么画出来呢?
print sol.x, sol.fun
> [ -7.45132580e-09 9.99999993e-01] 1.1104451202e-16
不过,画你的贝塞尔函数其实很简单:
x = np.linspace(0,10,500)
y = spl.jv(3,x)
plt.plot(x, y, '-')
plt.show()