24小时热门版块排行榜    

查看: 2098  |  回复: 2

莺呼起2020

铜虫 (小有名气)

[求助] 利用matlab对贝塞尔函数进行积分并求解未知变量 已有1人参与

利用matlab对贝塞尔函数进行积分,使用离散相加的方法,程序能够跑通,但是与正确结果有较大误差,烦请大神帮忙看程序是否存在问题,指点迷津。感谢感谢!!
所计算的公式如图所示。

程序如下所示:

syms e0

xl = linspace(1,1000,10001);
xl(end) = [];
dxl = xl(2)-xl(1);

f7  = sum(e0.* ((((besselj(0,xl*a)) - (besselj(0,xl*b))).^2)./xl) )*dxl;
f8 = (t0/(1i*k0*sqrt(t0)))*((1-t1)/(1+t1));

f9 = f7 - f8;
e0 = vpasolve(f9 == 0);

q = vpa(e0);

其中e0为符号数,a、b、k0均为实数,t0、t1为复数,i=sqrt(-1)。求解e0。
感谢感谢!

利用matlab对贝塞尔函数进行积分并求解未知变量


发自小木虫Android客户端
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

johnliu1983

至尊木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
莺呼起2020: 金币+20 2020-10-06 09:28:18
你用的离散积分取的数值点不够多,需要再多一点儿。  另外离散积分你需要用离散积分公式计算,不能这样直接求和。最简单的你可以用trapz这个函数试一试。如果你要求的精度更高,你需要找一下更好的离散积分公式。
2楼2020-09-14 09:10:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

莺呼起2020

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by johnliu1983 at 2020-09-14 09:10:14
你用的离散积分取的数值点不够多,需要再多一点儿。  另外离散积分你需要用离散积分公式计算,不能这样直接求和。最简单的你可以用trapz这个函数试一试。如果你要求的精度更高,你需要找一下更好的离散积分公式。

好的,我试一下,谢谢!!
3楼2020-10-06 09:28:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 pang_2020 的主题更新
信息提示
请填处理意见