24小时热门版块排行榜    

查看: 1715  |  回复: 11
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

watertxf

铁虫 (初入文坛)

[求助] 求帮忙,关于含有bessel函数的方程的编程求解问题

我现在有个含有贝塞尔函数的方程,方程只有一个未知数k,我需要求方程等于0时k随l的变化。我编的程序如下,请各位高手帮忙看下哪里出了问题,非常感谢!
ps:附件是要求的方程及所用到的关系式
a=0.01159;
b=0.02317;
e=10;
l=7;
syms k
jleka=((pi/(2*e^0.5*k*a))^0.5)*besselj(l+0.5,e^0.5*k*a);
jlka=((pi/(2*k*a))^0.5)*besselj(l+0.5,k*a);
jlkb=((pi/(2*k*b))^0.5)*besselj(l+0.5,k*b);
jldka=0.5*jlka+(k*a*pi/8)^0.5*(besselj(l-0.5,k*a)-besselj(l+1.5,k*a));
jldeka=0.5*jleka+(e^0.5*k*a*pi/8)^0.5*(besselj(l-0.5,e^0.5*k*a)-besselj(l+1.5,e^0.5*k*a));
ylka=((pi/(2*k*a))^0.5)*bessely(l+0.5,k*a);
ylkb=((pi/(2*k*b))^0.5)*bessely(l+0.5,k*b);
yldka=0.5*ylka+(k*a*pi/8)^0.5*(bessely(l-0.5,k*a)-bessely(l+1.5,k*a));
h11=jleka;
h12=jlka/jlkb-ylka/ylkb;
h21=jldeka;
h22=jldka/jlkb-yldka/ylkb;
y=h11*h22-h12*h21;
k=solve(y)
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

watertxf

铁虫 (初入文坛)

jjdg: 直接pm会更快获得答复 2011-07-14 20:14:15
引用回帖:
Originally posted by watertxf at 2011-07-14 14:20:49:
这位老师,非常感谢您的回帖。但是我还是看不太明白,能麻烦您给详细说一下吗?我需要求方程等于零时整数L对应的k,太谢谢您了!

还有我是用的matlab编的程序
6楼2011-07-14 14:40:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 12 个回答

fengsj9898

捐助贵宾 (正式写手)

【答案】应助回帖

★ ★
xzhdty(金币+2): 欢迎常来程序语言看看 2011-07-14 15:41:58
watertxf(金币+5): 您好!能不能麻烦您在跟我详细说一下? 2011-07-15 14:07:49
ki=0:0.1:1;
nki=length(k);
yi=zeros(nki,1);
for i=1:nk
k=ki(i);
jleka=((pi/(2*e^0.5*k*a))^0.5)*besselj(l+0.5,e^0.5*k*a);
jlka=((pi/(2*k*a))^0.5)*besselj(l+0.5,k*a);
jlkb=((pi/(2*k*b))^0.5)*besselj(l+0.5,k*b);
jldka=0.5*jlka+(k*a*pi/8)^0.5*(besselj(l-0.5,k*a)-besselj(l+1.5,k*a));
jldeka=0.5*jleka+(e^0.5*k*a*pi/8)^0.5*(besselj(l-0.5,e^0.5*k*a)-besselj(l+1.5,e^0.5*k*a));
ylka=((pi/(2*k*a))^0.5)*bessely(l+0.5,k*a);
ylkb=((pi/(2*k*b))^0.5)*bessely(l+0.5,k*b);
yldka=0.5*ylka+(k*a*pi/8)^0.5*(bessely(l-0.5,k*a)-bessely(l+1.5,k*a));
h11=jleka;
h12=jlka/jlkb-ylka/ylkb;
h21=jldeka;
h22=jldka/jlkb-yldka/ylkb;
y=h11*h22-h12*h21;
yi(i)=y;
end
2楼2011-07-14 11:57:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

watertxf

铁虫 (初入文坛)


dubo(金币+1): 欢迎常来程序语言版讨论 2011-07-18 22:56:55
引用回帖:
Originally posted by fengsj9898 at 2011-07-14 11:57:37:
ki=0:0.1:1;
nki=length(k);
yi=zeros(nki,1);
for i=1:nk
k=ki(i);
jleka=((pi/(2*e^0.5*k*a))^0.5)*besselj(l+0.5,e^0.5*k*a);
jlka=((pi/(2*k*a))^0.5)*besselj(l+0.5,k*a);
jlkb=((pi/(2*k*b))^0.5)*b ...

这位老师,非常感谢您的回帖。但是我还是看不太明白,能麻烦您给详细说一下吗?我需要求方程等于零时整数L对应的k,太谢谢您了!
4楼2011-07-14 14:20:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

watertxf

铁虫 (初入文坛)

引用回帖:
Originally posted by fengsj9898 at 2011-07-14 11:57:37:
ki=0:0.1:1;
nki=length(k);
yi=zeros(nki,1);
for i=1:nk
k=ki(i);
jleka=((pi/(2*e^0.5*k*a))^0.5)*besselj(l+0.5,e^0.5*k*a);
jlka=((pi/(2*k*a))^0.5)*besselj(l+0.5,k*a);
jlkb=((pi/(2*k*b))^0.5)*b ...

就是说最后算出来的结果不能确定哪个是零点
5楼2011-07-14 14:38:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见