歡迎訪問 Forcal程序設計

多重積分計算

例子1 積分式如圖所示:

   

    Forcal代碼:

!using["XSLSF"];
a(y0::x,y,z,a,z0)=(a-x)/[(x-a)^2+(y-y0)^2+(z-z0)^2]^(3/2)+x/[x^2+(y-y0)^2+(z-z0)^2]^(3/2);
b(x0::x,y,z,b,z0)=(b-y)/[(x-x0)^2+(y-b)^2+(z-z0)^2]^(3/2)+y/[(x-x0)^2+y^2+(z-z0)^2]^(3/2);
c(_z0::x,y,z,a,b,z0,ha,hb)= z0=_z0, romb[ha,0,b,1e-6]+romb[hb,0,a,1e-6];
Bz(_x,_y,_z::x,y,z,hc,h)= x=_x,y=_y,z=_z, romb[hc,0,h,1e-6]^2;
!模塊變量賦初值(::a,b,h,ha,hb,hc)= a=0.015,b=a,h=0.005,ha=HFor("a"),hb=HFor("b"),hc=HFor("c");
yx(j,x1,x2,x3,y0,y1)=
{
    which{
        j==0:[y0=0,y1=0.015],
        j==1:[y0=0,y1=0.015],
        j==2:[y0=0.006,y1=0.018]
    }
};
igaus[HFor("Bz"),HFor("yx"),5,5,5];

例子2 一個格林函數求積分,函數如下:

    f(x,y,x0,y0)=exp(-i*k*(sqrt((x-x0)^2+(y-y0)^2)))/2/pi/(sqrt((x-x0)^2+(y-y0)^2))

有四個參量:x,y,x0,y0,它們的取值范圍都是(0,0.5),i是虛數單位,k取1。這樣這個格林函數是有奇點的。

    Forcal代碼:

!const["pi",acos(0)*2,true];
實部(x,y,x0,y0:k,t)= k=1, t=(x-x0)^2+(y-y0)^2, [cos(-k*(sqrt(t)))]/2/pi/(sqrt(t));
虛部(x,y,x0,y0:k,t)= k=1, t=(x-x0)^2+(y-y0)^2, [-sin(-k*(sqrt(t)))]/2/pi/(sqrt(t));
yx(j,x1,x2,x3,x4,y0,y1)=
{
    which{
        j==0:[y0=0,y1=0.5],
        j==1:[y0=0,y1=0.5],
        j==2:[y0=0,y1=0.5],
        j==3:[y0=0,y1=0.5]
    }
};
XSLSF::igaus[HFor("實部"),HFor("yx"),5,4,4,4];
XSLSF::igaus[HFor("虛部"),HFor("yx"),5,4,4,4];

例子3內層積分的上下限中含變量的雙重積分

求不同w對應的M值?

Forcal代碼:

f(y,x:t:w)= t=4+x*x-4*x*cos(y), x*x*[x*cos(y)-w*sqrt(t)]/sqrt{x*x*cos(y)^2+w*w*t-2*w*sqrt(t)*cos(y)+[4*x*x*sin(y)^2]/t};
xy(j,y,x,y0,y1)=
{
    which{
        j==0:[y0=-asin(1/2),y1=asin(1/2)],
        j==1:[y0=2*cos(y)-sqrt[1-4*sin(y)^2],y1=2*cos(y)]
    }
};
M(_w::w)= w=_w, XSLSF::igaus[HFor("f"),HFor("xy"),30,30];
M[2];

 


版權所有© Forcal程序設計 2002-2010,保留所有權利
E-mail: [email protected]
  QQ:630715621
最近更新: 2010年02月23日

欧冠杯