- 468 名前:467 [2008/11/11(火) 14:06:01 ]
- ルンゲ・クッタ・ギル法を用いて連立の方程式を解きたいのですが,
時間刻みを小さくしても発散してしまうのですが,何かサブルーチン内に欠陥があるのでしょうか? QA0=QA CKA0=H*FNCT1(X0,YA0,YB0,W0,W1,A,A0,A1,B,B1,H0,L,PI) RA1=(CKA0-2.0*QA0)/2.0 YA1=YA0+RA1 QA1=QA0+RA1*3.0-CKA0/2.0 XX=X0+H/2.0 CKA1=H*FNCT1(XX,YA1,YB1,W0,W1,A,A0,A1,B,B1,H0,L,PI) RA2=(1.0-1.0/sqrt(2.0))*(CKA1-QA1) YA2=YA1+RA2 QA2=QA1+RA2*3.0-(1.0-1.0/sqrt(2.0))*CKA1 CKA2=H*FNCT1(XX,YA2,YB2,W0,W1,A,A0,A1,B,B1,H0,L,PI) RA3=(1.0+1.0/sqrt(2.0))*(CKA2-QA2) YA3=YA2+RA3 QA3=QA2+3.0*RA3-(1.0+1.0/sqrt(2.0))*CKA2 XX=X0+H CKA3=H*FNCT1(XX,YA3,YB3,W0,W1,A,A0,A1,B,B1,H0,L,PI) RA4=(CKA3-2.0*QA3)/6.0 YA=YA3+RA4 X=X0+H QA=QA3+3.0*RA4-CKA3/2.0 return end function FNCT1(X0,YA0,YB0,W0,W1,A,A0,A1,B,B1,H0,L,PI) FNCT1=-2.0*W1*H0*YA0-(W1**2.0+(W0**2.0)*(A/A0+(B**2.0)/(2.0*L*A0)-(L*A1*B)/(2.0*A0)))*YB0+((W0**2.0)*(3.0*L*A1)*(YB0**2.0))/(PI*A0) * -((W0**2.0)*(PI**2.0)*(YB0**3.0))/(4.0*L*A0)+(W0**2.0)*((-2.0*B1)/(PI*(W0**2.0))+(4.0*(L**2.0)*A1*A)/((PI**3.0)*A0)+(2.0*L*A1*(A**2.0))/((PI**3.0)*A0) * -(2.0*(L**3.0)*(A1**2.0)*B)/((PI**3.0)*A0)) return end 長々と申し訳ないです.お願いします
|

|