- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1非线性方程求根
桂林电子科技大学
数学与计算科学学院实验报告
实验室: 实验日期:2010年4月17日
学号 0800730121 批次 3 姓名 彭兆拓 成绩 课程
名称 数值分析 实验项目
名 称 1非线性方程求根 指导
教师 李光云 一,实验目的
通过实验,熟悉非线性方程求根的经典数值方法,掌握二分法,简单迭代法,牛顿迭代法的算法思想
二,实验原理
求非线性方程的数值解的方法一般有
1.二分法
要求在所给含根区间内有且只有一个根.即.求根方法为不断取区间中点求函数值,将中点替代与之同号的端点,实现含根区间逐步减半,达到逐步接近方程根的目的.
2.简单迭代法
利用方程构造迭代格式,选取初值,产生迭代序列,在迭代格式收敛的情况下,可以得到的近似根.
3.牛顿迭代法
是取特殊迭代格式的迭代法.
三,使用仪器,材料
计算机一台;Mathematica软件.
四,实验内容与步骤
1. 用二分法求方程的解,精确到5位小数.
2. 求解方程在内根的下列迭代法
(1), (2),
(3) , (4)
试通过实验找出收敛的迭代法.
3. 编写程序, 分别用下列方法求解方程,取,. (1) 牛顿迭代法;
(2) ;
(3)* ;
比较各个方法的收敛速度.
五,实验过程原始记录(数据,图表,计算等)
1、解:
Plot[Cos[Sin[x]]-0.75,{x,-5,5}]
(*二分法*
*输入数据,[a,b]为含根区间,f[x]为已知函数,e为允许误差*)
Clear[x];
a = -3.;
b = -2;
f[x_] := Cos[Sin[x] - 0.75];
e = 10^(-3);
(****************************)
If[f[a]*f[b] 0, Print[[a,b]区间上f[x]无解!],
i = 1;
While[Abs[a - b] e,
If[Abs[f[(b + a)/2]] e, Break[],];
If[f[a]*f[(b + a)/2] 0, a = (b + a)/2, b = (b + a)/2];
Print[第, i, 次二分区间得:[, a, ,, b, ], 区间中点为:, (a + b)/2,
, f[x]=, f[(a + b)/2]];
i = i + 1;
]
Print[方程根为x=, (a + b)/2, , f[x]=, f[(a + b)/2]];
]
(****************************)
第1次二分区间得:[-2.5,-2], 区间中点为:-2.25, f[x]=0.0427101
第2次二分区间得:[-2.25,-2], 区间中点为:-2.125, f[x]=-0.0295192
第3次二分区间得:[-2.25,-2.125], 区间中点为:-2.1875, f[x]=0第4次二分区间得:[-2.1875,-2.125], 区间中点为:-2.15625, f[x]=-0.0126648
第5次二分区间得:[-2.1875,-2.15625], 区间中点为:-2.17188, f[x]=-0第6次二分区间得:[-2.1875,-2.17188], 区间中点为:-2.17969, f[x]=0.000513602
方程根为x=-2.17969, f[x]=0.000513602
2、(1)*输入数据,max为最大迭代次数,g[x]为迭代格式,
x0为迭代初值,e为允许误差,k为计数器*)
Clear[x];
max = 10;
g[x_] := (x^2 + x + 1)^(1/3);
x0 = 1.5;
e = 10^(-3);
k = 1;
(*利用迭代公式形成迭代序列*)
xx = g[x0];
Print[第, k, 次迭代x=, xx];
While[Abs[x0 - xx] e,
If[k max,
x0 = xx; Print[达到最大迭代次数,可能为死循环!],
x0 = xx;
xx = g[x0];
k = k + 1;
Print[第 , k, 次迭代x= , xx];
]
]
(************************************************)
第1次迭代x=1.68099
第 2 次迭代x= 1.76589
第 3 次迭代x= 1.80536
第 4 次迭代x= 1.82
文档评论(0)