[問題] 無反導函數的數值積分 求助
各位高手大家好,遇到一個棘手的積分問題想請問大家!
如果有沒表達好的部分請見諒。
是這樣的,我想要將一包含 x v 兩變數之函數 I 對 u 作圖
其中 x的範圍為 0~1 v的範圍為0~Vd 以比較不同 Vd 時 I(u)的分佈差異
而 J0為 0階 Bessel Function 完整式子如下
I=∫(Vd~0) |∫(0~1) exp(1/2*i*u*x^2) J0(x*v) xdx |^2 * vdv
將絕對值內的積分式對x積分並取平方後,再接著乘上v後對v積分
想請問這個問題有辦法用MATLAB解決嗎?
因為絕對內的函數並無反導函數,僅能求出數值解
我有先試著不考慮順序直接將上式做雙重積分最後再取絕對值的平方
想當然爾結果會有問題,當Vd>4時 (J(3.81)=0) 會出錯
以下為我目前的程式碼提供給大家參考
還請各位高手抽空幫我看看 謝謝大家了。
--------------------------------------------------------------------------
clear;
syms x v u
idx=1;
idvd=1;
interval= 0.05;
rangeup= 10;
rangedown= -10;
xx= rangedown: interval: rangeup;
vd= 0:4;
s= size(vd);
for idvd=1:s(2)
for u= rangedown: interval: rangeup;
f= @(x,v) 2*exp(i*u*x.*x/2).*besselj(0,v.*x).*x.*v;
mag(idvd,idx)= integral2(f,0,1,0,vd(idvd));
idx= idx+1;
end
idx=1;
end
for idvd=1:s(2)
M= max(abs(mag(idvd,:)).^2);
nmag(idvd,:)= abs(mag(idvd,:)).^2/M;
end
plot(xx, nmag,'-')
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.193.212
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1433082267.A.F0A.html
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章