版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本科生实验报告实 验 课 程数 值 计 算 方 法学 院 名 称信 息 科 学 与 技术 学 院专 业 名 称计 算 机 科 学 与技 术学生姓名学生学号指导教师实验地点实验成绩二 一六 年 五 月 二一六 年 五 月实验一 非线性方程求根1.1 问题描述实验目的 :掌握非线性方程求根的基本步骤及方法, 。 实验内容:试分别用二分法、 简单迭代法、 Newton 迭代法、弦截法(割线法、 双点弦法 ),求 x5-3x3+x-1= 0 在区间 -8,8 上的全部实根,误差限为 10-6。要求:讨论求解 的全过程,对所用算法的局部收敛性,优缺点等作分析及比 较,第 2 章 算法思想2.1二分法思想
2、:在函数的单调有根区间内,将有根区间不断的二分,寻找方程的解。 步骤: 1.取中点 mid=(x0+x1)/22.若f(mid)=0,则 mid为方程的根,否则比较与两端的符号,若与 f(x0)异号,则根在 x0,mid 之间,否则在 mid,x1 之间。3 并重复上述步骤,直达达到精度要求,则 mid 为方程的近似解。结束简单迭代法思想:迭代法是一种逐次逼近的方法,它是固定公式反复校正跟的近似值, 使之逐步精确,最后得到精度要求的结果。步骤: 1.构造迭代公式 f(x) ,迭代公式必须是收敛的。2.计算 x1,x1=f(x0).3.判断 |x1-x0|是否满足精度要求,如不满足则重复上述步骤
3、。4输出 x1,即为方程的近似解。开始f为迭代函数结束Newton 迭代法思想: 设 r 是的根, 选取 作为 r 的初始近似值, 过点 做曲线的切线 L,L 的方程为,求出 L与 x 轴交点的横坐标,称 x1为 r 的一次近似值。 过点做曲线的切线,并求该切线与 x轴交点的横坐标 ,称 为 r 的二次近似值。重复以上过程, 得 r 的近似值序列,其中,称为 r 的 次近似值2.计算步骤: 1.计算原函数的导数 f (x); 构造牛顿迭代公式, 若 f (x0)=0, 退出计算, 否则继续向下迭代。3.若|x1-x0| 满足精度要求, x1 即为方程的近似解。开始输入x0,eyesf (x0)
4、=0输出x1结束4弦截法思想 :为加速收敛,改用两个端点都在变动的弦,用差商替代牛顿迭代公式 的导数 f (x。)步骤: 1.构造双点弦法的公式2.计算 x2=x1-f(x1)(x1-x0)/f(x1)-f(x0);3.判断 f(x2) 是否满足精度要求,若没有则按照上述步骤继续迭代, 否则输出 x2.x2 即为方程的近似解。5第 3 章 测试结果及分析测试结果函数图像函数 Y=x5-3x3+x-1分法 (表 1-1, 1-2,1-3)-1.6,-1.3kxkkxkkxk0-1.455-1.5015610-1.504931-1.5256-1.5039111-1.5052-1.48757-1.5
5、050812-1.505043-1.506258-1.5044913-1.505064-1.496889-1.5047914-1.50507表 1-1区间-1.2,-0.9kxkkxkkxk0-1.055-0.99843710-1.000051-0.9756-1.0007811-0.9999762-1.01257-0.99960912-1.0000163-0.993758-1.000213-0.9999944-1.003129-0.99990214-1表 1-2区间1.5,1.8kxkkxkkxk01.6571.69102141.6902911.72581.69043151.6902921.6
6、87591.69014161.6902931.70625101.69028171.6902841.69687111.69036181.6902851.69219121.6903261.68984131.6903表 1-3简单迭代法(表 2-1.2-2.2-3)初值-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.5048
7、918-1.50505表 2-1初值-1kx1-12-1表 2-27初值 1.6 结果 x=1.69028kxkkxkkxk11.681.68862151.6902321.6566991.68927161.6902531.66987101.68967171.6902741.6779111.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.504
8、715-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.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
9、.505070.0004409884-1.4920.1868018-1.505072.30387e-006表 4-1区间 -1.2,-0.9结果 x= -1kxkf(xk)1-1.013930.04156782-1.00020.0006077773-0.999999-3.11969e-0064-12.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从测试结果可以看
10、出二分法和简单迭代法的收敛速度远大于牛顿迭代和弦 截法的收敛速度。 二分法和简单迭代法的公式易于构造和计算, 牛顿迭代法虽然 收敛高,但要求导数,计算的复杂度高!双点弦法随稍慢于牛顿跌代法,可以用 差商代替牛顿迭代法中的导数,降低了计算的复杂度!附录:源程序清单#include #include using namespace std; double foot =0.3; int a=-8,b=8;double *rn=newdouble5; double *r = newdouble5; int m=0;int x_count ;double precision =0.000001;/定义寻
11、根步长/解的区间/ 方程近似解/根的个数/精度要求/ 函数的表达式( x5-3x3+x-1 ) double f (double x)return (pow(x,5)-3*pow(x,3)+x-1); void init () r0=-1.5;/根据函数图像确定根的区间和迭代初值r1=-1;r2= 1.6;rn0=- 1.6;rn1=- 1.2;rn2= 1.5;/寻找根的区间void search()/若没有给出区间和初值,进行逐步搜索有根区间for(int i=0;i*foot-88;i+)if(f(i*foot-8)*f(i+1)*foot-8)precision)mid = (a+b)
12、/2;if(f (a)* f (mid )= 0) b=mid ;/判断与端点函数值得符号else a=mid;cout mid endl;rx_count += mid ;return mid;/ 返回最终结果/= 简单迭代法 = /构造迭代公式 double fitera ( double x)double result=0;double xx=3*pow(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
13、 precision) x0=x1;x1= fitera ( x0);/没有到达精度要求继续迭代coutx1precision) x0=x1;if (newtonitera (x0)=- 1) break ; x1= newtonitera (x0); coutx1endl; return x1;/ 若导数为 0 则停止迭代/继续迭代/返回最终结果 /= 双点弦法迭代 = /构造弦截法的迭代公式double twopointchord_f ( double x0,double x1)return x1-(f(x1)/(f(x1)-f(x0)*( x1-x0);/双点弦法迭代double two
14、pointchord (double x0,double x1) double x3=twopointchord_f (x0,x1); cout x3 precision) coutf(x3) f(x3 ) endl ; x0=x1;x1=x3;x3=twopointchord_f (x0,x1);/ coutx3endl;coutf(x3)endl;return x3;/输出 x3 的函数值/没有到达精度要求继续迭代/返回最终结果/测试 void main ()12 init (); /初始化区间和迭代初值/* 测试代码 输出每次的迭代结果和最终结果cout 二分法 endl;for(int
15、 i =0;i3;i+)double result=0;cout 有根区间为 rni rni+footendl; result=Dichotomy(rni,rni+foot);/ 将区间端点带入公式cout 求得近似解为 resultendl;cout 迭代法 endl;for(i =0;i3;i+)double result=0;cout 有根区间为 rnirni+footendl;double x0 =ri;/取得初值result=itera(x0);/带入公式cout 求得近似解为 resultendl;cout 牛顿迭代 endl;for(i =0;i3;i+)double resul
16、t=0;cout 有根区间为 rnirni+footendl;double x0 =ri;/ 取得初值result=newton(x0);/ 带入公式cout 求得近似解为 resultendl;cout 弦截法 endl;for(i =0;i3;i+)double result=0; cout 有根区间为 rnirni+footendl;result=twopointchord(rni,rni+foot);/将区间端点带入公式cout 求得近似解为 resultendl;/*13在这次实验中,通过编程将二分法、简单迭代法、 Newton 迭代法、 弦截法(割线法、双点弦法 )以代码的方式实现, 这不仅
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋租赁合同范例样式
- 放射治疗试题库与答案
- 电机维修质保合同范例
- 内科考试模拟题(含答案)
- 管理学考试题含答案
- 新房建筑合同范例
- 地产咨询合同范例
- 定制皮质物品合同范例
- 专销低价混凝土合同范例
- 2025年河池货运从业资格证模拟考试题库
- 老年患者围术期ERAS护理
- 2024年合肥百姓公共服务云平台有限公司招聘笔试冲刺题(带答案解析)
- 沙门菌感染的人工智能与机器学习应用
- 电气工程及其自动化大学生职业规划
- 第四单元+和谐与梦想+复习课件 统编版道德与法治九年级上册
- 《公寓运营方案》课件
- Linux配置与管理智慧树知到期末考试答案2024年
- 2024中国华电集团限公司校招+社招高频考题难、易错点模拟试题(共500题)附带答案详解
- 《卫生检疫》期末复习选择题及答案
- 石家庄藁城市2023-2024学年八年级上学期期末数学测试卷(含答案)
- 福建省漳州市2023~2024学年高一上学期期末质量检测地理试题(含答案解析)
评论
0/150
提交评论