ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:330.53KB ,
资源ID:4496305      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4496305.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数值计算二分法简单迭代法Newton迭代法弦截法割线法双点弦法.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数值计算二分法简单迭代法Newton迭代法弦截法割线法双点弦法.docx

1、数值计算二分法简单迭代法Newton迭代法弦截法割线法双点弦法本科生实验报告实验课程 数值计算方法 学 院名称 信息科 学与技术学院 专业名称 计算机科学与技术 学生姓名 学生学号 指导教师 实验地点 实验成绩 二0 一六年五月 二一六年五月实验一非线性方程求根1.1问题描述实验目的:掌握非线性方程求根的基本步骤及方法,。实验内容:试分别用二分法、简单迭代法、Newt on迭代法、弦截法(割线法、 双点弦法),求x5-3x3+x-1= 0在区间-8,8上的全部实根,误差限为10-6。要求:讨论求解的全过程,对所用算法的局部收敛性,优缺点等作分析及比 较,第2章算法思想思想:在函数的单调有根区间

2、内,将有根区间不断的二分,寻找方程的解。步骤:1.取中点 mid=(x0+x1)/22若f(mid)=0,则mid为方程的根,否则比较与两端的符号,若与f(x0) 异号,则根在x0,mid之间,否则在mid,x1之间。3并重复上述步骤,直达达到精度要求,则 mid为方程的近似解。结束2.2简单迭代法思想:迭代法是一种逐次逼近的方法,它是固定公式反复校正跟的近似值, 使之逐步精确,最后得到精度要求的结果。步骤:1.构造迭代公式f(x),迭代公式必须是收敛的。2计算 x1,x 1=f(x0).3判断|x1-x0|是否满足精度要求,如不满足则重复上述步骤。4输出x1,即为方程的近似解。开始yes输出

3、x1结束2.3 Newton迭代法思想:设r是n的根,选取作为r的初始近似值,过点肛成做曲线S的切线L,L的方程为L 也八1丘一 Z;,求出L与x轴交点的-迪值。重复以上过程,得r的近似值序列,其中, 称为r的.次近似值步骤:1.计算原函数的导数f (x);构造牛顿迭代公式3.若|x1-x0|满足精度要求,xi即为方程的近似解。开始X1= xO-f(xO)/f(x1)yes输出x1 /二L结束2.4弦截法思想:为加速收敛,改用两个端点都在变动的弦,用差商替代牛顿迭代公式 的导数f (x)步骤:1.构造双点弦法的公式2计算 x2=x1-f(x1)(x1-x0)/f(x1)-f(x0);3判断f(

4、x2)是否满足精度要求,若没有则按照上述步骤继续迭代, 否则输出x2.x2即为方程的近似解。测试结果第3章测试结果及分析函数图像函数 Y=x5-3x3+x-1分法俵 1-1, 1-2, 1-3)-16-1.3kxkkxkkxk0-1.455-1.5015610-1.504931-1.5256-1.5039111-1.5052-1.48757-1.5050812-1.505043-1.506258-1.5044913-1.505064-1.496889-1.5047914-1.50507表1-1区间-12-0.9kxkkxkkxk0-1.055-0.99843710-1.000051-0.975

5、6-1.0007811-0.9999762-1.01257-0.99960912-1.000013-0.993758-1.000213-0.9999944-1.003129-0.99990214-1表1-2区间1.5,1.8kxkkxkkxk01.6571.69102141.6902911.72581.69043151.6902921.687591.69014161.6902931.70625101.69028171.6902841.69687111.69036181.6902851.69219121.6903261.68984131.6903表1-3简单迭代法(表2-1.2-2.2-3)初值

6、-1.5kxkkxkkxk1-1.57-1.5043513-1.504932-1.502178-1.5045314-1.504973-1.502879-1.50466151.504994-1.5034110-1.5047616-1.505015-1.5038111-1.5048317-1.505046-1.5041212-1.5048918-1.50505表2-1初值-1kx1-12-1初值1.6 结果 x=1.69028kxkkxkkxk11.681.68862151.6902321.6566991.68927161.6902531.66987101.68967171.6902741.677

7、9111.68991181.6902751.68278121.69006191.6902861.68573131.69015201.6902871.68753141.6902表2-3牛顿迭代法(表3-1.3-2, 3-3)初值-1.5 结果 x=-1.50507kxkkxk1-1.54-1.505042-1.504715-1.505063-1.504976-1.50507表3-1初值-1 结果 x=-1.50507kx1-12-1表3-2初值1.6 结果 x=1.69028kxkkxk11.651.6902421.6860261.6902731.6889371.6902841.6898581.

8、69028表3-3双点弦法(表4-1.4-2, 4-3)区间卜1.6,-1.3 结果 x=-1.50507kxkf(xk)kxkf(xk)1-1.50.031255-1.506670.07845662-1.661490.3765026-1.505-0.0100793-1.47175-1.563227-1.505070.0004409884-1.4920.1868018-1.505072.30387e-006表4-1区间-12-0.9 结果 x= -1kxkf(xk)1-1.013930.04156782-1.00020.0006077773-0.999999-3.11969e-0064-12.

9、11001e-010表4-2区间1.5,1.8 结果 X=1.69028kxkf(xk)11.64403-0.67645521.68071-0.15110631.691260.015798841.69027-0.00031351551.69028-6.3006e-007表4-3从测试结果可以看出二分法和简单迭代法的收敛速度远大于牛顿迭代和弦截法的收敛速度。二分法和简单迭代法的公式易于构造和计算,牛顿迭代法虽然收敛高,但要求导数,计算的复杂度高!双点弦法随稍慢于牛顿跌代法,可以用差商代替牛顿迭代法中的导数,降低了计算的复杂度!附录:源程序清单#in clude#in cludeusing nam

10、espace std;double foot =0.3;int a=-8 ,b=8;double * rn=new double5;double * r = new double 5; int m =0;int x_co unt;double precisi on = 0.000001;定义寻根步长解的区间/方程近似解/根的个数/精度要求/函数的表达式(xA5-3xA3+x-1) double f (double x)return (pow(x,5)-3* pow(x,3)+ x-1); void in it ()r0 =-1.5;/根据函数图像确定根的区间和迭代初值r1 =-1;r2 = 1

11、.6;rn 0=-1.6;rn 1=-1.2;rn 2= 1.5;/寻找根的区间void search() 若没有给出区间和初值,进行逐步搜索有根区间for(int i=0; i* foot-8 precisi on)mid = (a+ b)/ 2;if(f* f (mid )= 0) b= mid ; /判断与端点函数值得符号else a=mid;cout mid en dl;rx_count += mid ;return mid; /返回最终结果/=简单迭代法=/构造迭代公式 double fitera (double x)double result=0;double xx=3* pow

12、(x ,3)-x+1;if( xx = 0)XX=-xx;return pow (xx ,1.0 /5.0)*(- 1);elsereturn pow (xx ,1.0 /5.0);/简单迭代double itera (double x0)cout x0 precisi on)x0=x1;x1= fitera (x0); /没有到达精度要求继续迭代cout precisi on)x0=x1;if (newtonitera (x0)=-1) break; x1 = n ewt on itera (x0);cout x1vv endl;return x1;/若导数为0则停止迭代/继续迭代/返回最终

13、结果/=双点弦法迭代=/构造弦截法的迭代公式double twopointchord_f (double x0,double x1) return x1-(f(x1)/(f(x1)-f(x0 )*( x1 -x0);/测试void main ()ini t (); /初始化区间和迭代初值/*测试代码 输出每次的迭代结果和最终结果cout 二分法 e ndl;for(int i =0;i3;i+)double result=0;cout有根区间为rni rni+footendl;result=Dichotomy(rni,rni+foot); / 将区间端点带入公式cout求得近似解为result

14、endl;cout 迭代法 e ndl;for(i =0;i3;i+)double result=0;cout有根区间为rni rni+footendl;double x0 =ri; 取得初值result=itera(xO); / 带入公式cout求得近似解为resultendl;cout 牛顿迭代 endl;for(i =0;i3;i+)double result=0;cout有根区间为rni rni+footendl;double x0 =ri; / 取得初值result=n ewt on( x0); / 带入公式cout求得近似解为resultendl;cout 弦截法 e ndl;fo

15、r(i =0;i3;i+)double result=0;cout有根区间为rni rni+footendl;result=twopoi ntchord(rni,rni+foot); /将区间端点带入公式cout求得近似解为resultendl;/*在这次实验中,通过编程将二分法、简单迭代法、 Newton迭代法、弦截法(割线法、双点弦法)以代码的方式实现,这不仅是一次实践过 程,更是对这些求解方程的方法的深入理解,体会们各自的算法思想。 也提高的我对数值计算中的经典方法其中蕴藏的算法思想的兴趣, 这些思想方法对以后的问题的解决以及编程思想都是很有帮助的。学生实验心得虽然在实验过程中遇到了一些问题,但是通过查询资料以及不断的 调试程序都得以解决。这也让我认识到只要深入理解,坚持不懈,就 一定能够成功的。我会将这次的实验的宝贵经验实践到以后的学习 中,希望能在不断的锻炼中提升自己!学生(签名):年 月 日指导教师评语成绩评定:指导教师(签名):年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1