介绍
关于初值问题的解
实例
代码
#include<iostream>
using namespace std;
double h;
double x[100],y[100];
double f(double x0, double y0)
{
return -2*x0/y0 + y0;
}
void Eluer()
{
for(int i=1;i<10;i++)
{
y[i] = y[i-1] + h*f(x[i-1],y[i-1]);
cout<<x[i]<<" "<<y[i]<<endl;
}
}
int main()
{
cout<<"输入迭代的步长:"<<endl;
cin>>h;
cout<<"输入初始值x,y"<<endl;
cin>>x[0]>>y[0];
for(int i=1;i<10;i++) x[i] = x[0] + i*h;
// for(int i=1;i<10;i++) cout<<x[i]<<" ";cout<<endl;
Eluer();
return 0;
}
结果(解与实例中对应 ):
Euler 改进算法
实例
代码
#include<iostream>
using namespace std;
double h;
double x[100],y[100],c[100];
double f(double x0, double y0)
{
return -2*x0/y0 + y0;
}
void Eluer()
{
for(int i=1;i<10;i++)
{
c[i] = y[i-1] + h*f(x[i-1],y[i-1]);
y[i] = y[i-1] + h/2*(f(x[i-1],y[i-1])+f(x[i],c[i]));
cout<<x[i]<<" "<<y[i]<<endl;
}
}
int main()
{
cout<<"输入迭代的步长:"<<endl;
cin>>h;
cout<<"输入初始值x,y"<<endl;
cin>>x[0]>>y[0];
for(int i=1;i<10;i++) x[i] = x[0] + i*h;
// for(int i=1;i<10;i++) cout<<x[i]<<" ";cout<<endl;
Eluer();
return 0;
}
结果(解与实例中对应 ):