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

Matlab插值算法程序集(2)

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

i2 = 3; end for j=1:3

j1 = mod(j+1,3); if(j1 == 0) j1 = 3; end

j2 = mod(j+2,3); if(j2 == 0) j2 = 3; end

f = f+Z(cx(i),cy(j))*((t-x(cx(i1)))*(t-x(cx(i2)))/(x(cx(i))-x(cx(i1)))/(x(cx(i))-x(cx(i2))))* ... (s-y(cy(j1)))*(s-y(cy(j2)))/(y(cy(j))-y(cy(j1)))/(y(cy(j))-y(cy(j2))); %插值多项式 end end

fz = subs(f,'[t s]',[x0 y0]);

7.FCZ

function fz = DTL(x,y,Z,x0,y0) syms s t; f = 0.0;

n = length(x); m = length(y);

for i=1:n

if(x(i)<=x0)&& (x(i+1)>=x0) index_x = i; break; end

end %找到x0所在区间 for i=1:m

if(y(i)<=y0)&& (y(i+1)>=y0) index_y = i; break; end

end %找到y0所在区间

if index_x == 1

cx(1:3) = index_x:(index_x+2); else

if index_x == n-1

cx(1:3) = (index_x-1):(index_x+1); else

if abs(x(index_x-1)-x0)>abs(x(index_x+2)-x0) cx(1:3) = (index_x):(index_x+2); else

cx(1:3) = (index_x-1):(index_x+1); end end

end %找到离x0最近的三个x坐标

if index_y == 1

cy(1:3) = index_y:(index_y+2); else

if index_y == m-1

cy(1:3) = (index_y-1):(index_y+1); else

if abs(y(index_y-1)-y0)>=abs(y(index_y+2)-y0) cy(1:3) = (index_y):(index_y+2); else

cy(1:3) = (index_y-1):(index_y+1); end end

end %找到离y0最近的三个y坐标

for i=1:3 i1 = mod(i+1,3); if(i1 == 0) i1 = 3; end

i2 = mod(i+2,3); if(i2 == 0) i2 = 3; end for j=1:3

j1 = mod(j+1,3); if(j1 == 0) j1 = 3; end

j2 = mod(j+2,3); if(j2 == 0) j2 = 3; end

f = f+Z(cx(i),cy(j))*((t-x(cx(i1)))*(t-x(cx(i2)))/(x(cx(i))-x(cx(i1)))/(x(cx(i))-x(cx(i2))))* ... (s-y(cy(j1)))*(s-y(cy(j2)))/(y(cy(j))-y(cy(j1)))/(y(cy(j))-y(cy(j2))); %插值多项式 end

end

fz = subs(f,'[t s]',[x0 y0]);

8.Gauss

function f = Gauss(x,y,x0)

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

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

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

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

if( mod(n,2) ==1) if(nargin == 2)

f = GStirling(x,y,n); else if(nargin == 3)

f = GStirling(x,y,n,x0); end end else

if(nargin == 2)

f = GBessel(x,y,n); else if(nargin == 3)

f = GBessel(x,y,n,x0); end end end

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

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

9.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);

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

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