2014-04-27 84 views
0

當我運行這段代碼:與貝塞爾函數繪製在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,bessel函數和正確繪圖來實現這一點。

我期待有一個情節是這樣,也有最佳的點標記:

https://sites.google.com/site/haripkannan/Home/plot_pdqp.png

回答

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() 

enter image description here

+0

請在問題結束檢查我的編輯。我已經明確了我的目標。 – haripkannan

+0

現在還不清楚,當你有bessel函數(x,y)+兩個額外點時,什麼是「二維輸入集合」?就像我說過的,我認爲你的最小化有些問題 - 你期望的是什麼? – Hooked