多种插值计算——Matlab中算法实现

插值计算

本博客主要是插值计算在matlab中的算法实现,插值的实现包括以下几种:

  • 线性插值
  • 二次插值
  • 三次插值

代码见下方

算法实现

  • 已知 sin(0.32)=0.314567,sin(0.34)=0.333487,sin(0.36)=0.352274,sin(0.38)=0.370920。请采用线性插值、二次插值、三次插值分别计算 sin(0.35)的值。

设计思路

  • 设计一个通用函数,根据输入的参数的不同(即输入的散点数的不同)决定做哪一种的插值计算。x则为要求的点的x值。
  • 线性插值需要两个散点,这里用靠近0.35的两个点0.34跟0.36作为样本进行计算
  • 二次插值需要三个点,由于没法得出最近的三个点,因此分别采用0.32、0.34、0.36三个点跟0.34、0.36、0.38三个点进行计算
  • 三次插值需要四个点,题目提供的散点数刚好满足要求

数值结果

  • 线性插值

  • 二次插值的两种取点方式
    这里写图片描述
    这里写图片描述

  • 三次插值
    这里写图片描述

实现代码:

function result = insert(x0, y0, x)

    n = length(x0);
    result = 0.0;

    for k = 1:n
        w = 1.0;
        p = 1.0;

        for m = 1:n
            if m ~= k
                w = w*(x - x0(m));
                p = p*(x0(k) - x0(m));
            end
        end
        result = result + y0(k)*(w/p);
    end
end

猜你喜欢

转载自blog.csdn.net/qq_36312878/article/details/80945332