function Jx = bessel(n,x)
format long;
if n == 0
a = [5.7568490574e10;-1.3362590354e10;6.516196407e8;
-1.121442418e7;7.739233017e4;-1.849052456e2];
b = [5.7568490411e10;1.029532985e9;9.494680718e6;
5.927264853e4;2.678532712e2;1.0];
r =[1.0;-0.1098628627e-2;0.2734510407e-4;
-0.2073370639e-5;0.2093887211e-6];
s =[-0.1562499995e-1;0.1430488765e-3;-0.6911147651e-5;
0.7621095161e-6;-0.934945152e-7];
if abs(x) < 8
J0_u = a(1);
J0_d = b(1);
for i=2:6
J0_u = J0_u + a(i)*power(x,2*(i-1));
J0_d = J0_d + b(i)*power(x,2*(i-1));
end
J0 = J0_u/J0_d;
else
z = 8/abs(x);
sita = abs(x) - pi/4;
R0 = r(1);
S0 = s(1);
for i=2:5
R0 = R0 + r(i)*power(z,2*(i-1));
S0 = S0 + s(i)*power(z,2*(i-1));
end
J0 = (R0*cos(sita)-z*S0*sin(sita))*sqrt(2/pi/abs(x));
end
Jx = J0;
else
if n == 1
c = [7.2362614232e10;-7.895059235e9;2.423968531e8;
-2.972611439e6;1.570448260e4;-3.016036606e1];
d = [1.44725228443e11;2.300535178e9;1.858330474e7;
9.944743994e4;3.769991397e2;1.0];
p = [1.0;0.183105e-2;-0.3516396496e-4;
0.2457520174e-5;-0.240337019e-6];
q = [0.4687499995e-1;-0.2002690873e-3;
0.8449199096e-5;-0.88228987e-6;
0.105787412e-6];
if abs(x) < 8
J1_u = c(1);
J1_d = d(1);
for i=2:6
J1_u = J1_u + c(i)*power(x,2*(i-1));
J1_d = J1_d + d(i)*power(x,2*(i-1));
end
J1 = x*J1_u/J1_d;
else
z = 8/abs(x);
fi = abs(x) - 3*pi/4;
P1 = p(1);
Q1 = q(1);
for i=2:5
P1 = P1 + p(i)*power(z,2*(i-1));
Q1 = Q1 + q(i)*power(z,2*(i-1));
end
J1 = (P1*cos(fi)-z*Q1*sin(fi))*sqrt(2/pi/abs(x));
if x<0
J1 = -J1;
end
end
Jx = J1;
else
if abs(x) > n
y = 2/x;
bess1 = bessel(0,x);
bess2 = bessel(1,x);
for j=1:n-1
Jx = j*y*bess2 - bess1;
bess1 = bess2;
bess2 = Jx;
end
else
M = 2*floor(((n + floor(sqrt(40*n))))/2);
JS = zeros(M+2 ,1);
JS(M+2) = 0;
JS(M+1) = 1;
y = 2/x;
bSum = 0;
for k=M:-1:1
JS(k) = JS(k+1)*y*k - JS(k+2);
end
BK = JS(1);
for k=1:floor(M/2)
BK = BK + 2*JS(2*k+1);
end
Jx = JS(n+1)/BK;
end
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
MATLAB语言常用算法_特殊函数计算.rar
共21个文件
m:21个
需积分: 5 0 下载量 180 浏览量
2023-06-06
13:40:25
上传
评论
收藏 10KB RAR 举报
温馨提示
本资料仅供参考学习
资源推荐
资源详情
资源评论
收起资源包目录
MATLAB语言常用算法_特殊函数计算.rar (21个子文件)
MATLAB语言常用算法_特殊函数计算
gamafun.m 768B
factbygama.m 143B
SmartSimpson.m 401B
IntSimpson.m 1KB
IntGaussLager.m 1KB
gamap.m 825B
bessel.m 3KB
besselm2.m 1KB
SIx.m 319B
CIx.m 372B
bessel2.m 2KB
EIx.m 373B
lngama.m 360B
betap.m 1KB
Ellipint1.m 374B
Ellipint2.m 433B
EIx2.m 602B
ErrFunc.m 353B
Beta.m 86B
besselm.m 2KB
IntGauss.m 2KB
共 21 条
- 1
资源评论
毕业季设计
- 粉丝: 304
- 资源: 5650
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功