| 7 | 1/1 | 返回列表 |
| 查看: 1258 | 回復(fù): 6 | ||
zhaoshazhu新蟲 (小有名氣)
|
[求助]
求1stopt指點(diǎn) 已有1人參與
|
|
下面是我利用低版本的1stopt編寫四階龍格庫塔法計(jì)算動(dòng)力學(xué)方程,但是程序或許有問題我沒有算出結(jié)果,請(qǐng)指點(diǎn); Title "Kinetics"; //Parameters k1,k2,k3,k4,k5,k6,k7,k8,k9; //Variable t,F0,F,yH2,yDMM,yMe,yH2in,yDMMin,yMein; //Variable y1[output],y2[output],y3[output]; StartProgram [VB]; Dim iter As Integer dim yHPMin As Double dim yPDOin As Double dim yNPAin As Double dim F0 As Double dim F As Double Dim RK_i As Integer Dim h As Double Dim i As Integer dim j As Integer dim c As Double dim r1 As Double dim r2 As Double dim r3 As Double dim n_H2 As Double dim n_DMM As Double dim n_Me As Double dim y_H2 As Double dim y_DMM As Double dim y_Me As Double dim y_HPM As Double dim y_PDO As Double dim y_NPA As Double dim k1 As Double dim k2 As Double dim k3 As Double dim k4 As Double dim k5 As Double dim k6 As Double dim k7 As Double dim k8 As Double dim k9 As Double dim Y_Y01 As Double dim Y_Y02 As Double dim Y_Y03 As Double dim Y_Y04 As Double dim Y_Y05 As Double dim Y_Y06 As Double dim y_y1 As Double dim y_y2 As Double dim y_y3 As Double dim x_x1 As Double dim x_x2 As Double dim x_x3 As Double dim d_d1 As Double dim d_d2 As Double dim d_d3 As Double dim e_e1 As Double dim e_e2 As Double dim e_e3 As Double dim e_e4 As Double dim e_e5 As Double for iter to Datalenth-1 yHPMin=0 yPDOin=0 yNPAin=0 h=1.0008/20 Y_Y01=yHPMin Y_Y02=yPDOin Y_Y03=yNPAin Y_Y04=yH2in(iter) Y_Y05=yDMMin(inter) Y_Y06=yMein(inter) For RK_i=1 to 20 e_e1=0.5 e_e2=0.5 e_e3=1 e_e4=1 e_e5=0.5 x_x1=Y_Y01 x_x2=Y_Y02 x_x3=Y_Y03 For j=1 To 4 y_HPM=x_x1 y_PDO=x_x2 y_NPA=x_x3 n_H2=F0*yH2- 2*F*(y_HPM+y_PDO+y_NPA ) n_DMM=F0*yDMM- F*(y_HPM+y_PDO+y_NPA ) n_Me=F0*yMe+F*(y_HPM+y_PDO) y_H2= n_H2/F y_DMM= n_DMM/F y_ME= n_Me/F r1 = k7*k1*k2*y_H2*y_DMM /(1+k1*y_H2+k2*y_DMM+k3*y_Me+k4*y_HPM+k5*y_PDO+k6*y_NPA)^2 r2 = k8*k1*k4*y_H2*y_HPM/((1+k1*y_H2+k2*y_DMM+k3*y_Me+k4*y_HPM+k5*y_PDO+k6*y_NPA)^2 r3 = k9*k1*k5*y_H2*y_PDO/((1+k1*y_H2+k2*y_DMM+k3*y_Me+k4*y_HPM+k5*y_PDO+k6*y_NPA)^2 d_d1 = r1-r2 d_d2= r2-r3 d_d3 = r3 c=h*d_d1 if j=1 then x_x1=Y_Y01+e_e1*c y_y1=y_y1+e_e2*c/3 elseif j=2 then x_x1=Y_Y01+e_e2*c y_y1=y_y1+e_e3*c/3 elseif j=3 then x_x1=Y_Y01+e_e3*c y_y1=y_y1+e_e4*c/3 elseif j=4 then x_x1=Y_Y01+e_e4*c y_y1=y_y1+e_e5*c/3 end if c=h*d_d2 if j=1 then x_x2=Y_Y02+e_e1*c y_y2=y_y2+e_e2*c/3 elseif j=2 then x_x2=Y_Y02+e_e2*c y_y2=y_y2+e_e3*c/3 elseif j=3 then x_x2=Y_Y02+e_e3*c y_y2=y_y2+e_e4*c/3 elseif j=4 then x_x2=Y_Y02+e_e4*c y_y2=y_y2+e_e5*c/3 end if c=h*d_d3 if j=1 then x_x3=Y_Y03+e_e1*c y_y3=y_y3+e_e2*c/3 elseif j=2 then x_x3=Y_Y03+e_e2*c y_y3=y_y3+e_e3*c/3 elseif j=3 then x_x3=Y_Y03+e_e3*c y_y3=y_y3+e_e4*c/3 elseif j=4 then x_x3=Y_Y03+e_e4*c y_y3=y_y3+e_e5*c/3 end if Next Y_Y01=y_y1 Y_Y02=y_y2 Y_Y03=y_y3 Next y1(inter)=y_y1 y2(inter)=y_y2 y3(inter)=y_y3 Next EndProgram; Data; 2.05 0.48911 0.48786 0.92932 0.00258 0.06810 0.000031 0.00116 0.001137 1.37 0.73291 0.73179 0.93029 0.00155 0.06817 0.000078 0.00135 0.000573 1.62 0.61922 0.61815 0.91758 0.00173 0.08068 0.000104 0.00173 0.000475 1.98 0.50545 0.50453 0.89928 0.00187 0.09884 0.000289 0.00236 0.000444 1.21 0.82549 0.82425 0.91772 0.00158 0.08070 0.000414 0.00190 0.000280 1.49 0.67418 0.67281 0.89895 0.00224 0.09881 0.000641 0.00202 0.000292 2.70 0.37162 0.36991 0.81544 0.00531 0.17925 0.001304 0.00232 0.000368 1.02 0.97819 0.97574 0.92936 0.00254 0.06810 0.000206 0.00178 0.000361 0.82 1.22297 1.21986 0.92918 0.00273 0.06809 0.000465 0.00161 0.000189 0.97 1.03243 1.03056 0.91722 0.00213 0.08065 0.000790 0.00138 0.000149 1.19 0.84404 0.84146 0.89756 0.00379 0.09865 0.000972 0.00173 0.000210 2.16 0.46514 0.46287 0.81436 0.00663 0.17902 0.001744 0.00212 0.000349 |
木蟲 (正式寫手)

新蟲 (小有名氣)
木蟲 (正式寫手)

新蟲 (小有名氣)
木蟲 (正式寫手)

新蟲 (小有名氣)
| 7 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|