四阶龙格库塔法的基本思想_经典四阶龙格库塔法解1阶微分方程组.doc
經典四階龍格庫塔法解1階微分方程組
經典四階龍格庫塔法解一階微分方程組
數值計算課程設計
PAGE \* MERGEFORMAT
PAGE \* MERGEFORMAT 2
PAGE \* MERGEFORMAT
PAGE \* MERGEFORMAT 1
1.經典四階龍格庫塔法解一階微分方程組
1.1運用四階龍格庫塔法解一階微分方程組算法分析
(1-1)
(1-1)
(1-2
(1-2)
(1-3
(1-3)
(1-4
(1-4)
(1-5
(1-5)
(1-6
(1-6)
(1-7
(1-7)
(1-8
(1-8)
(1-9
(1-9)
(1-10
(1-10)
經過循環計算由 推得 ……
每個龍格-庫塔方法都是由一個合適的泰勒方法推導而來,使得其最終全局誤差為,一種折中方法是每次進行若干次函數求值,從而省去高階導數計算。4階龍格-庫塔方法(RK4)是最常用的,它適用于一般的應用,因為它非常精準,穩定,且易于編程。
1.2經典四階龍格庫塔法解一階微分方程流程圖
圖1-1 經典四階龍格庫塔法解一階微分方程流程圖
1.3經典四階龍格庫塔法解一階微分方程程序代碼:
#include
#include
using namespace std;
void RK4( double (*f)(double t,double x, double y),double (*g)(double t,double x, double y) ,double initial[3], double resu[3],double h)
{
double f1,f2,f3,f4,g1,g2,g3,g4,t0,x0,y0,x1,y1;
t0=initial[0];x0=initial[1];y0=initial[2];
f1=f(t0,x0,y0); g1=g(t0,x0,y0);
f2=f(t0+h/2, x0+h*f1/2,y0+h*g1/2); g2=g(t0+h/2, x0+h*f1/2,y0+h*g1/2);
f3=f(t0+h/2, x0+h*f2/2,y0+h*g2/2); g3=g(t0+h/2, x0+h*f2/2,y0+h*g2/2);
f4=f(t0+h, x0+h*f3,y0+h*g3); g4=g(t0+h, x0+h*f3,y0+h*g3);
x1=x0+h*(f1+2*f2+2*f3+f4)/6; y1=y0+h*(g1+2*g2+2*g3+g4)/6;
resu[0]=t0+h;resu[1]=x1;resu[2]=y1;
}
int main()
{
double f(double t,double x, double y);
double g(double t,double x, double y);
double initial[3],resu[3];
double a,b,H;
double t,step;
int i;
cout<
cin>>initial[0]>>initial[1]>>initial[2];
cout<
cin>>a>>b;
cout<
cin>>step;
cout<
H=(b-a)/step;
cout<< initial[0]<
for(i=0;i
{ RK4( f,g ,initial, resu,H);
cout<
initial[0]=resu[0];initial[1]=resu[1];initial[2]=resu[2];
}
return(0);
}
double f(double t,double x, double y)
{
double dx;
dx=x+2*y;
return(dx);
}
double g(double t,double x, double y)
{
double
總結
以上是生活随笔為你收集整理的四阶龙格库塔法的基本思想_经典四阶龙格库塔法解1阶微分方程组.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机视觉专业名词中英文对照(转)
- 下一篇: Linux Mint 安装网易云音乐