📄 标准四阶龙格库塔算法.cpp
字号:
#include<iostream.h>
struct xy //为方便编程时识别,定义结构体
{
double x,y;
};
class Runge
{
double a,b,h;int n;
public:
Runge(double A,double B,int N) //公式
{
a=A;b=B;n=N;h=(b-a)/n;
xy *t=new xy[n];
t[0].y=0;
for(int j=0;j<n;j++)
{t[j].x=a+j*h;}
cout<<endl<<"结果:"<<endl;
double k1,k2,k3,k4;
for(int i=0;i<n-1;i++)
{
k1=h*(t[i].x-t[i].y);
k2=h*(t[i].x+0.5*h-k1);
k3=h*(t[i].x+0.5*h-k2);
k4=h*(t[i].x+h-k3);
t[i+1].y=t[i].y+(k1+2*k2+2*k3+k4)/6;
}
cout<<t[n-1].y<<endl;
}
};
void main()
{ cout<<"-------------------四阶Runge-Kutta公式-------------------"<<endl;
a1: int n;double a,b;
cout<<endl<<"y'=x-y (0<=x<=1)"<<endl<<"y(0)=0"<<endl;
cout<<"输入区间(a,b)为:"<<endl<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"把("<<a<<","<<b<<")分成n等分,n=";
cin>>n;
Runge(a,b,n);
char out='y';
cout<<"继续?y/n"<<endl;
cin>>out;
if(out!='n') goto a1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -