非线性方程求根、解线性方程组的迭代法.doc

非线性方程求根、解线性方程组的迭代法.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
非线性方程求根、解线性方程组的迭代法

福建农林大学计算机与信息学院 课程实习报告 课程名称: 数值分析课程实习 实习题目: 非线性方程求根、解线性方程组的迭代法 姓 名: 系: 数学与应用数学 专 业: 数学与应用数学 年 级: 2008级 学 号: 指导教师: 职 称: 讲师 2011年6月 3日 福建农林大学计算机与信息学院数学类 课程实习报告结果评定 评语: 成绩: 指导教师签字: 评定日期: 目 录 一、非线性方程求根 1 1. 实习的目的和任务 1 2. 实习要求 1 3. 实习地点 1 4. 主要仪器设备(实验用的软硬件环境) 1 5. 实习内容 1 5.1二分法: 1 5.2牛顿迭代法 4 5.3 弦截法 6 6. 问题讨论与分析 9 7. 结束语 11 参考文献 12 二、解线性方程组的迭代法 13 1. 实习的目的和任务 13 2. 实习要求 13 3. 实习地点 13 4. 主要仪器设备(实验用的软硬件环境) 13 5. 实习内容 13 5.1 雅可比迭代法 13 5.2 高斯-塞德尔迭代法 16 6. 问题讨论与分析 18 7. 结束语 19 参考文献 20 一、非线性方程求根 实习的目的和任务 掌握非线性方程(组)的各种解法,包括二分法、牛顿迭代法等,并通过编程与上机运算,体会二分法与牛顿迭代法的不同特点; 掌握解非线性方程的弦截法,并与牛顿迭代法作比较; 了解各种方法的收敛性。 实习要求 能够熟练应用所学的数值计算方法;能够熟练使用MATLAB软件;对数值分析及其计算方法有进一步了解,通过实例,能够对所学非线性方程求根方法的优缺点有所体会。二分法: 用二分法求方程在附近的根。在区间上连续,且,则存在一点,使得。介值定理相当于方程根的存在性定理,称满足定理条件的区间为有根区间。 考察有根区间,取中点将它分为两半,然后进行根的搜索,即检查与是否同号,如果确系同号,说明所求的根在的右侧,这时令;否则在的左侧,这时令。不管出现哪一种情况,新的有根区间的长度仅为的一半。 对压缩了的有根区间又可施行同样的手续,即用中点将区间再分为两半,然后通过根的搜索判定所求的根在的哪一侧,从而又确定一个新的有根区间,其长度是的一半。 如此反复二分下去,即可得出一系列有根区间 , 其中每个区间都是前一个区间的一半,因此的长度当时趋于零。就是说,如果二分过程无限地继续下去,这些区间最终必将收缩于一点,该点显然就是所求的根。 每次二分后,设取有根区间的中点作为根的近似值,则在二分过程中可以获得一个近似根的序列,该序列必以根为极限。 不过在实际计算时,不可能完成这个无限过程,其实也没有这种必要,因为数值分析的结果允许带有一定的误差。由于,只要二分足够多次(即充分大),便有,这里为预定的精度。 5.1.2二分法求解的计算步骤 步骤一:准备 计算在有根区间端点处的值; 步骤二:二分 计算在区间中点处的值; 步骤三:判断 若,则即是根,计算过程结束。否则作如下检验: 若与异号,则根位于区间内,这时以代替; 若与同号,则根位于区间内,这时以代替; 反复执行步骤二和步骤三,直到区间长度缩小到允许误差范围之内,此时区间中点即可作为所求的根。 5.1.3二分法的方程求解 1)利用MATLAB软件,建立m文件dichotomy.m function [k,x,e,y]=dichotomy(fun,a,b,precision) %二分法 %输入a,b为区间左右端点,precision是预选设定的精度 %输出k为二分法的次数,x是方程在(a,b)内的实根x*的近似值, if nargin4 | nargin3 error(错误的输入参数个数!) end if nargin==3,precision=1e-6;end k=0;e=abs(b-a); while eprecision ya=subs(fun,a);yb=subs(fun,b); if ya*yb0 disp(警告:区间端点的函数值同号,请重新输入区间端点!),return end x=(a+b)/2;y=subs(fun,x); if y==0,return elseif y*yb0,b=x; else a=x; end e=abs(a-b); k=k+1; [k,x] end x=(a+b)/2;e=abs(a-b);y=subs(fun,x); 2)在MATALB窗口输入如下指令: [k,x,e,y]=dichotomy(x^3+x^2-3*x-3,1,2,1e-6) 3)运行结果: ans = 1

文档评论(0)

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

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

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档