24小时热门版块排行榜    

查看: 1592  |  回复: 8

jjgy_2002

木虫 (著名写手)

[求助] [求助] 帮看此第一类贝塞尔函数求解代码根据哪篇文献的计算方法编写?

[求助] 帮看此第一类贝塞尔函数求解代码根据哪篇文献的计算方法编写?
代码如下:
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
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jjgy_2002

木虫 (著名写手)

2楼2011-06-25 16:52:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jjgy_2002

木虫 (著名写手)

怎没人响应呢?
3楼2011-06-27 09:58:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

vivian5251

新虫 (初入文坛)

【答案】应助回帖

想帮助,但不会,希望有人能帮到你
大家好
4楼2011-07-03 01:10:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tong_xiao

新虫 (初入文坛)

金币有点少哈
5楼2013-11-12 21:14:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jjgy_2002

木虫 (著名写手)

引用回帖:
5楼: Originally posted by tong_xiao at 2013-11-12 21:14:14
金币有点少哈

呵呵,能帮忙吗?我多给金币就是了
6楼2013-11-13 13:02:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tong_xiao

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by jjgy_2002 at 2013-11-13 13:02:23
呵呵,能帮忙吗?我多给金币就是了...

我在一本书上看到过Vb编程的,可以吗?
7楼2013-11-19 21:03:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tong_xiao

新虫 (初入文坛)

就是一个visual basic 常用算法集里面有一个此种算法,不过是vb,跟你的matlab大同小异哦
8楼2013-11-19 21:06:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jjgy_2002

木虫 (著名写手)

引用回帖:
7楼: Originally posted by tong_xiao at 2013-11-19 21:03:13
我在一本书上看到过Vb编程的,可以吗?...

可以啊
9楼2013-11-20 15:51:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 jjgy_2002 的主题更新
信息提示
请填处理意见