1 / 32
文档名称:

东北大学数值分析实验报告.doc

格式:doc   页数:32页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

东北大学数值分析实验报告.doc

上传人:cdsqbyl 2015/5/25 文件大小:0 KB

下载得到文件列表

东北大学数值分析实验报告.doc

文档介绍

文档介绍:数值分析实验报告
课题一迭代格式的比较
问题提出
设方程f(x)=x- 3x –1=0 有三个实根 x= , x=- ,x=-,求 f(x)=0的根 x 或x
x =
x =
x =
二、要求
1、编制一个程序进行运算,最后打印出每种迭代格式的敛散情况;
2、用事后误差估计来控制迭代次数,并且打印出迭代的次数;
3、初始值的选取对迭代收敛有何影响;
4、分析迭代收敛和发散的原因。
三、目的和意义
1、通过实验进一步了解方程求根的算法;
2、认识选择计算格式的重要性;
3、掌握迭代算法和精度控制;
4、明确迭代收敛性与初值选取的关系。
程序代码:
#include<iostream>
#include<cmath>
#include<cstdlib>
using namespace std;
double f(double i) //外调函数f(x),每次更新新的函数
{//以第一种迭代方式为例子
double k,m,sum;
k=3*i+1;
m=pow(i,);
sum=k/m;
return sum;
}
int main()
{
double x,x0;
int N;//最大迭代次数
int k;
cout<<"输入初解:";
cin>>x0;
cout<<"输入最大迭代次数:";
cin>>N;
for(k=1;k<=N;k++)
{
x=f(x0);
if(fabs(x-x0)<)
{
cout<<"迭代次数:"<<k<<endl;
cout<<"输出得到的解:"<<x<<endl;
system("pause");
return 0;
}
else x0=x;
}
cout<<"已达到最大迭代次数:"<<N<<endl;
cout<<"输出得到的解:"<<x<<endl;
system("pause");
return 0;
}
实验结果:
四、程序运行结果讨论和分析:
对于第一种迭代格式,收敛区间[- -],在该收敛区间内迭代收敛于-,只能求得方程的一个根;
对于第二种迭代格式,收敛区间[- ],在该收敛区间内迭代收敛于-,同样只能求得方程的一个根;
对于第三种迭代格式,收敛区间[- +∞),,只能求得方程的一个根;
由以上结果很容易发现,初值的选取对迭代敛散性有很大影响。以第一种迭代格式为例,当初值大于等于-,迭代格式发散;当初值小于等于-,迭代格式也发散;只有初值在--,迭代格式才收敛于—。其他迭代格式也有这样的性质,即收敛于某个数值区间,超出这个区间迭代格式就是发散的,这就是所谓迭代格式的收敛性。
对于不同迭代格式在不同区间具有不同的敛散性的原因,我认为可以从一下两方面理解:1、迭代法是一种逐次逼近法,其基本思想是将隐式方程归结为一组显式的计算公式,就是说,迭代过程实质上是个逐步显式化的过程。2、我们可以用几何图像来更好地理解迭代过程。由图可知,在某些区间选取的初始值随着迭代次数的增加会越来越逼近精确值,即收敛于精确值,而在另外一些区间选取的初始值随着迭代次数的增加却离精确值越来越远,即不会收敛于一个确定值。
课题二线性方程组的直接算法
一、问题提出
给出下列几个不同类型的线性方程组,请用适当算法计算其解。
1、设线性方程组
=
x= ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 )
2、设对称正定阵系数阵线方程组
=
x = ( 1, -1, 0, 2, 1, -1, 0, 2 )
3、三对角形线性方程组
=
x= ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 )
二、要求
对上述三个方程组分别利用Gauss顺序消去法与Gauss列主元消去法;平方根法与改进平方根法;追赶法求解(选择其一);
应用结构程序设计编出通用程序;
比较计算结果,分析数值解误差的原因;
尽可能利用相应模块输出系数矩阵的三角分解式。
三、目的和意义
1、通过该课题的实验,体会模块化结构程序设计方法的优点;
2、运用所学的计算方法,解决各类线性方程组的直接算法;
3、提高分析和解决问题的能力,做到学以致用;
4、通过三对角形线性方程组的解法,体会稀疏线性方程组解法的特点。
程序代码: