matlab多项式插值方法实现

matlab多项式插值方法实现

最近学习计算方法,需要实现一些方法。但是我又不愿意去直接调用matlab原有的方法,因此在这里实现了一些插值方法。

拉格朗日插值法

function yout = LagZ(xmatrix, ymatrix, x)
yout=0;
n = length(xmatrix);
li = ones(1,n);
for i=1:n
    for j=1:n
        if(i~=j)
            li(i) = li(i)*(x-xmatrix(j))/(xmatrix(i)-xmatrix(j));
        end
    end
end
for i=1:n
    yout = yout+ymatrix(i)*li(i);
end
end

调用示例

function testOne(startNumber, endNumber, n)
origin_distance =2000;
x = startNumber:(endNumber-startNumber)/n:endNumber;
%math equation
y = 1./(25.*x.^2+1);
x_lag = startNumber:(endNumber-startNumber)/origin_distance:endNumber;
nx_lag = length(x_lag);
y_lag = zeros(1,nx_lag);
for i=1:nx_lag
    y_lag(i) = LagZ(x,y,x_lag(i));
end
%math equation
x_origin = startNumber:(endNumber-startNumber)/origin_distance:endNumber;
y_origin = 1./(25.*x_origin.^2+1);
plot(x_lag,y_lag,'r', 'linewidth', 2);
hold on;
plot(x_origin,y_origin,'b', 'linewidth', 2);
set(gca,'color',[1,0.8,0]);
end

设n为10时拉格朗日插值的情况设n为20时插值情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值