欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MATLAB实现分段线性插值

程序员文章站 2022-07-05 17:00:19
...

问题描述:

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实现分段线性插值



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