欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    MATLAB-插值算法实现(共8页).doc

    • 资源ID:14519305       资源大小:27KB        全文页数:8页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    MATLAB-插值算法实现(共8页).doc

    精选优质文档-倾情为你奉上1.高斯插值function f = Gauss(x,y,x0)if(length(x) = length(y) n = length(x);else disp('x和y的维数不相等!'); return;endxx =linspace(x(1),x(n),(x(2)-x(1);if(xx = x) disp('节点之间不是等距的!'); return;endif( mod(n,2) =1) if(nargin = 2) f = GStirling(x,y,n); else if(nargin = 3) f = GStirling(x,y,n,x0); end endelse if(nargin = 2) f = GBessel(x,y,n); else if(nargin = 3) f = GBessel(x,y,n,x0); end endendfunction f = GStirling(x,y,n,x0)syms t;nn = (n+1)/2;f = y(nn);for(i=1:n-1) for(j=i+1:n) y1(j) = y(j)-y(j-1); end if(mod(i,2)=1) c(i) = (y1(i+n)/2)+y1(i+n+2)/2)/2; else c(i) = y1(i+n+1)/2)/2; end if(mod(i,2)=1) l = t+(i-1)/2; for(k=1:i-1) l = l*(t+(i-1)/2-k); end else l_1 = t+i/2-1; l_2 = t+i/2; for(k=1:i-1) l_1 = l_1*(t+i/2-1-k); l_2 = l_2*(t+i/2-k); end l = l_1 + l_2; end l = l/factorial(i); f = f + c(i)*l; simplify(f); f = vpa(f, 6); y = y1; if(i=n-1) if(nargin = 4) f = subs(f,'t',(x0-x(nn)/(x(2)-x(1); end endendfunction f = GBessel(x,y,n,x0)syms t;nn = n/2;f = (y(nn)+y(nn+1)/2;for(i=1:n-1) for(j=i+1:n) y1(j) = y(j)-y(j-1); end if(mod(i,2)=1) c(i) = y1(i+n+1)/2)/2; else c(i) = (y1(i+n)/2)+y1(i+n+2)/2)/2; end if(mod(i,2)=0) l = t+i/2-1; for(k=1:i-1) l = l*(t+i/2-1-k); end else l_1 = t+(i-1)/2; l_2 = t+(i-1)/2-1; for(k=1:i-1) l_1 = l_1*(t+(i-1)/2-k); l_2 = l_2*(t+(i-1)/2-1-k); end l = l_1 + l_2; end l = l/factorial(i); f = f + c(i)*l; simplify(f); f = vpa(f, 6); y = y1; if(i=n-1) if(nargin = 4) f = subs(f,'t',(x0-x(nn)/(x(2)-x(1); end endend2. Hermite(艾尔米特)插值 function f = Hermite(x,y,y_1,x0)syms t;f = 0.0;if(length(x) = length(y) if(length(y) = length(y_1) n = length(x); else disp('y和y的导数的维数不相等!'); return; endelse disp('x和y的维数不相等!'); return;endfor i=1:n h = 1.0; a = 0.0; for j=1:n if( j = i) h = h*(t-x(j)2/(x(i)-x(j)2); a = a + 1/(x(i)-x(j); end end f = f + h*(x(i)-t)*(2*a*y(i)-y_1(i)+y(i); if(i=n) if(nargin = 4) f = subs(f,'t',x0); else f = vpa(f,6); end endend3拉格朗日插值function f = Language(x,y,x0)syms t;if(length(x) = length(y) n = length(x); else disp('x和y的维数不相等!'); return;end %检错f = 0.0;for(i = 1:n) l = y(i); for(j = 1:i-1) l = l*(t-x(j)/(x(i)-x(j); end; for(j = i+1:n) l = l*(t-x(j)/(x(i)-x(j); %计算拉格朗日基函数 end; f = f + l; %计算拉格朗日插值函数 simplify(f); %化简 if(i=n) if(nargin = 3) f = subs(f,'t',x0); %计算插值点的函数值 else f = collect(f); %将插值多项式展开 f = vpa(f,6); %将插值多项式的系数化成6位精度的小数 end endend4. 利用均差牛顿插值function f = Newton(x,y,x0)syms t;if(length(x) = length(y) n = length(x); c(1:n) = 0.0;else disp('x和y的维数不相等!'); return;endf = y(1);y1 = 0;l = 1; for(i=1:n-1) for(j=i+1:n) y1(j) = (y(j)-y(i)/(x(j)-x(i); end c(i) = y1(i+1); l = l*(t-x(i); f = f + c(i)*l; simplify(f); y = y1; if(i=n-1) if(nargin = 3) f = subs(f,'t',x0); else f = collect(f); %将插值多项式展开 f = vpa(f, 6); end endend5.向后牛顿插值function f = Newtonback(x,y,x0)syms t;if(length(x) = length(y) n = length(x); c(1:n) = 0.0;else disp('x和y的维数不相等!'); return;endf = y(n);y1 = 0;xx =linspace(x(1),x(n),(x(2)-x(1);if(xx = x) disp('节点之间不是等距的!'); return;endfor(i=1:n-1) for(j=i+1:n) y1(j) = y(j)-y(j-1); end c(i) = y1(n); l = t; for(k=1:i-1) l = l*(t+k); end; f = f + c(i)*l/factorial(i); simplify(f); y = y1; if(i=n-1) if(nargin = 3) f = subs(f,'t',(x0-x(n)/(x(2)-x(1); else f = collect(f); f = vpa(f, 6); end endend5.向前牛顿插值function f = Newtonforward(x,y,x0)syms t;if(length(x) = length(y) n = length(x); c(1:n) = 0.0;else disp('x和y的维数不相等!'); return;endf = y(1);y1 = 0;xx =linspace(x(1),x(n),(x(2)-x(1);if(xx = x) disp('节点之间不是等距的!'); return;endfor(i=1:n-1) for(j=1:n-i) y1(j) = y(j+1)-y(j); end c(i) = y1(1); l = t; for(k=1:i-1) l = l*(t-k); end; f = f + c(i)*l/factorial(i); simplify(f); y = y1; if(i=n-1) if(nargin = 3) f = subs(f,'t',(x0-x(1)/(x(2)-x(1); else f = collect(f); f = vpa(f, 6); end endend专心-专注-专业

    注意事项

    本文(MATLAB-插值算法实现(共8页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开