我應用了前面的程序,看看是否是這個意思。。。。
公共?班級?龍格庫塔?{
靜電?雙倍?答?=?0.2;
靜電?雙倍?b?=?0.2;
靜電?雙倍?c?=?5.7;
靜電?雙倍?yEnd?=?2.0;
公共?靜電?作廢?main(String[]?args)?{
雙倍?x0?=?1.0;//x的初始值x0
雙倍?y0?=?1.0;//y的初始值y0
雙倍?z0?=?1.0;//z的初始值z0
雙倍?h?=?0.01;//搜索步長
//設x為?=?x0?=?在0,y?=?y0?=?0,?z=?z0?=?0
DoRungeKutta(h,?x0,?妳呢?z0);
}
公共?靜電?作廢?DoRungeKutta(雙?h,?雙倍?x,?雙倍?y,?雙倍?z){
int?我?=?0;
while(Math.abs(y?-?yEnd)?& gt?0.0001){
x?=?x?+?h;
雙倍?y1?=?dydx(x,?y,?z);
雙倍?z1?=?dzdx(x,y,?z);
雙倍?y2?=?dydx(x,?y?+?h/2*y1?,?z?+?h/2 * z 1);
雙倍?z2?=?dzdx(x,y?+?h/2*y1?,?z?+?h/2 * z 1);
雙倍?y3?=?dydx(x,?y?+?h/2*y2?,?z?+?h/2 * z2);
雙倍?z3?=?dzdx(x,y?+?h/2*y2?,?z?+?h/2 * z2);
雙倍?y4?=?dydx(x,?y?+?h*y3?,?z?+?h * z3);
雙倍?z4?=?dzdx(x,y?+?h*y3?,?z?+?h * z3);
y?=?y?+?h/6*(y1?+?2*y2?+?2*y3?+?y4);
z?=?z?+?h/6*(z1?+?2*z2?+?2*z3?+?Z4);
i++;
}
System.out.println(x+"?"+y+"?"+z+"?"+I);
}
公共?靜電?雙倍?dydx(雙?x,?雙倍?y,?雙倍?z){
雙倍?功能?=?(x?+?答?*?y)/(-y?-?z);
回歸?功能;
}
公共?靜電?雙倍?dzdx(雙?x,?雙倍?y,?雙倍?z){
雙倍?功能?=?(b?+?(x?-?c)?*?z)/(-y?-?z);
回歸?功能;
}
}