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)

即可绘制出图形





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

  • 18
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值