多项式拟合:最小二乘、拉格朗日插值、牛顿插值

news2024/11/29 0:44:41

多项式拟合是一种常用的数学和机器学习方法,它使用一个多项式函数来拟合一组数据点。多项式拟合的目的是在众多的样本点中找出满足样本点分布的多项式。它基于多项式函数的性质,可以表示为 y=w0+w1x+w2x2+…+wnxn 的形式,其中 y 是因变量(输出), x 是自变量(输入), w0,w1,…,wn 是多项式的系数。

多项式拟合的应用非常广泛,包括但不限于以下方面:

  1. 数据分析与预测:在数据分析中,多项式拟合可以帮助理解和预测变量之间的关系。例如,在经济学中,可以使用多项式拟合来预测股票价格或销售额的变化趋势。

  2. 信号处理:在信号处理领域,多项式拟合可用于去除噪声或平滑信号。通过拟合信号的主要趋势,可以减少随机噪声的影响。

  3. 图像处理:在图像处理中,多项式拟合可用于边缘检测、图像增强等任务。通过拟合图像的像素值分布,可以提取出图像的特征或进行图像修复。

  4. 机器学习算法:多项式拟合也是许多机器学习算法的基础,如多项式回归、支持向量机等。这些算法利用多项式拟合来捕捉数据中的非线性关系。

此外,多项式拟合还可以根据具体需求和应用场景进行定制和优化。例如,可以通过调整多项式的阶数来控制拟合的复杂度,或者使用不同的优化算法来确定最佳的拟合系数。

需要注意的是,多项式拟合并不总是稳定的,特别是在数据缺失或噪声较大的情况下。此外,过高的多项式阶数可能导致过拟合,使得模型在训练数据上表现良好,但在新数据上表现不佳。因此,在使用多项式拟合时,需要仔细选择模型参数并评估其性能。

总之,多项式拟合是一种强大而灵活的工具,可以在多个领域用于数据处理、分析和预测。然而,它的使用也需要谨慎,以避免潜在的稳定性问题和过拟合风险。

本文介绍三种MATLAB多项式拟合的方法,并给出演示代码。

1. 最小二乘多项式拟合

最小二乘多项式拟合是一种数学优化技术,用于寻找一个多项式函数,使得该函数与给定的数据点之间的平方误差之和最小。具体来说,假设有一组数据点 eq?%28x_i%2Cy_i%29,其中eq?i%3D1%2C2%2C...%2Cn,我们希望找到一个多项式函数eq?p%28x%29%20%3D%20w_0%20+%20w_1x%20+%20w_2x%5E2%20+%20...%20+%20w_mx%5Em,使得所有数据点与该多项式的垂直距离(即误差)的平方和最小。

最小二乘法的目标是最小化如下形式的损失函数(或称为残差平方和):

eq?S%20%3D%20%5Csum%20%5B%28y_i%20-%20p%28x_i%29%29%5E2%5D

其中 eq?%5Csum表示对所有的eq?i从 1 到eq?n求和。损失函数eq?S衡量了多项式拟合函数eq?p%28x%29与实际数据点之间的总体偏差。最小二乘法通过调整多项式的系数eq?w0%2Cw1%2C...%2Cwm来最小化eq?S

为了找到使eq?S最小的系数,通常会使用线性代数中的矩阵方法(如正规方程)或迭代优化算法(如梯度下降)。一旦找到了这些系数,就得到了一个多项式函数,该函数以最小平方误差的方式拟合了给定的数据点。

最小二乘多项式拟合具有许多优点,例如计算效率高、易于实现、以及在许多情况下能够提供很好的拟合效果。然而,它也有一些局限性,例如对于某些复杂的数据分布,可能无法找到一个合适的多项式来准确拟合。此外,如果多项式的阶数选择不当,可能会导致过拟合或欠拟合的问题。

在实际应用中,最小二乘多项式拟合被广泛用于回归分析、信号处理、图像处理、物理建模等多个领域。通过拟合数据中的趋势和模式,它可以帮助我们理解和预测变量的行为,并为决策提供有力的支持。

演示代码如下:

clc;clear;close all;
%% 最小二乘多项式拟合
% 定义一些样本数据
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
y = [2, 3, -5, 3, 5, 11, -2, 3, 7, -7];

% 指定拟合多项式的次数
n = 9;

% 使用 polyfit 函数进行最小二乘拟合
p = polyfit(x, y, n);

% 生成拟合曲线的 x 值
x_fit = linspace(min(x), max(x), 100);
% 计算拟合曲线的 y 值
y_fit = polyval(p, x_fit);

% 绘制原始数据
figure;
plot(x, y, '.blue', 'MarkerSize', 25); % 原始数据点
hold on;

% 绘制拟合曲线
plot(x_fit, y_fit, 'r-', 'LineWidth', 2); % 拟合曲线
hold off;

% 添加图例和标签
legend('原始数据', '拟合曲线','Fontsize',11);
xlabel('数据序号','Fontsize',12);
ylabel('数据大小','Fontsize',12);
title('最小二乘多项式拟合','Fontsize',12);
grid on;

 

fe458284c62ea8cce16cce8f5d814867.png

最小二乘多项式拟合

 

2. 拉格朗日插值多项式拟合

拉格朗日插值多项式拟合是一种通过已知的数据点来构造一个多项式函数,从而在未知数据点处进行预测或者估计的方法。具体地,给定一组互不相同的数据点 ,其中 是互不相同的实数,拉格朗日插值多项式 可以表示为 ,其中 是拉格朗日基函数。

拉格朗日基函数 的定义为 ,其中 。这意味着基函数 在 处取值为1,而在其他插值点 处取值为0。这样,当 等于某个特定的插值点 时,只有对应的基函数 对 有贡献,其他基函数均为零。因此,拉格朗日插值多项式能够确保在已知的数据点处,多项式与给定的函数值完全匹配。

拉格朗日插值多项式拟合的求解过程需要先求出基函数 ,然后再将其带入到多项式中求解。这种方法具有结构简单、运算简便的优点,因此在许多领域得到了广泛的应用。

然而,需要注意的是,拉格朗日插值多项式拟合也存在一些局限性。例如,当插值节点的数量增加时,多项式的次数也会相应增加,这可能导致龙格现象(Runge's phenomenon),即在区间的某些部分,插值多项式的值可能会远离实际函数值,产生较大的误差。因此,在选择使用拉格朗日插值多项式拟合时,需要综合考虑数据的性质、插值节点的数量和分布等因素。

演示代码如下:

clc;clear;close all;
%% 拉格朗日插值多项式拟合
% 定义要拟合的原始数据点
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
y = [2, 3, -5, 3, 5, 11, -2, 3, 7, -7];

% 定义要插值的点
x_interp = 1:0.01:10;

% 使用拉格朗日插值法拟合多项式
n = length(x);
p = zeros(size(x_interp));
for i = 1:n
    L = ones(size(x_interp));
    for j = 1:n
        if j ~= i
            L = L .* (x_interp - x(j)) / (x(i) - x(j));
        end
    end
    p = p + y(i) * L;
end

% 绘制原始数据点和插值结果
figure;
plot(x, y, '*', x_interp, p, '-', 'LineWidth', 2); % 拟合曲线

% 添加图例和标签
legend('原始数据', '拟合曲线','Fontsize',11);
xlabel('数据序号','Fontsize',12);
ylabel('数据大小','Fontsize',12);
title('拉格朗日插值多项式拟合','Fontsize',12);
grid on;

 

b785ca000f0b2e43dba298d2c7e3e9fa.png

拉格朗日插值多项式拟合

 

3.牛顿插值多项式拟合

牛顿插值多项式拟合是一种数学方法,用于通过已知的数据点来构造一个多项式函数,以便在未知的数据点处进行预测或估计。这种方法的核心在于使用差商的概念和牛顿插值公式来生成多项式

首先,差商是一系列与函数值及其导数有关的量,通过计算这些差商,可以构建出牛顿插值多项式。牛顿插值多项式的优点在于,每增加一个新的数据点(或称为节点),插值多项式只需要增加一项,这使得递推运算变得相对容易

具体地,牛顿插值多项式拟合的过程大致如下:首先,根据已知的数据点计算出各阶差商。然后,利用这些差商和牛顿插值公式,可以构建出一个多项式,该多项式通过所有的已知数据点。最后,使用这个多项式来估计未知数据点的值。

需要注意的是,虽然牛顿插值多项式拟合在许多情况下都能提供较好的结果,但它也有一些局限性。例如,当数据点的分布不均匀或者存在较大的噪声时,牛顿插值多项式可能无法给出准确的预测。此外,如果多项式的阶数选择不当,也可能导致过拟合或欠拟合的问题。

因此,在使用牛顿插值多项式拟合时,需要综合考虑数据的性质、插值节点的数量和分布等因素,以确保得到准确且可靠的结果。同时,也可以结合其他方法(如曲线拟合、多项式拟合等)来进行比较和验证,以提高预测的准确性。

演示代码如下:

clc;clear;close all;
%% 牛顿插值法拟合多项式
% 定义要拟合的原始数据点
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
y = [2, 3, -5, 3, 5, 11, -2, 3, 7, -7];

% 定义要插值的点
x_interp = 1:0.01:10;

% 使用牛顿插值法拟合多项式
n = length(x);
F = zeros(n, n); %用于存储差商
F(:,1) = y';
for j = 2:n
    for i = j:n
        F(i,j) = (F(i,j-1) - F(i-1,j-1)) / (x(i) - x(i-j+1));
    end
end

% 计算插值多项式在给定点上的值
p = zeros(size(x_interp));
for k = 1:length(x_interp)
    P = F(1,1);
    for j = 2:n
        term = F(j,j);
        for i = 1:j-1
            term = term * (x_interp(k) - x(i));
        end
        P = P + term;
    end
    p(k) = P;
end

% 绘制原始数据点和插值结果
plot(x, y, '*', x_interp, p, '-', 'LineWidth', 2); % 拟合曲线
legend('原始数据', '拟合曲线','Fontsize',11);
xlabel('数据序号','Fontsize',12);
ylabel('数据大小','Fontsize',12);
title('牛顿插值多项式拟合','Fontsize',12);
grid on;

 

6b28123462967dc8436eaf61e86aa3d5.png

牛顿插值多项式拟合

 

(本文为CSDN“光学码农”原创,转载须注明本文网址,违者必究!)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1586796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习大数据,所需要的java(Maven)基础(1)

文章目录 使用Maven的优势第三方jar包添加第三方jar包获取jar包之间的依赖关系jar包之间的冲突处理将项目拆分成多个工程模块 实现项目的分布式部署Maven是什么自动化构建工具构建的概念构建环节自动化构建 Maven如何使用安装Maven核心程序maven联网问题Maven中的settings配置在…

【vue】v-bind动态属性绑定

v-bind 简写:value <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><styl…

4月跨境选品攻略:四类爆品机会,抢占市场流量!

我们来聊聊4月份海外电商的选品&#xff0c;4月份开始进入年春季&#xff0c;在西方人们开始更多的户外活动&#xff0c;阳光更加明媚&#xff0c;所以哪些产品在这个季节很好销售呢&#xff1f; 第一类&#xff1a;墨镜 谷歌搜索过去五年的搜索数据显示&#xff0c;每年4月份…

变速齿轮原理分析及检测方案

据FairGaurd游戏加固观察&#xff0c;在游戏面临的众多外挂风险中&#xff0c;除了常见的内存修改、模拟点击、注入挂等作弊手段&#xff0c;黑灰产还常用「变速」手段实现作弊。 游戏安全风险分布占比图 「变速」顾名思义是指改变游戏运行速度。具体原理为通过 HOOK 游戏内时…

遥控小车电子方案

遥控小车的功能开发主要包括以下几个方面&#xff1a; 1.基本功能开发&#xff1a; 前进、后退、左转、右转&#xff1a;通过遥控器上的控制按钮&#xff0c;实现小车的前进、后退、左转和右转。加速、减速&#xff1a;通过遥控器上的油门控制按钮&#xff0c;实现小车的加速…

Can Transformer and GNN Help Each Other?

ABSTRACT 尽管 Transformer 在自然语言处理和计算机视觉方面取得了巨大成功&#xff0c;但由于两个重要原因&#xff0c;它很难推广到中大规模图数据&#xff1a;(i) 复杂性高。 (ii) 未能捕获复杂且纠缠的结构信息。在图表示学习中&#xff0c;图神经网络&#xff08;GNN&…

论文笔记:NEFTune: Noisy Embeddings Improve Instruction Finetuning

iclr 2024 reviewer 评分 5666 1 论文思路 论文的原理很简单&#xff1a;在finetune过程的词向量中引入一些均匀分布的噪声即可明显地提升模型的表现 2 方法评估

CUDA与cuDNN详细安装教程(最新)

写在前面&#xff1a; 在深度学习中&#xff0c;我们常常要对图像数据进行处理和计算&#xff0c;而处理器CPU因为需要处理的事情多&#xff0c;并不能满足我们对图像处理和计算速度的要求&#xff0c;显卡GPU就是来帮助CPU来解决这个问题的&#xff0c;GPU特别擅长处理图像数…

2024 年“认证杯”数学中国数学建模网络挑战赛

题目 C题 云中的海盐 巴黎气候协定提出的目标是&#xff1a;在 2100 年前&#xff0c;把全球平均气温相对于工业 革命以前的气温升幅控制在不超过 2 摄氏度的水平&#xff0c;并为 1.5 摄氏度而努力。 但事实上&#xff0c;许多之前的研究已经指出&#xff0c;全球的碳排放以及…

【面试八股总结】进程(二)

参考资料 &#xff1a;小林Coding、阿秀、代码随想录 一、进程调度 当⼀个进程的状态发⽣改变时&#xff0c;操作系统需要考虑是否要换⼀个进程执行&#xff0c;这就需要⽤到“进程调度算法”。 1. 调度目标 不同的调度算法具有不同的特性&#xff0c;因为使用以下标准比较…

Codewars:找到奇数 int

Codewars&#xff1a;找到奇数 int 给定一个数组&#xff0c;找到出现次数为奇数的整数。在数组中&#xff0c;总会有一个整数出现奇数次&#xff0c;尽管其他数字可能会出现多次。 例子&#xff1a; 输入&#xff1a;findOdd([20, 1, 1, 2, 2]) 输出&#xff1a;20输入&…

Thingsboard PE智慧运维仪表板实例(一)【智慧排口截污实例】

1、仪表板总览 以该实际落地项目为案例,跟着我一起搭建智慧运维大屏!社区版和专业版都通用。本文是致力于快速搭建,所以不会详细去讲Thingsboard的知识点,只讲如何配置和使用部件。 搭建仪表板的整体效果如下: 点击左侧设备列表可以查看设备详细页面: 2、设备 我的设备都…

为什么在深度神经网络中,网络权重的初始化很重要?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 在深度神经网络中&#xff0c;网络权重的初始化非常关键&#xff0c;因为它对网络的训练速度、收敛能力以及最终的性能都有重大影响。具体来说&#xff0c;权重初始化的重要性主要体现在以下几个方面&a…

防火墙用户管理技术——AAA

目录 一.AAA功能 (1).认证方式 (2).授权方式 (3).计费方式 二.RADUIUS协议 三.用户组织架构及管理 管理员认证登录方式 1.console 2.web 3.telnet 4.ssh 5.ftp 四.认证方式 五.AAA远程登录 1.端口添加IP地址达到互通 2.AAA视图进行配置 3.结果​编辑 一.AAA功能…

CST电磁仿真软件的设置变更与问题【官方教程】

保存结果的Result Navigator 积累的结果一目了然&#xff01; 用户界面上的Result Navigator 在一个仿真工程中更改变量取值进行仿真分析或者改变设置进行仿真分析时&#xff0c;之前的1DResult会不会消失呢&#xff1f; 1D Result&#xff1a;CST中1D Result指的是Y值取决…

Redis中的集群(六)

集群 ASK错误 在进行重新分片期间&#xff0c;源节点向目标节点迁移一个槽的过程中&#xff0c;可能会出现这样一种情况:属于被迁移槽的一部分键值对保存在源节点里面&#xff0c;而另一部分键值对则保存在目标节点里面。当客户端向源节点发送一个与数据库有关的命令&#xf…

科研学习|可视化——相关性结果的可视化

一、相关性分析介绍 相关性分析是指研究两种或者两种以上的变量之间相关关系的统计分析方法&#xff0c;一般分析步骤为&#xff1a; 1&#xff09;判断变量间是否存在关联&#xff1b;2&#xff09;分析关联关系&#xff08;线性/非线性&#xff09;、关联方向&#xff08;正相…

UE5、CesiumForUnreal实现加载建筑轮廓GeoJson数据生成白模功能

1.实现目标 在UE5.3中,通过加载本地建筑边界轮廓面GeoJson数据,获取底面轮廓和楼高数据,拉伸生成白模,并支持点选高亮。为防止阻塞Game线程,使用了异步任务进行优化,GIF动图如下所示: 其中建筑数量:128871,顶点索引数量:6695748,三角面数量:2231916,顶点数量:165…

4.11 QT tcp群聊

头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpSocket>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private …

51单片机学习笔记——LED点亮

一、独立按键控制LED元器件和原理图 根据厂家给的原理图找到独立按键模块&#xff0c;观察下图我们知道按钮的一个头接GND&#xff0c;一头接IO口。由此可知我们如果需要使用第一个按钮则需要用p31。 二、独立按键控制LED程序 程序编写需要使用到IF else语句 当如果P310时P20…