拉格朗日插值法的matlab实现

一、基本原理

比如有如下这些点

x1 x2 x3 x4
y1 y2 y3 y4

那么在拉个朗日原理中可以把过这些点的曲线表示为:

其g(x)y叫做一个插值基函数 (开关),当x=x1时,g1(x)=1,而当x=x2,x3,x4时,g1(x)都为0,其他的也是如此,这样当x=x1时,f(x)中就只保留了g1(x)y1项,其他项都为0,就保证了过点(x1,y1);其他点以此类推;

原理讲解得很简单,具体可以参考其他文献资料。

二、Matlab代码

matlab 复制代码
clear
clc

x = [466 741 950 1422 1634];
y = [7.04 4.28 3.40 2.54 2.13];

x1 = min(x):0.5:max(x);
y1 = lagrange(x,y,x1);
plot(x,y,'ko',x1,y1,'r-')

function fx = lagrange(x0,y0,x)
    m = length(x);
    n = length(x0);
    for i = 1:m
        z = x(i);
        s = 0;
        for k = 1:n
            p = 1;
            for j = 1:n
                if j~=k
                    p = p * (z-x0(j))/(x0(k)-x0(j));
                end
            end
            s = p*y0(k)+s;
        end
        fx(i) = s;
    end
end
相关推荐
abments6 分钟前
基于ReAction范式的问答系统实现demo
开发语言·python
修电脑的猫23 分钟前
带有输入的CDS和程序调用
开发语言·lua
圈圈编码26 分钟前
悲观锁和乐观锁
java·开发语言·sql·mysql
多多*28 分钟前
基于rpc框架Dubbo实现的微服务转发实战
java·开发语言·前端·redis·职场和发展·蓝桥杯·safari
IT小码哥丶40 分钟前
华为仓颉语言初识:并发编程之同步机制(上)
java·开发语言
一抓掉一大把1 小时前
MiniExcel模板填充Excel导出
开发语言·javascript·ecmascript
小红帽2.01 小时前
开源PHP在线客服系统源码搭建教程
开发语言·开源·php
qq_433554542 小时前
C++ list代码练习、set基础概念、set对象创建、set大小操作
开发语言·c++·list
张伯毅2 小时前
Java 类型参数 T、R 、 O 、K、V 、E 、? 区别
java·开发语言
AI+程序员在路上2 小时前
单元测试与QTestLib框架使用
开发语言·c++·单元测试