日期:2014-05-20  浏览次数:20688 次

求助,用runge-kutta法解微分方程
求助,用runge-kutta法解微分方程的java程序。谢谢。

------解决方案--------------------
自己去找本书吧:《Java常用数值算法集》
------解决方案--------------------
这是我前些天刚做的,是计算方法的上机作业。
public class Runge
{
public static void main(String[] args)
{
double a,b,h,y0;
double Y[];
a=0.0;b=1.0;h=0.1;y0=1.0;
Y=(new Runge()).runge(a,b,h,y0);
for(int i=0;i <Y.length;i++)
System.out.println( "X "+i+ "= "+Y[i]);
}
double[] runge(double a,double b,double h,double y0)
{
double xi,k1,k2,k3,k4;
int n=(int)((b-a)/h+1);
double[] Y=new double[n];
Y[0]=y0;
for(int i=0;i <n-1;i++)
{
xi=a+i*h;
k1=h*f(xi,Y[i]);
k2=h*f(xi+h/2,Y[i]+k1/2);
k3=h*f(xi+h/2,Y[i]+k2/2);
k4=h*f(xi+h,Y[i]+k3);
Y[i+1]=Y[i]+h/6*(k1+2*k2+2*k3+k4);
}
return Y;
}
double f(double x,double y)
{
return -y;
}
}