数值分析大作业三四五六七.docxVIP

  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文档。上传文档
查看更多
数值分析大作业三四五六七

大作业 三 给定初值及容许误差,编制牛顿法解方程f(x)=0的通用程序. 解:Matlab程序如下: 函数m文件:fu.m function Fu=fu(x) Fu=x^3/3-x; end 函数m文件:dfu.m function Fu=dfu(x) Fu=x^2-1; end 用Newton法求根的通用程序Newton.m clear; x0=input(请输入初值x0:); ep=input(请输入容许误差:); flag=1; while flag==1 x1=x0-fu(x0)/dfu(x0); if abs(x1-x0)ep flag=0; end x0=x1; end fprintf(方程的一个近似解为:%f\n,x0); 寻找最大δ值的程序:Find.m clear eps=input(请输入搜索精度:); ep=input(请输入容许误差:); flag=1; k=0; x0=0; while flag==1 sigma=k*eps; x0=sigma; k=k+1; m=0; flag1=1; while flag1==1 m=10^3 x1=x0-fu(x0)/dfu(x0); if abs(x1-x0)ep flag1=0; end m=m+1; x0=x1; end if flag1==1||abs(x0)=ep flag=0; end end fprintf(最大的sigma值为:%f\n,sigma); 2.求下列方程的非零根 解:Matlab程序为: 主程序 clear clc format long x0=765; N=100; errorlim=10^(-5); x=x0-f(x0)/subs(df(),x0); n=1; while nN x=x0-f(x0)/subs(df(),x0); if abs(x-x0)errorlim n=n+1; else break; end x0=x; end disp([迭代次数: n=,num2str(n)]) disp([所求非零根: 正根x1=,num2str(x), 负根x2=,num2str(-x)]) (2)子函数 非线性函数f function y=f(x) y=log((513+0.6651*x)/(513-0.6651*x))-x/(1400*0.0918); end 子函数 非线性函数的一阶导数df function y=df() syms x1 y=log((513+0.6651*x1)/(513-0.6651*x1))-x1/(1400*0.0918); y=diff(y); end 运行结果如下: 迭代次数: n=5 所求非零根: 正根x1=767.3861 负根x2=-767.3861 大作业 四 分析:(1)输出插值多项式。 (2)在区间[-5,5]内均匀插入99个节点,计算这些节点上函数f(x)的近似值,并在同一张图上画出原函数和插值多项式的图形。 (3)观察龙格现象,计算插值函数在各节点处的误差,并画出误差图。 解:Matlab程序代码如下: %此函数实现y=1/(1+4*x^2)的n次Newton插值,n由调用函数时指定 %函数输出为插值结果的系数向量(行向量)和插值多项式 function [t y]=func5(n) x0=linspace(-5,5,n+1); y0=1./(1.+4.*x0.^2); b=zeros(1,n+1); for i=1:n+1 s=0; for j=1:i t=1; for k=1:i if k~=j t=(x0(j)-x0(k))*t; end; end; s=s+y0(j)/t; end; b(i)=s; end; t=linspace(0,0,n+1); for i=1:n s=linspace(0,0,n+1); s(n+1-i:n+1)=b(i+1).*poly(x0(1:i)); t=t+s; end; t(n+1)=t(n+1)+b(1); y=poly2sym(t); 10次插值运行结果: [b Y]=func5(10) b = Columns 1 through 4 -0.0000 0.0000 0.0027 -0.0000 Col

文档评论(0)

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

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

1亿VIP精品文档

相关文档