資源簡介
數值計算中關于經典4階 Runge-Kutta方法解常微分方程的通用c++程序以及Adams隱式3階方法解常微分方程的通用c++程序源代碼
代碼片段和文件信息
/*
實驗七:常微分方程的數值解
姓名:劉波
學號:pb07210511
*/
#include
#include
#include
using?namespace?std;
double?f(double?xdouble?y)
{
return(-x*x*y*y);
}
double?Runge_Kutta(double?y0double?x0double?xndouble?h)
{
double?k1k2k3k4xy;
????????x=x0;
y=y0;
????????while(fabs(x-xn)>1e-12)
{
k1=f(xy);
k2=f(x+0.5*hy+0.5*h*k1);
k3=f(x+0.5*hy+0.5*h*k2);
k4=f(x+hy+h*k3);
y=y+h/6*(k1+2*k2+2*k3+k4);
????????????x=x+h;
}
return(y);
}
double?Adams(double?y0double?x0double?xndouble?h)
{
????????double?k1k2k3k4x1x2y1y2y;
x1=x0+h;
x2=x0+2*h;
y1=Runge_Kutta(y0x0x1h);
y2=Runge_Kutta(y0x0x2h);
??????while(fabs(x2-xn)>1e-10)
??{
k1=f(x2y2);
k2=f(x1y1);
k3=f(x0y0);
y=y1+h/3*(7*k1-2*k
評論
共有 條評論