计算方法实验报告(共23页).doc
《计算方法实验报告(共23页).doc》由会员分享,可在线阅读,更多相关《计算方法实验报告(共23页).doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上计算方法实验报告班级:信息安全09-1班学号:姓名:王义涛合肥工业大学计算机与信息学院2011/5/28目录实验一 牛顿下山法求解非线性方程的根一、实验目的(1)熟悉非线性方程求根简单迭代法,牛顿迭代及牛顿下山法(2)能编程实现简单迭代法,牛顿迭代及牛顿下山法(3)认识选择迭代格式的重要性(4)对迭代速度建立感性的认识;分析实验结果体会初值对迭代的影响二、实验内容用牛顿下山法解方程 (初值为0.6)输入:初值,误差限,迭代最大次数,下山最大次数输出:近似根各步下山因子三、基本原理牛顿下山公式:下山因子下山条件四、算法设计与实现流程图图3.2牛顿下山算法流程图关键点:w
2、hile(fabs(f(x1)fabs(f(x0)cout=r n)cout迭代失败=eps)if(df(x0)=0)cout*无法迭代*m)cout迭代失败endl;break;/迭代过程五、输入与输出x0=0.6;e=0.;m=100;n=100输出六、源代码#include#includeusing namespace std;double f(double x)return (x*x-1)*x-1;double df(double x)return 3*x*x-1;double newton(double x0,double eps,int n,int m)if(df(x0)=0)co
3、ut*无法迭代*fabs(f(x0)cout=r n)cout迭代失败=eps)if(df(x0)=0)cout*无法迭代*m)cout迭代失败endl;break;/迭代过程return x1;void main()double x0,x1,e;x0=0.6;e=0.;x1=newton(x0,e,100,100);coutx=x1endl;实验二 高斯赛德尔法求线性方程组一、实验目的(1)熟悉求解线性方程组的有关理论和方法;(2)能编程实现雅可比及高斯-塞德尔迭代法;(4)根据不同类型的方程组,选择合适的数值方法。二、实验内容用Gauss - Seidel 迭代法求解方程组 输入:系数矩阵
4、A,最大迭代次数N,初始向量,误差限e输出:解向量三、算法基本原理线性方程组大致分迭代法和直接法。只有收敛条件满足时,才可以进行迭代。高斯-塞德尔是最基本的一类迭代方法,其迭代过程中引用新值进行剩下的计算。高斯-塞德尔迭代: 四、算法设计与实现流程图关键算法:图4.1G-S迭代算法流程图关键算法:Xi解的向量,a方程组的增广矩阵for(k=1;k=max_k;k+)cout第k次迭代;e2=0;for(i=0;in;i+)old_x=xi;sum=0;for(j=0;jm;j+)if(i!=j)sum=sum+aij*xj;xi=(bi-sum)/aii;if(e2fabs(old_x-xi)
5、e2=fabs(old_x-xi);coutxi ;coutendl;if(e2e1)break;五、计算用例的参考输出 六、源代码G_S.h#include#includeusing namespace std;#define MAXSIZE 50void input(double aMAXSIZEMAXSIZE,double b,int n,int m)int i,j;cout请输入原方程的增广矩阵endl;for(i=0;in;i+)for(j=0;jaij;cinbi;coutendl;void output(double x,int n)cout原方程组的解的向量为:endl;for
6、(int i=0;in;i+)coutxi ;Gauss_seder.cpp#includeG_S.hint main()double aMAXSIZEMAXSIZE,bMAXSIZE,xMAXSIZE;double e1,e2,sum,old_x;int n,m,i,j,k,max_k;cout输入原方程的行数nn;cout输入原方程的列数mm;input(a,b,n,m);cout输入迭代初始向量endl;for(i=0;ixi;cout输入做大迭代次数max_k;cout输入误差上限e1;for(k=1;k=max_k;k+)cout第k次迭代;e2=0;for(i=0;in;i+)ol
7、d_x=xi;sum=0;for(j=0;jm;j+)if(i!=j)sum=sum+aij*xj;xi=(bi-sum)/aii;if(e2fabs(old_x-xi)e2=fabs(old_x-xi);coutxi ;coutendl;if(e2e1)break;if(k=max_k)output(x,n);else cout超过最大迭代次数,迭代失败!endl;实验三 高斯消去法一、实验目的(1)熟悉求解线性方程组的有关理论和方法;(2)能编程实现列主元高斯消去法;(4)根据不同类型的方程组,选择合适的数值方法。二、实验内容用选主元高斯消去求方程组三、算法基本原理A. ;B.消元结果直接
8、存储在系数矩阵中;C.当消元过程发生两行对调的情况为偶数次时,行列式值为对角线乘积,否则为对角线乘积的相反数。四、算法设计与实现列主元高斯消去法:列主元消元 回代图4.2列主元的约当消去约当消去 关键点:/选主元素for(k=0;kn-1;k+)max=akk;max_i=k;for(i=k+1;ifabs(max)max=aik;max_i=i;if(max=0)break;if(max_i!=k)/交换两行for(j=k;jn+1;j+)t=akj;akj=amax_ij;amax_ij=t;for(i=k+1;in;i+)aik=aik/-akk;for(j=k+1;j=0;k-)sum
9、=0;for(j=k+1;jn;j+)sum=sum+akj*xj;xk=(akn-sum)/akk;/回代五、计算用例的参考输出六、源代码Gauss.h#include#includeusing namespace std;#define MAX 50void input(double aMAXMAX+1,int n)cout输入原方程组的增广矩阵endl;for(int i=0;in;i+)for(int j=0;jaij;void output(double x,int n)coutGauss消去法得到的原方程组的解为endl;for(int k=0;kn;k+)coutxk ;Gaus
10、sXiaoqu.cpp#includeGauss.hint main()double aMAXMAX+1,xMAX,sum,max,t;int n,i,j,k,max_i;cout输入原方程组的阶n;input(a,n);for(k=0;kn-1;k+)/选主元素max=akk;max_i=k;for(i=k+1;ifabs(max)max=aik;max_i=i;if(max=0)break;if(max_i!=k)/交换两行for(j=k;jn+1;j+)t=akj;akj=amax_ij;amax_ij=t;for(i=k+1;in;i+)aik=aik/-akk;for(j=k+1;j
11、n+1;j+)aij=aij+aik*akj;/消元if(max=0)cout原方程组无解=0;k-)sum=0;for(j=k+1;jn;j+)sum=sum+akj*xj;xk=(akn-sum)/akk;/回代output(x,n);coutendl;return 0;实验四 Romberg算法一、 实验目的(1) 熟悉梯形递推算法、龙贝格算法;(2) 能编程实现梯形递推算法、龙贝格算法;(3) 分析实验结果体会各种方法的精确度,建立计算机求解定积分问题的感性认识二、 实验内容用龙贝格算法计算输入:积分区间,误差限输出:序列Tn,Sn,Cn,Rn及积分结果(参考书本P71的表2-5)三、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算方法 实验 报告 23
限制150内