MATLAB实现分段线性插值

问题描述:

《MATLAB实现分段线性插值》

 

在解决实际问题时,但我们遇到大区间、高次插值的情况时,往往会出现Runge现象,插值结果往往偏差较大。下面我们通过一个例子来了解一下分段线性插值,具体的原理可自行百度。

代码基于Matlab 2014a

function fenduan(L,b1,b2)
%当在区间内取i个等距节点时对应的小区间的中点值Si并绘制出图形
%b1代表左边界,b2代表右边界
%L可以是一个数组,也可以是一个数字

 %插值绘图
 n=length(L);
 for i=1:n
     s=L(i);
     L1=linspace(b1,b2,s+1);
     for j=2:s+1
             X(j-1)=(L1(j-1)+L1(j))/2; %寻找两端点中点值
             Sn(j-1)=(((X(j-1)-L1(j))/(L1(j-1)-L1(j)))/(1+25*L1(j-1)^2))+(((X(j-1)-L1(j-1))/(L1(j)-L1(j-1)))/(1+25*L1(j)^2)) %中点值函数值
     end
     
     plot(X,Sn,'b-');
     hold on
     Z=Sn;
     %绘制f=1/(1+25*x^2)图形
     sym x;
     hs='1/(1+25*x^2)';
     h=ezplot(hs,[b1,b2]);
     set(h,'color','r');%设置原函数曲线颜色为红
     grid on  %添加网格
     bt=strcat('当i=',num2str(L(i)));% 字符串连接
     title(bt);
     hold on
 end

在命令行中输入

fenduan([10,20,40,60],-1,1)

即可绘制出图形

《MATLAB实现分段线性插值》

对不同的区间设置,只需更改相应参数即可

    原文作者: 汉诺塔问题
    原文地址: https://blog.csdn.net/qq_35531985/article/details/79942372
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞