77范文网 - 专业文章范例文档资料分享平台

Matlab插值算法程序集(3)

来源:网络收集 时间:2018-12-02 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

else

disp('y和y的导数的维数不相等!'); return; end else

disp('x和y的维数不相等!'); return; end

for 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 end End

10.Language

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 end end

11.Neville

function f = Neville(x,y,x0) syms t;

if(length(x) == length(y)) n = length(x); else

disp('x和y的维数不相等!'); return; end

y1(1:n) = t; for(i=1:n-1) for(j=i+1:n) if(j==2)

y1(j) = y(j)+(y(j)-y(j-1))/((t-x(j-i))/(t-x(j)))*(1-(y(j)-y(j-1))/y(j)); else

y1(j) = y(j)+(y(j)-y(j-1))/((t-x(j-i))/(t-x(j)))*(1-(y(j)-y(j-1))/(y(j)-y(j-2))); end

end y = y1; if(i==n-1)

if(nargin == 3)

f = subs(y(n-1),'t',x0);

else

f = vpa(y(n-1),6); end end end

12.Newton

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; end

f = 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 end end

%将插值多项式展开

13.Newtonback

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; end

f = y(n); y1 = 0;

xx =linspace(x(1),x(n),(x(2)-x(1))); if(xx ~= x)

disp('节点之间不是等距的!'); return; end

for(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 end

end

14.Newtonforward

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; end

f = y(1); y1 = 0;

xx =linspace(x(1),x(n),(x(2)-x(1))); if(xx ~= x)

disp('节点之间不是等距的!'); return; end

for(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 end

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Matlab插值算法程序集(3)在线全文阅读。

Matlab插值算法程序集(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/331471.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: