2012-02-18 57 views
1

我想繪製一個函數的根,該函數由多個貝賽爾函數在Matlab中添加和相乘組成。方程爲:其中Jm是第一類階m(besselj)的貝塞爾函數。 Im是第一類m(besseli)的改進的bessel函數。對於每種模式m = 0,1,2,...和n = 1,2,3 ...頻率ω(mn)是所列等式的對應根。 m = 0,1,2 n-1,2,3,4。我需要解決12個根的方程。我是Matlab新手,這有點不在我的聯盟中。到目前爲止,我有這個代碼,但我不確定是否需要腳本中的變量omega。我也看過其他人關於這個主題的問題,但沒有看到任何這樣的問題。我所看到的情節與我的看法完全不同,它告訴我我可能是錯的。謝謝你的幫助。繪圖和尋找貝塞爾函數的根

m=(0:2); k=(1:3); n=(1:4); 
Jm=besselj(m,n'); 
Ik=besseli(k,n'); 
Jk=besselj(k,n'); 
Im=besseli(m,n'); 
g=Jm.*Ik+Im.*Jk 
plot(g) 
+1

嘗試使用http://www.mathworks.com/matlabcentral/fileexchange/6794 – Cheery 2012-02-18 06:35:32

回答

0

繪製

besseljbesseli帶你打電話omega作爲他們的第二個參數是什麼,所以繪製你的函數,你應該嘗試像

m=0; k=1; omega=0:0.02:10; 
Jm=besselj(m,omega); 
Ik=besseli(k,omega); 
Jk=besselj(k,omega); 
Im=besseli(m,omega); 
g=Jm.*Ik+Im.*Jk; 
plot(omega,g); 
hold all; 
plot(omega,0,'k'); 
axis([min(omega) max(omega) -100 100]); 

這說明你的m=1, k=1前幾個零點在3.2,6.3和9.4左右:

screenshot matlab figure

尋找根源數值

您可以實現Halley's method您的功能g,類似於如何besselj的根在MatlabCentral file linked by Cheery被確定。