0阶贝塞尔函数c语言代码 零阶贝塞尔函数matlab

如何用mathematic输入零阶第一类贝塞尔函数FUNCTION bessj0(x)
REAL bessj0,x
REAL ax,xx,z
DOUBLE PRECISION p1,p2,p3,p4,p5,q1,q2,q3,q4,q5,
r1,r2,r3,r4,r5,r6,s1,s2,s3,s4,s5,s6,y
SAVE p1,p2,p3,p4,p5,q1,q2,q3,q4,q5,r1,r2,r3,r4,r5,r6,
s1,s2,s3,s4,s5,s6
DATA p1,p2,p3,p4,p5/1.d0,-.1098628627d-2,.2734510407d-4,
-.2073370639d-5,.2093887211d-6/, q1,q2,q3,q4,q5
/-.1562499995d-1,.1430488765d-3,-.6911147651d-5,
.7621095161d-6,-.934945152d-7/
DATA r1,r2,r3,r4,r5,r6/57568490574.d0,-13362590354.d0,
651619640.7d0,-11214424.18d0,77392.33017d0,
-184.9052456d0/,s1,s2,s3,s4,s5,s6/57568490411.d0,
1029532985.d0,9494680.718d0,59272.64853d0,
267.8532712d0,1.d0/
if(abs(x)8.) then
y=x**2
bessj0=(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6)))))/
(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6)))))
else
ax=abs(x)
z=8./ax
y=z**2
xx=ax-.785398164
bessj0=sqrt(.636619772/ax)*(cos(xx)*(p1+y*(p2+y*
(p3+y*(p4+y*p5))))-z*sin(xx)*(q1+y*(q2+y*
(q3+y*(q4+y*q5)))))
endif
END FUNCTION bessj0
球贝塞尔函数刚刚错了= =,现在看下对不对0阶贝塞尔函数c语言代码?
球贝塞尔函数
第一类球贝塞尔函数j_n (x)曲线(n = 0, 1, 2)
第二类球贝塞尔函数y_n (x)曲线(n = 0, 1, 2)
若使用分离变量法求解球坐标下0阶贝塞尔函数c语言代码的三维拉普拉斯方程 , 则可得到如下形式关于径向("r"方向)分量的常微分方程0阶贝塞尔函数c语言代码:
x^2 \frac{d^2 y}{dx^2} + 2x \frac{dy}{dx} + [x^2 - n(n+1)]y = 0
关于上述方程的一对线性无关解称为'''球贝塞尔函数''',分别用"j","n"和"y","n"表示(有时也记为"n","n") 。这两个函数与一般贝塞尔函数''J'',''n''和''Y'' , ''n''存在关系0阶贝塞尔函数c语言代码:
j_n(x) = \sqrt{\frac{\pi}{2x}} J_{n+1/2}(x),
y_n(x) = \sqrt{\frac{\pi}{2x}} Y_{n+1/2}(x) = (-1)^{n+1} \sqrt{\frac{\pi}{2x}} J_{-n-1/2}(x).
球贝塞尔函数也可写成:
j_n(x) = (-x)^n \left(\frac{1}{x}\frac{d}{dx}\right)^n\,\frac{\sin x}{x}
y_n(x) = -(-x)^n \left(\frac{1}{x}\frac{d}{dx}\right)^n\,\frac{\cos x}{x}
0阶第一类球贝塞尔函数j_0(x)又称为sinc函数 。头几阶整阶球贝塞尔函数的表达式分别为:
第一类:
j_0(x)=\frac{\sin x} {x}
j_1(x)=\frac{\sin x} {x^2}- \frac{\cos x} {x}
j_2(x)=\left(\frac{3} {x^2} - 1 \right)\frac{\sin x}{x} - \frac{3\cos x} {x^2}
第二类:
y_0(x)=-j_{-1}(x)=-\,\frac{\cos x} {x}
y_1(x)=j_{-2}(x)=-\,\frac{\cos x} {x^2}- \frac{\sin x} {x}
y_2(x)=-j_{-3}(x)=\left(-\,\frac{3}{x^2}+1 \right)\frac{\cos x}{x}- \frac{3 \sin x} {x^2}.
还可以依照前面构造汉开尔函数相同的步骤构造所谓 U球汉开尔函数/U:
h_n^{(1)}(x) = j_n(x) + i y_n(x)
h_n^{(2)}(x) = j_n(x) - i y_n(x)
事实上,所有半奇数阶贝塞尔函数都可以写成由三角函数组成的封闭形式的表达式,球贝塞尔函数也同样可以 。特别地 , 对所有非负整数''n'',存在:
h_n^{(1)}(x) = (-i)^{n+1} \frac{e^{ix}}{x} \sum_{m=0}^n \frac{i^m}{m!(2x)^m} \frac{(n+m)!!}{(n-m)!!}
而对实自变量''x'' , ''h'',''n'',(2)是上面''h'',''n'',(1)的复共轭(!! 表示'''双阶乘|阶乘''') 。由此我们可以通过得到''h'',再分离实部虚部 , 求出相应阶''j'' 和''h'' 的表达式 , 譬如''j''sub0/sub(''x'') = sin(''x'')/''x'',''y''sub0/sub(''x'') = -cos(''x'')/''x'',等等 。
如何用matlab实现第一类零阶bessel函数接调用Matlab函数besselj(0,x)
其中0表示零阶bessel函数,x是自变量,以此类推,一阶bessel函数就是besselj(1,x).希望能解决你的问题!
VC编写贝塞尔函数,现在做一个小程序,需要用到matlab中的besselj(nu,Z)这个函数,即贝塞尔函数,怎么办?不用混编,直接用_jn 。

推荐阅读