显示欧拉方法和梯形方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数值分析》实验报告
姓名
学号
日期
2012.11.20
实验室
设备编号
实验题目
用显示欧拉方法和梯形方法求y/=-y+x+1
一实验目的
1.掌握显示欧拉格式和梯形格式。
2.用显示欧拉方法和梯形方法求y/=-y+x+1,y(0)=1,0≤x≤0.5
二实验内容
算法:设在点xn列出方程y’(xn)=f(xn,y(xn))并用商差y(xn+1)- y(xn)/h替代其中的导数项y’(xn),则有y(xn+1)≈yn+hf(xn,y(xn))若用y(xn)的近似值yn代入上式右端,并记所得结果为yn+1得欧拉公式:yn+1=yn+ hf(xn,yn),n=0,1,2,…
设方程y’=f(x,y)的两端从xn到xn+1求积分,即得梯形求积公式y(xn+1)=y(xn)+∫f(x,y(x))dx,梯形格式为yn+1= yn+h/2[f(xn,yn)+ f(xn+1,yn+1)]。
源程序:
1)显示欧拉方法
#include<iostream>
#include<math.h>
}
}
void main()
{
euler perdictor_corrector;
perdictor_corrector.yn();
}
2)梯形方法
#include<iostream>
#include<mFra Baidu bibliotekth.h>
#include<iomanip>
using namespace std;
class tixing
#include<iomanip>
using namespace std;
class euler
{
private:
int i,n;//i步计数器,n等分数
float f,h,x,y,yb;//f表示F(x,y),h步长,x自变量
public:
void yn();//显式的欧拉格式
};
void euler::yn()
{
private:
int i,n;//i步计数器,n等分数
float f,h,x,y,yb;//f表示F(x,y),h步长,x自变量
public:
void yn();//梯形公式
};
void tixing::yn()
{
h=0.1;
cout<<"输入初始条件:"<<endl;
cout<<"输入x0:";
{
h=0.1;
cout<<"输入初始条件:"<<endl;
cout<<"输入x0:";
cin>>x;
cout<<"输入y0:";
cin>>y;
cout<<"输入等分数"<<" ";
cin>>n;
for(i=0;i<n;i++)
{
yb=0.9*y+0.1*x+0.1;
x+=h;
y=yb;
cout<<x<<setw(15)<<yb<<endl;
t.yn();
}
运行结果:
1)显示欧拉格式
2)梯形格式
三本次实验总结
通过本次实验对欧拉格式和梯形格式有了更多的理解,欧拉方法是一种显示算法,其计算量小,但精度很低,梯形方法虽提高了精度,但它是一种隐式算法,需要借助于迭代过程求解,计算量大,但两种方法却可以相辅相成。
四教师评语
cin>>x;
cout<<"输入y0:";
cin>>y;
cout<<"输入等分数"<<" ";
cin>>n;
for(i=0;i<n;i++)
{
yb=(1.9*y+0.2*x+0.21)/2.1;
x+=h;
y=yb;
cout<<x<<setw(15)<<yb<<endl;
}
}
void main()
{
tixing t;
姓名
学号
日期
2012.11.20
实验室
设备编号
实验题目
用显示欧拉方法和梯形方法求y/=-y+x+1
一实验目的
1.掌握显示欧拉格式和梯形格式。
2.用显示欧拉方法和梯形方法求y/=-y+x+1,y(0)=1,0≤x≤0.5
二实验内容
算法:设在点xn列出方程y’(xn)=f(xn,y(xn))并用商差y(xn+1)- y(xn)/h替代其中的导数项y’(xn),则有y(xn+1)≈yn+hf(xn,y(xn))若用y(xn)的近似值yn代入上式右端,并记所得结果为yn+1得欧拉公式:yn+1=yn+ hf(xn,yn),n=0,1,2,…
设方程y’=f(x,y)的两端从xn到xn+1求积分,即得梯形求积公式y(xn+1)=y(xn)+∫f(x,y(x))dx,梯形格式为yn+1= yn+h/2[f(xn,yn)+ f(xn+1,yn+1)]。
源程序:
1)显示欧拉方法
#include<iostream>
#include<math.h>
}
}
void main()
{
euler perdictor_corrector;
perdictor_corrector.yn();
}
2)梯形方法
#include<iostream>
#include<mFra Baidu bibliotekth.h>
#include<iomanip>
using namespace std;
class tixing
#include<iomanip>
using namespace std;
class euler
{
private:
int i,n;//i步计数器,n等分数
float f,h,x,y,yb;//f表示F(x,y),h步长,x自变量
public:
void yn();//显式的欧拉格式
};
void euler::yn()
{
private:
int i,n;//i步计数器,n等分数
float f,h,x,y,yb;//f表示F(x,y),h步长,x自变量
public:
void yn();//梯形公式
};
void tixing::yn()
{
h=0.1;
cout<<"输入初始条件:"<<endl;
cout<<"输入x0:";
{
h=0.1;
cout<<"输入初始条件:"<<endl;
cout<<"输入x0:";
cin>>x;
cout<<"输入y0:";
cin>>y;
cout<<"输入等分数"<<" ";
cin>>n;
for(i=0;i<n;i++)
{
yb=0.9*y+0.1*x+0.1;
x+=h;
y=yb;
cout<<x<<setw(15)<<yb<<endl;
t.yn();
}
运行结果:
1)显示欧拉格式
2)梯形格式
三本次实验总结
通过本次实验对欧拉格式和梯形格式有了更多的理解,欧拉方法是一种显示算法,其计算量小,但精度很低,梯形方法虽提高了精度,但它是一种隐式算法,需要借助于迭代过程求解,计算量大,但两种方法却可以相辅相成。
四教师评语
cin>>x;
cout<<"输入y0:";
cin>>y;
cout<<"输入等分数"<<" ";
cin>>n;
for(i=0;i<n;i++)
{
yb=(1.9*y+0.2*x+0.21)/2.1;
x+=h;
y=yb;
cout<<x<<setw(15)<<yb<<endl;
}
}
void main()
{
tixing t;