1非线性方程求根.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

ipbohn97 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档