数值分析验报告方程求根.docVIP

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

《数值分析》实验报告 班级 学号 姓名 日期学 院 专 业 课程名称 成 绩 实验一Newton法、不动点迭代法、弦截法求方程的根的各种计算方法、并实施程序调试和运行,学习应用这些算法于实际问题。 实验内容: 二分法、Newton法、不动点迭代法、弦截法求方程的根、程序的调试和运行,给出实例的计算结果。观察初值对收敛性的影响。 实验步骤: 、二分法: 定义:对于区间[a,b]上连续不断且f(a)·f(b)0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。 实现方法:首先我们设一方程400*(x^4)-300*(x^3)+200*(x^2)-10*x-1=0,并求其在区间[0.1,1]上的根,误差限为e=10^-4。 PS:本方法应用的软件为matlab。 disp(二分法) a=0.1;b=1; tol=0.0001; n0=100; fa=400*(a.^4)-300*(a.^3)+200*(a.^2)-10*a-1; for i=1:n0 p=(a+b)/2; fp=400*(p.^4)-300*(p.^3)+200*(p.^2)-10*p-1; if fp==0||(abs((b-a)/2)tol) disp(用二分法求得方程的根p=) disp(p) disp(二分迭代次数为:) disp(i) break; end; if fa*fp0 a=p; else b=p; end; end; if i==n0~(fp==0||(abs((b-a)/2)tol)) disp(n0) disp(次二分迭代后没有求出方程的根) end; 程序调试: 运行结果: 用二分法求得方程的根p= 0.1108 二分迭代次数为: 14 Newton法 定义:取定初值x0,找到函数对应的点,然后通过该点作函数切线,交x轴,得到新的横坐标值,然后找函数对应的点,做切线,得到新的横坐标值,重复上述步骤,多次迭代,直到收敛到需要的精度。 实现方法:我们与二分法一样,先设一方程400*(x^4)-300*(x^3)+200*(x^2)-10*x-1=0,并求其在区间[0.1,1]上的根。 PS:本方法应用的软件为matlab。 syms x; diff(400*(x.^4)-300*(x.^3)+200*(x.^2)-10*x-1) %求导方程 函数文件: function Newton=fun(a) Newton=400*(a.^4)-300*(a.^3)+200*(a.^2)-10*a-1; end function Newton2=dfun(b) Newton2=1600*b^3-900*b^2+400*b-10; %fun函数的导数 end 主程序: x0=1; while 1 x1=x0-fun(x0)/dfun(x0); if abs(x1-x0)1e-8 || abs(fun(x1))1e-10 break; end x0=x1; end disp(用牛顿法求得的方程的根为:x=) disp(x1) 程序调试: 运行结果: 用牛顿法求得的方程的根为: x=0.1108 、不动点迭代法: 采用不动点迭代法计算非线性方程x3+4x2-10=0,在区间[1,2]上的一个根。 不动点迭代法程序: function [y,n]=BDD(x,eps) if nargin==1 eps=1.0e-6; elseif nargin1 error return end x1=gg(x); n=1; while (norm(x1-x)=1e-6)(n=10000) x=x1; x1=gg(x); n=n+1; end y=x; M函数: function f=gg(x) f(1)=sqrt(2.5-(x^3)/4); 结果如下: BDD(1) n = 21 ans = 1.365200*(x^4)-300*(x^3)+200*(x^2)-10*x-1=0,并求其在区间[0.1,1]上的根。 PS:本方法应用的软件为matlab。 函数文件: function[p1,err,k,y]=secant(f,p0,p1,delta,max1) % f是非线性函数 %p0,p1是初始值 %delta是给定允许误差 %max1是迭代次数的上限 %p1是所求得的方程的近似解 %err是p1-p0的误差估计 %k是所需要的迭代次数 %y=f(p1) K=0,p0,p1,f

您可能关注的文档

文档评论(0)

135****6041 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档