runge_kutta72.java
来自「数值分析之计算方法与实验7:常微分方程数值解法 by java」· Java 代码 · 共 36 行
JAVA
36 行
//四阶龙格—库塔公式
import java.io.*;
class Runge_Kutta72{
static void RK(double a,double b,double y10,double y20,int n)throws IOException{
PrintWriter out = new PrintWriter(new FileWriter("result.txt"));
double x=a,y1=y10,y2=y20,k11,k12,k13,k14,k21,k22,k23,k24;
double h=(b-a)/n;
int i;
out.print("x[0]="+a+" y1[0]="+y10+" y2[0]="+y20+"\n");
for(i=1;i<=n;i++){
k11=f1(x,y1,y2);
k21=f2(x,y1,y2);
k12=f1(x+h/2,y1+h*k11/2,y2+h*k21/2);
k22=f2(x+h/2,y1+h*k11/2,y2+h*k21/2);
k13=f1(x+h/2,y1+h*k12/2,y2+h*k22/2);
k23=f2(x+h/2,y1+h*k12/2,y2+h*k22/2);
k14=f1(x+h,y1+h*k13,y2+k23*h);
k24=f2(x+h,y1+h*k13,y2+k23*h);
y1=y1+h*(k11+2*k12+2*k13+k14)/6;
y2=y2+h*(k21+2*k22+2*k23+k24)/6;
x=a+i*h;
out.print("x["+i+"]="+x+" y1["+i+"]="+y1+" y2["+i+"]="+y2+"\n");
}
out.close();
}
static double f1(double x,double y1,double y2){
return 120-2*y1+2*y2;
}
static double f2(double x,double y1,double y2){
return 2*y1-5*y2;
}
public static void main(String[]args)throws IOException{
RK(0.0,1.0,0.0,0.0,10);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?