我想用阿伦近似公式来计算零阶贝塞尔函数。阿伦公式是一个分段函数,在x>3和x<=3时有不同的表达式。起初我编写的只有x<=3的函数式,这时候计算结果和MMA内置的贝塞尔函数的计算结果是一致的。但是当我把x>3时的函数式写进去后,发现对x<=3的计算结果产生了干扰
。无论输入的x是何值,计算结果都是根据x>3的函数式来计算的。新人水平低,自己调试了好久,也看了教程,还是没弄对,希望各位能指点我一下。
下面是我的代码,写的很烂,希望不要介意。
Clear[x]
{Subscript[a^0, 0], Subscript[a^0, 1], Subscript[a^0, 2], Subscript[
a^0, 3], Subscript[a^0, 4] , Subscript[a^0, 5], Subscript[a^0,
6]} = {1, -2.2499997, 1.26562079, -0.3163866,
0.0444479, -0.0039444, 0.00021};
{Subscript[b^0, 0], Subscript[b^0, 1], Subscript[b^0, 2], Subscript[
b^0, 3], Subscript[b^0, 4], Subscript[b^0, 5], Subscript[b^0,
6]} = {0.79788456, -0.00000077, -0.0055274, -0.00009512,
0.00137237, -0.00072805, 0.00014476};
{Subscript[c^0, 0], Subscript[c^0, 1], Subscript[c^0, 2], Subscript[
c^0, 3], Subscript[c^0, 4], Subscript[c^0, 5], Subscript[c^0,
6]} = {0.78539816, 0.04166397, 0.00003957, -0.0026573, 0.00054125,
0.00029333, -0.00013558}; x = Input["请输入x"]
Subscript[J, 0][x_] :=
Subscript[f, 0][3/x]/Sqrt[x]*Cos[x - Subscript[g, 0][3/x]] /; x > 3;
Subscript[J, 0][x_] :=
Sum[Subscript[a^0, k]*((x/3)^(2*k)), {k, 0, 6}] /; x <= 3;
Subscript[f, 0][t_] = Sum[Subscript[b^0, i]*(1/t)^i, {i, 0, 6}];
Subscript[g, 0][t_] =
Sum[Subscript[c^0, i]*(1/t)^i, {i, 0, 6}]; Subscript[J, 0][x]

下面是我的代码,写的很烂,希望不要介意。
Clear[x]
{Subscript[a^0, 0], Subscript[a^0, 1], Subscript[a^0, 2], Subscript[
a^0, 3], Subscript[a^0, 4] , Subscript[a^0, 5], Subscript[a^0,
6]} = {1, -2.2499997, 1.26562079, -0.3163866,
0.0444479, -0.0039444, 0.00021};
{Subscript[b^0, 0], Subscript[b^0, 1], Subscript[b^0, 2], Subscript[
b^0, 3], Subscript[b^0, 4], Subscript[b^0, 5], Subscript[b^0,
6]} = {0.79788456, -0.00000077, -0.0055274, -0.00009512,
0.00137237, -0.00072805, 0.00014476};
{Subscript[c^0, 0], Subscript[c^0, 1], Subscript[c^0, 2], Subscript[
c^0, 3], Subscript[c^0, 4], Subscript[c^0, 5], Subscript[c^0,
6]} = {0.78539816, 0.04166397, 0.00003957, -0.0026573, 0.00054125,
0.00029333, -0.00013558}; x = Input["请输入x"]
Subscript[J, 0][x_] :=
Subscript[f, 0][3/x]/Sqrt[x]*Cos[x - Subscript[g, 0][3/x]] /; x > 3;
Subscript[J, 0][x_] :=
Sum[Subscript[a^0, k]*((x/3)^(2*k)), {k, 0, 6}] /; x <= 3;
Subscript[f, 0][t_] = Sum[Subscript[b^0, i]*(1/t)^i, {i, 0, 6}];
Subscript[g, 0][t_] =
Sum[Subscript[c^0, i]*(1/t)^i, {i, 0, 6}]; Subscript[J, 0][x]