标准四阶龙格库塔算法.cpp
来自「计算方法程序,包括高斯列主元法,复化simpson,标准四阶龙格库塔,Seide」· C++ 代码 · 共 50 行
CPP
50 行
#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 + =
减小字号Ctrl + -
显示快捷键?