版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
18/18计算方法实验报告(四)(一)线性方程的迭代解法一、实验问题利用简单迭代法,两种加速技术,牛顿法,改进牛顿法,弦割法求解习题5-1,5-2,5-3中的一题,并尽可能准确。选取5-3:求x3二、问题的分析(描述算法的步骤等)(1)简单迭代法算法:给定初始近似值p0,求p=φStep1令i=0;Step2令pi+1=φpiStep3如果pi+1(2)Aitken加速法算法Step1令k=0,利用简单迭代算法xk+1=φxStep2令xk*=xk-xStep3如果xk+1(3)插值加速法算法Step1令k=0,利用简单迭代算法xk+1=φxStep2令xk*=xk+xk-xStep3如果xk+1(4)牛顿法算法Step1给定初始近似值x0Step2令xk+1=xStep3如果xk+1(5)改进牛顿法的算法Step1给定初始近似值x0Step2令xk+1=xStep3如果xk+1(6)弦割法算法(双点弦割法)Step1给定初始近似值x0Step2令xk+1=Step3如果xk+1三、程序设计(1)简单迭代法利用迭代公式x=3#include<iostream.h>#include<math.h>#include<stdio.h>doublefun(doublex){ doublec=1+x*x; returnpow(c,1/3.0);}voidmain(){ doublex=1.5; doubley=0; doubleD=1; doublee=0.001; while(D>e) { D=0; y=fun(x); if(fabs(y-x)>=D) {D=fabs(y-x); } x=y; } cout<<x<<endl;}(2))Aitken加速法源程序如下:x1=1.5;eps=0.0001;y1=(1+x1^2)^(1/3);z1=(1+y1^2)^(1/3);x=z1-(z1-y1)^2/(z1-2*y1+x1);whileeps<abs(x2-x)x=x2;x1=y1;y1=(1+x1^2)^(1/3);z1=(1+y1^2)^(1/3);x2=z1-(z1-y1)^2/(z1-2*y1+x1);n=n+1;endfprintf('迭代次数n=%.0f\n',n);fprintf('x2=%.5f\n',x2)(3)插值加速法源程序如下:x1=0;x2=1.5;eps=0.0000001;y1=0;z1=0;n=0;whileeps<abs(x2-x1)x1=x2;y1=(1+x1^2)^(1/3);z1=(1+y1^2)^(1/3);x2=z1+(z1-y1)^2/(z1-2*y1+x1);n=n+1;endfprintf('迭代次数n=%.0f\n',n);fprintf('x2=%.5f\n',x2)(4)牛顿法:利用公式xk+1=程序设计如下:#include<iostream.h>#include<math.h>doublefun(doublex){ doublea=2*pow(x,3.0)-pow(x,2.0)+1; doubleb=3*pow(x,2.0)-2*x; returna/b;}voidmain(){doublex=1.5; doubley=0; doubleD=1; doublee=0.001; doublef=0; while(D>e) { D=0; y=fun(x); if(fabs(y-x)>=D) {D=fabs(y-x); } x=y; f++; } cout<<x<<endl; cout<<"f="<<f<<endl;}(5)运用改进牛顿法:迭代公式:x程序代码如下:#include<iostream.h>#include<math.h>doublefun(doublex){ doublea=2*pow(x,3.0)-pow(x,2.0)+1; doubleb=3*pow(x,2.0)-2*x; doublec=pow((pow(x,3.0)-pow(x,2.0)-1),2.0); doubled=(6*x-2)/12; returna/b-c*d;}voidmain(){doublex=1.5; doubley=0; doubleD=1; doublee=0.001; doublef=0; while(D>e) { D=0; y=fun(x); if(fabs(y-x)>=D) {D=fabs(y-x); } x=y; f++; } cout<<x<<endl; cout<<"f="<<f<<endl;}(6)利用弦割法利用公式x程序代码:#include"stdafx.h"#include<iostream>usingnamespacestd;#include<math.h>doublefua(doublel){returnpow(l,3.0)-pow(l,2.0)-1;}int_tmain(intargc,_TCHAR*argv[]){ doublex=1.4; doubley=0; doubleD=1; doublee=0.001; doublef=0; while(D>e) { D=0; y=x-fua(x)*(x-1.5)/(fua(x)-0.125); if(fabs(y-x)>=D) {D=fabs(y-x); } x=y; f++; } cout<<x<<endl; cout<<"f="<<f<<endl; return0; }四、计算结果(1)简单迭代法的运行结果:x=1.46624(2)Aitken加速法运行结果如下:迭代次数n=15x2=1.46557(3)插值加速法运行结果如下:迭代次数n=15x2=1.46557(4)牛顿迭代法的运行结果如下(5)改进牛顿迭代法运行结果:(6)弦割法的运行结果五、结果分析通过实验很容易发现在相同的准确数字时,加速迭代法的迭代次数明显少于简单的迭代法。但仅仅就实验结果而言,牛顿迭代法和改进的牛顿迭代法与弦割法所得运行结果相同,但是改进的迭代法速度比牛顿迭代法要快速。六、实验的总结与体会迭代法是一种逐次逼近的方法,且都是局部收敛的,具有原理简单,编写程序方便等优点,但还存在是否收敛与收敛速度快慢的问题,不能盲目使用。当迭代过程只有线性收敛速度时,可采用埃特金加速法实现加速。牛顿法是一种特殊的迭代法,用于求方程单根时具有二阶收敛速度。但牛顿法对初值的要求苛刻,而且需要求函数的导数,遇到求导数复杂的情形,常用弦割法求解。弦割法是对牛顿法的变形,不需要求函数的导数,但收敛阶不高,而且需要提供两个较好的初值。(二)线性方程组的迭代解法一、实验问题利用雅可比迭代法,赛德尔迭代法求解如下方程组-二、问题的分析(描述算法的步骤等)雅克比迭代法算法如下:对令对令对i=1~n若D≥ε输出x赛德尔迭代法算法如下((3)对令(4)若D≥ε(5)输出x三、程序设计(1)运用雅可比迭代法进行迭代:代码如下:#include<iostream.h>#include<math.h>voidmain(){ doublex[3]={0,0,0}; doublea[3][3]={-8,1,1,1,-5,1,1,1,-4}; doubleb[3]={1,16,7}; doubley[3];doublee=0.04; doubleD=1; intf=0; while(D>e) { D=0; for(intc=0;c<5;c++) { for(inti=0;i<3;i++) { y[i]=b[i]; for(intj=0;j<3;j++) { if(j!=i) { y[i]=y[i]-a[i][j]*x[j]; } } y[i]=y[i]/a[i][i]; if(fabs(x[i]-y[i])>=D) { D=fabs(x[i]-y[i]); } }for(intl=0;l<3;l++) { x[l]=y[l]; } } f++; } for(intk=0;k<3;k++) { cout<<x[k]<<endl; } cout<<f<<endl;}(2)赛德尔迭代法源代码如下:程序代码:
#include<iostream.h>#include<math.h>#include<stdio.h>voidmain(){ doublex[3]={0,0,0}; doublea[3][3]={-8,1,1,1,-5,1,1,1,-4}; doubleb[3]={1,16,7}; doubley;doublee=0.0001; doubleD=1; doublef=0; while(D>e) { D=0; for(intc=0;c<5;c++) { for(inti=0;i<3;i++) { y=b[i]; for(intj=0;j<3;j++) { if(j!=i) { y=y-a[i][j]*x[j]; } } y=y/a[i][i]; if(fabs(x[i]-y)>=D) { D=fabs(x[i]-y); } }for(intl=0;l<3;l++) { x[l]=y[l]; } } f++; } for(intk=0;k<3;k++) { cout<<x[k]<<endl; }; cout<<f<<endl; }四、计算结果(1)雅克比迭代法运行结果如下:(2)赛德尔迭代法运行结果如下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026党务专员面试题目及答案
- 2026法律宣教生面试题及答案
- 2026改革岗位面试题及答案
- 2026工地监护面试题及答案
- 2026关于工资的面试题及答案
- 2026红旗车销售面试题及答案
- 2026年责任制培训试题及答案
- 公考面试试题及答案
- 哥舒歌试题及答案
- 隐私泄露法规条文解读
- 2025年融通资源开发中层管理干部社会招聘笔试历年参考题库附带答案详解
- 《传染病防治法(2026年修订)》培训试题(含答案)
- 2026年湖北省中小学教师高级职称专业水平能力测试模拟题(含参考答案)
- 理论联系实际如何理解新时代我国社会主要矛盾的变化
- 2026年山东高考物理卷试题真题及答案详解(精校打印)
- 2026年金华小升初科学测试题及答案
- 2026上海市闵行区七宝文来学校编外教师和实习教师招聘备考题库及1套参考答案详解
- 2026年中国工商银行(河南分行)人员招聘笔试备考题库及答案详解
- 2026年江苏省自考13702国际经济法考点重点
- 2026云南昆明观渡城市运营管理有限公司招聘3人笔试历年典型考点题库附带答案详解
- 物业维修材料供货合同
评论
0/150
提交评论