四阶龙格-库塔法解微分方程(C++)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.作业:
用四阶龙格—库塔法求下列方程:
()()()1010100y x y x y '=-≤≤⎧⎪⎨=⎪⎩步长0.1h =。并与解析解2
51x y e -=-比较。
二.程序
#include
#include
#include
using namespace std;
double f(double x,double y){
return 10*x*(1-y);
}
int main(){
int n,i;
double h,k1,k2,k3,k4;
cout<<"Please input the number of intervals:";
cin>>n;
double *x=new double [n+1];
double *y=new double [n+1];
double *y1=new double [n+1];
h=1.0/n;
y[0]=0;
for(i=0;i<=n;i++){
x[i]=i*h;
k1=f(x[i],y[i]);
k2=f(x[i]+h/2,y[i]+k1*h/2);
k3=f(x[i]+h/2,y[i]+k2*h/2);
k4=f(x[i]+h,y[i]+k3*h);
y[i+1]=y[i]+(k1+2*k2+2*k3+k4)*h/6;
y1[i]=1-exp(-5*pow(x[i],2));
cout< return 0; } 左侧为数值解,右侧为解析解.