登录论坛

查看完整版本 : [MATLAB数学相关] 有关贝塞尔函数和勒让德函数的无限和


snipercl
2009-09-28, 10:49
需要计算这样一个表达式 其中J 和H分别是第一类贝塞尔函数和Hankel函数,阶数均为v=n+1/2
P是n介勒让德函数,kb=50 kr=10000 theta为0到180
请问这样的无限求和 应该怎样计算比较精确,是把n选的很大吗?

大家帮我看看我的程序哪里不对 为什么只能算到80阶? 再往高阶算出的就是未知数了

snipercl
2009-09-28, 10:50
以下是我的程序

b=5;
r=1000;
k=10;
T=0;
for n=0:1:80
v=n+0.5;
T=T+(-j)^(n+1)*(n+0.5)*besselj(v,k*b)*besselh(v,k*r)*lerangde(n,cos(theta))/besselh(v,k*b);
end


勒让德函数是我自己写的

function pn=lerangde(l,x)
pn=0;
for i=0:l/2
pn=pn+(-1)^i*jiecheng(2*l-2*i)*x.^(l-2*i)/(2^l*jiecheng(i)*jiecheng(l-i)*jiecheng(l-2*i));
end

阶乘函数
function m=jiecheng(n);
if (n==0)
m=1;
else
m=1;
for i=1:n;
m=m*i;
end
end