1非线性方程求根.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
桂林电子科技大学 实验室:数学与计算科学学院实验报告 实验室: 学号 0800730121 批次 3 姓名 彭兆拓 成绩 课程 名称 数值分析 实验项目 名 称 1非线性方程求根 指导 教师 李光 /.―. L云 实验日期:2010年4月17日 一,实验目的 通过实验,熟悉非线性方程求根的经典数值方法,掌握二分法,简单迭代法,牛顿迭代法的算法思想 二,实验原理 求非线性方程的数值解的方法一般有 二分法 要求在所给含根区间内有且只有一个根 ?即f (a) f (b) ::: 0.求根方法为不断取区间中点求函数值 a亠b f( 2 ),将中点替代与之同号的端点,实现含根区间逐步减半,达到逐步接近方程根的目的? 简单迭代法 利用方程f(x)=0构造迭代格式xn1,=即(xj,选取初值,产生迭代序列{ X),x1/ ,xk},在迭代格式 收敛的情况下,可以得到f(x)=0的近似根. 牛顿迭代法 是取特殊迭代格式 xn “ = xn -丄的迭代法. n「(Xn) 三,使用仪器,材料 计算机一台;Mathematica软件. 四,实验内容与步骤 1.用二分法求方程COSS in xi;i=0.75的解,精确到5位小数. 3 2.求解方程X 2 =x x 1在1,2内根的下列迭代法 Xk 1/ 3 1 , 1 ⑵ Xk 1 = 1 Xk 丄 2 , Xk 3 (3) Xk 1 = xk 2 — Xk -1, x2 +1 ⑷兀1 丁 =0 =0,取 X。= 0 ,| Xk^ — Xk 10^. (1)牛顿迭代 试通过实验找出收敛的迭代法 2x2 x 2x 3.编写程序,分别用下列方法求解方程 x 2xe e ⑶* ⑶* 比较各个方法的收敛速度 五,实验过程原始记录(数据,图表,计算等) 1、解: Plot[Cos[Si n[x]]-0.75,{x,-5,5}] (*二分法* *输入数据,[a,b]为含根区间,f[x]为已知函数,e为允许误差*) Clear[x]; a = -3.; b = -2; f[x_] := Cos[Si n[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]],]; 0, a = (b + a)/2, b = (b + 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 次二分区间得:[225,-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_] := (xA2 + x + 1)A(1/3); x0 = 1.5; e = 10A(-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=

文档评论(0)

youbika + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档