作者a12569 (Aaron)
看板MATLAB
标题[问题] 无反导函数的数值积分 求助
时间Sun May 31 22:24:23 2015
各位高手大家好,遇到一个棘手的积分问题想请问大家!
如果有没表达好的部分请见谅。
是这样的,我想要将一包含 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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1433082267.A.F0A.html