计算方法实验报告.docx

上传人:wux****ua 文档编号:9041986 上传时间:2020-04-02 格式:DOCX 页数:11 大小:62.33KB
返回 下载 相关 举报
计算方法实验报告.docx_第1页
第1页 / 共11页
计算方法实验报告.docx_第2页
第2页 / 共11页
计算方法实验报告.docx_第3页
第3页 / 共11页
点击查看更多>>
资源描述
计算方法实验报告(四)(一)线性方程的迭代解法一、实验问题利用简单迭代法,两种加速技术,牛顿法,改进牛顿法,弦割法求解习题5-1,5-2,5-3中的一题,并尽可能准确。选取5-3:求x3-x2-1=0在x=1.5附近的根。二、问题的分析(描述算法的步骤等)(1)简单迭代法算法:给定初始近似值p0,求p=p的解。Step 1 令i=0;Step 2 令pi+1=pi(计算pi+1);Step 3 如果pi+1=pi,则迭代终止,否则重复Step 2。(2)Aitken加速法算法Step 1 令k=0,利用简单迭代算法xk+1=xk得到迭代序列xk;Step 2 令xk*=xk-xk-xk-12xk-2xk-1+xk-2(计算xk*得到一个新的序列xk*,其中k=0,1,2);Step 3 如果xk+1*=xk*,则迭代终止,否则重复Step 2。(3)插值加速法算法Step 1 令k=0,利用简单迭代算法xk+1=xk得到迭代序列xk;Step 2 令xk*=xk+xk-xk-1xk-xk+1xk-1-2xk+xk+1(计算xk*得到一个新的序列xk*,其中k=1,2,3);Step 3 如果xk+1*=xk*,则迭代终止,否则重复Step 2。(4)牛顿法算法Step 1给定初始近似值x0;Step 2令xk+1=xk-fxkfxk,其中kN,计算得到xk的 序列;Step 3如果xk+1=xk,则迭代终止,否则重复Step 2。(5)改进牛顿法的算法Step 1给定初始近似值x0;Step 2令xk+1=xk-2fxkfxk+sgnfxkf2xk-2fxkfxk ,其中kN,迭代计算得到xk的 序列;Step 3如果xk+1=xk,则迭代终止,否则重复Step 2。(6)弦割法算法(双点弦割法)Step 1给定初始近似值x0,x1;Step 2令xk+1=xk-fxkxk-xk-1fxk-fxk-1其中kN,计算得到xk的 序列;Step 3如果xk+1=xk,则迭代终止,否则重复Step 2。三、程序设计(1)简单迭代法利用迭代公式x=31+x2进行迭代运算。#include #include #includedouble fun(double x)double c=1+x*x;return pow(c,1/3.0);void main()double x=1.5;double y=0;double D=1;double e=0.001;while(De)D=0; y=fun(x);if(fabs(y-x)=D) D=fabs(y-x);x=y;coutxendl;(2) )Aitken加速法源程序如下:x1=1.5;eps=0.0001;y1=(1+x12)(1/3);z1=(1+y12)(1/3);x=z1-(z1-y1)2/(z1-2*y1+x1);while epsabs(x2-x) x=x2; x1=y1; y1=(1+x12)(1/3); z1=(1+y12)(1/3); x2=z1-(z1-y1)2/(z1-2*y1+x1); n=n+1;endfprintf(迭代次数 n=%.0fn,n);fprintf(x2=%.5fn,x2)(3)插值加速法源程序如下:x1=0;x2=1.5;eps=0.0000001;y1=0;z1=0;n=0;while epsabs(x2-x1) x1=x2; y1=(1+x12)(1/3); z1=(1+y12)(1/3); x2=z1+(z1-y1)2/(z1-2*y1+x1); n=n+1;endfprintf(迭代次数 n=%.0fn,n);fprintf(x2=%.5fn,x2)(4)牛顿法:利用公式xk+1=xk-fxkfxk 进行迭代运算程序设计如下:#include #include double fun(double x)double a=2*pow(x,3.0)-pow(x,2.0)+1;double b=3*pow(x,2.0)-2*x;return a/b;void main() double x=1.5;double y=0;double D=1;double e=0.001;double f=0;while(De)D=0; y=fun(x);if(fabs(y-x)=D) D=fabs(y-x);x=y;f+;coutxendl;coutf=fendl;(5)运用改进牛顿法:迭代公式:xk+1=xk-fxkfxk -f(xk)2f3(xk)f2(xk)程序代码如下:#include #include double fun(double x)double a=2*pow(x,3.0)-pow(x,2.0)+1;double b=3*pow(x,2.0)-2*x;double c=pow(pow(x,3.0)-pow(x,2.0)-1),2.0);double d=(6*x-2)/12;return a/b-c*d;void main() double x=1.5;double y=0;double D=1;double e=0.001;double f=0;while(De)D=0; y=fun(x);if(fabs(y-x)=D) D=fabs(y-x);x=y;f+;coutxendl;coutf=fendl;(6)利用弦割法利用公式xk+1=xk-f(xk)(xk-x0)fxk-f(x0)程序代码:#include stdafx.h#include using namespace std;#include double fua(double l)return pow(l,3.0)-pow(l,2.0)-1;int _tmain(int argc, _TCHAR* argv)double x=1.4;double y=0;double D=1;double e=0.001;double f=0;while(De)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+;coutxendl;coutf=fD则令D|xi-xj|(4) 对i=1n令xiyi(5) 若D则转到(2)(6) 输出xii=1n并停止计算赛德尔迭代法算法如下 (1)对i=1n 令xi0(2)令D0(3)对i=1n做令yi=bi对j=1n但ji令yiyi-aijxj令yiyi/aij若xi-xjD则令Dxi-xj令xiy(4)若D则转到(2)(5)输出xii=1n并停止计算三、程序设计(1)运用雅可比迭代法进行迭代:代码如下:#include #include void main()double x3=0,0,0;double a33=-8,1,1,1,-5,1,1,1,-4;double b3=1,16,7;double y3; double e=0.04;double D=1;int f=0;while(De)D=0;for(int c=0;c5;c+) for(int i=0;i3;i+) yi=bi;for(int j=0;j=D)D=fabs(xi-yi); for(int l=0;l3;l+) xl=yl; f+;for(int k=0;k3;k+)coutxkendl;coutfendl;(2)赛德尔迭代法源代码如下:程序代码:#include #include #includevoid main()double x3=0,0,0;double a33=-8,1,1,1,-5,1,1,1,-4;double b3=1,16,7;double y; double e=0.0001;double D=1;double f=0;while(De)D=0;for(int c=0;c5;c+) for(int i=0;i3;i+) y=bi;for(int j=0;j=D)D=fabs(xi-y); for(int l=0;l3;l+) xl=yl; f+;for(int k=0;k3;k+)coutxkendl;coutfendl;四、计算结果(1)雅克比迭代法运行结果如下:(2)赛德尔迭代法运行结果如下:五、结果分析通过观察运行结果很容易发现使用赛德尔迭代法求解此线性方程组具有明显的优势,它的迭代次数明显少于雅克比迭代法,因此收敛速度更快。六、实验的总结与体会在求解线性方程组的时候除了直接法外,还可以选用迭代法。由于直接法受到计算机内存容量的限制,所以较多的选用迭代法。迭代法是一种逐次逼近的方法,具有原理简单、程序编写方便、占用内存少等优点,但存在是否收敛与收敛速度快慢的问题,不能盲目使用。我们在处理具体的问题时,要根据实际情况选择合适的迭代方法。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!