[問題] 無反導函數的數值積分 求助

看板MATLAB作者 (Aaron)時間10年前 (2015/05/31 22:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
各位高手大家好,遇到一個棘手的積分問題想請問大家! 如果有沒表達好的部分請見諒。 是這樣的,我想要將一包含 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
文章代碼(AID): #1LQncRyA (MATLAB)
文章代碼(AID): #1LQncRyA (MATLAB)