matlab程序与数值实验.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文档。上传文档
查看更多
matlab程序与数值实验

MATLAB程序与数值实验 一、 插值法(课本第二章) 1、拉格朗日插值方法 function s=lag(x,y,t) %拉格朗日插值方法,可以同时对多点插值,t可以为向量 syms p; n=length(x);%读取x向量的维数 s=0; for(k=1:n) la=y(k); %构造基函数 for(j=1:k-1) la=la*(p-x(j))/(x(k)-x(j)); end; for(j=k+1:n) la=la*(p-x(j))/(x(k)-x(j)); end; s=s+la; simplify(s); end if(nargin==2) s=subs(s,p,x); s=collect(s);%展开多项式 s=vpa(s,6); else m=length(t); for i=1:m temp(i)=subs(s,p,t(i)); end s=temp; End %for example % x=[pi/4 pi/6 pi/3 pi/2]; %y=[cos(pi/4) cos(pi/6) cos(pi/3) cos(pi/2)]; %t=[-40*pi/180 40*pi/180 50*pi/180 70*pi/180 170*pi/180]; %yt=lag(x,y,t) 2、牛顿插值法 function s=niudun(x,y,t) %,可以同时对多点插值,即t可以为向量 syms p; s=y(1); xishu=0; dxs=1; n=length(x);%读取x向量的维数 %构造牛顿插值方法 for (i=1:n-1) for(j=i+1:n) xishu(j)=(y(j)-y(i))/(x(j)-x(i)); end temp1(i)=xishu(i+1); dxs=dxs*(p-x(i)); s=s+temp1(i)*dxs; y=xishu; end simplify(s) if (nargin==2) s=subs(s,p,x); s=collect(s); s=vpa(s,4); else %读取要插值点的向量长度 %可以直接对多点插值机算 m=length(t); for i=1:m temp(i)=subs(s,p,t(i)); end %得到的是系列插值点的插值结果,即得到的是向量,赋值给s s=temp; end %for example %1、已知零阶Bessel函数f(x)在若干点处的函数值为:计算x在1.5处的近似值 %x=[1.0 1.3 1.6 1.9 2.2]; %y=[0.7651977 0.6200860 0.4554022 0.2818186 0.1103623]; %yt=niudun(x,y,1.5) 插值中的Runge现象 syms x f=1/(1+x^2); x=-5:5; y=subs(f,x); chazhi=niudun(x,y); v=[-5,5,-0.5,2]; ezplot(chazhi),axis(v),grid hold on t=-5:0.05:5; yt=subs(f,t); plot(t,yt,’:’) 4、Hermite插值 function f=Hermite(x,y,dy,t) %Hermite插值,x为插值节点,y为插值节点的函数值,dy为插值节点的一阶导数值,t为被插数据,可以为向量 n=length(x); m=length(t); for k=1:m g(k)=0.0; for i=1:n la=1; lp=0.0; for j=1:n if (j~=i) la=la*(t(k)-x(j))/(x(i)-x(j)); lp=lp+1/(x(i)-x(j)); end end temp1=1-2*(t(k)-x(i))*lp; temp2=y(i)*temp1*la^2; temp3=dy(i)*(t(k)-x(i))*la^2; g(k)=g(k)+temp2+temp3; end end f=g; %fo

文档评论(0)

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

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

1亿VIP精品文档

相关文档