📄 runge_kutta.cpp
字号:
#include<iostream>
#include<cmath>
using namespace std;
#define N 9 //step length
#define E 0.00001 //presicion 10-5
double f(double,double);
double g(double);
void Euler(double,double,double *,double *);
void Implicit_Euler(double,double,double *,double *);
void R_K(double,double,double *,double *);
double h1=0.1;
double g(double x) //y=g(x)
{return pow(((x*x+2)/3),3.0/2);}
double f(double x,double y)
{return fabs(sin(2*x));}
void R_K(double x0,double y0,double *X,double *Y)
{
double K1,K2;
X[0]=x0+h1;
K1=f(x0,y0);
K2=f(x0+h1/2,y0+h1*K1/2);
Y[0]=y0+h1*K2;
for(int i=1;i<N;i++)
{
X[i]=X[0]+i*h1;
K1=f(X[i-1],Y[i-1]);
K2=f(X[i-1]+h1/2,Y[i-1]+h1*K1/2);
Y[i]=Y[i-1]+h1*K2;
}
}
int main()
{
double x0=0,y0=1;
double X[N],Y[N];
int i;
R_K(x0,y0,X,Y);
for(i=0;i<N;i++)
cout<<X[i]<<" "<<Y[i]<<endl;
cout<<endl;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -