插值和拟合的对比

一、定义

插值:在离散数据的基础上补插连续数,使得这条连续曲线通过全部给定的离散数据点。多项式插值可以看为一个多项式来近似代替数据向量函数,并要求多项式通过给定的数据点。(插值曲线要经过数据点。)

拟合:通过方法获得若干离散的数据,根据这些数据,我们往往希望得到一个连续的函数(曲线),这过程就叫做拟合。

逼近:只要求曲线接近型值点,符合型值点趋势。

二、区别

拟合是已知数据点,从整体上靠近它们;

插值是已知数据点并且完全经过它们;

逼近是已知曲线,或者数据,通过逼近使得构造的函数无限靠近它们。

一维插值

  • 拉格朗日插值
  • 分段插值法
  • 样条插值法

三种插值方法的不同

  1. 拉格朗日插值多项式:当节点n较大时,拉格朗日多项式的次数较高,可能出现不一致的收敛情况,而且计算复杂。随着样本点的增加,高次插值会带来误差的震动现象叫做龙格现象。
  2. 分段插值:虽然收敛,但光滑性较差
  3. 样条插值:样条插值是使用了一种名为样条的特殊分段多项式进行插值的形式。由于样条插值可以使用低阶多项式样条实现较小的插值误差,这样就避免了使用高阶多项式所出现的龙格现象,所以样条插值得到了流行。
import numpy as np
from scipy import interpolate
import pylab as plx = np.linspace(0, 10, 11)
y = np.sin(x)
x_new = np.linspace(0, 10, 101)
pl.plot(x, y, 'ro')
for kind in ['nearest', 'zero', 'slinear', 'quadratic', 'cubic']: # 插值方式
# nearest zero 为阶梯插值
# slinear 线性插值
# quadratic cubic 为2阶、3阶样条插值f = interpolate.interp1d(x, y, kind = kind)y_new = f(x_new)pl.plot(x_new, y_new, label=str(kind))
pl.legend(loc='lower right')
pl.show()

最小二乘法

  • 拟合指的是已知某函数的若干离散函数值{f1,f2,…,fn},通过调整该函数中若干待定系数f(λ1, λ2,…,λn),使得该函数与已知点集的差别(最小二乘意义)最小。

  • 如果待定函数是线性,就叫线性拟合或者线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表达式也可以是分段函数,这种情况下叫作样条拟合。

  • 从几何意义上讲,拟合是给定了空间中的一些点,找到一个已知形式、未知参数的连续曲面来最大限度地逼近这些点;而插值是找到一个(或几个分片光滑的)连续曲面来穿过这些点。

  • 选择参数c使得拟合模型与实际观测值在曲线拟合各点的残差(或离差)ek=yk-f(xk,c)的加权平方和达到最小,此时所求曲线称作在加权最小二乘意义下对数据的拟合曲线,这种方法叫做最小二乘法。

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import leastsq# 引入中文
font = {"family": "Microsoft YaHei"
}
matplotlib.rc("font", **font)# 设置字号
plt.figure(figsize=(9, 9))# 初始化数据
X = np.array([8.19, 2.72, 6.39, 8.71, 4.7, 2.66, 3.78])
Y = np.array([7.01, 2.78, 6.47, 6.71, 4.1, 4.23, 4.05])#计算以p为参数的直线与原始数据之间误差
def f(p):k,b = preturn (Y - (k * X + b))# leastsq使得f的输出数组的平方和最小,参数初始值k、b设为[1,0]
r = leastsq(f, [1, 0])# 得到计算出的最优k、b
k, b = r[0]# 可视化
plt.scatter(X, Y, s=100, alpha=1.0, marker='o', label='数据点')
x = np.linspace(0, 10, 1000)
y = k * x + b
ax = plt.gca()
plt.plot(x, y, color='r', linewidth=5, linestyle=':', markersize=20, label='拟合曲线')
plt.legend(loc=0, numpoints=1)
ax = plt.gca()
plt.plot(x, y, color='r', linewidth=5, linestyle=':', markersize=20, label='拟合曲线')
plt.legend(loc=0, numpoints=1)
plt.show()

插值、拟合和逼近的对比相关推荐

  1. 插值、拟合和逼近的区别

    插值.拟合和逼近的区别 1. 拟合 据维基百科,科学和工程问题可以通过诸如采样.实验等方法获得若干离散的数据,根据这些数据,我们往往希望得到一个连续的函数(也就是曲线)或者更加密集的离散方程与已知数据 ...

  2. 路径规划之曲线插值拟合算法分析

    关注同名微信公众号"混沌无形",有趣好文! 原文链接:机器人曲线插值拟合算法研究现状简述(包含原文PDF百度云下载链接) 上述三类曲线插值拟合算法各有各的特点,接下来对比分析这三类 ...

  3. 机器人曲线插值拟合算法研究现状简述

    混沌无形 混沌系统是世界本质,无形之中存在规律.机器人智能化发展从线性过渡到混沌,本号将分享机器人全栈技术(感知.规划.控制:软件.机械.硬件等). 38篇原创内容 公众号 [文末提供原文PDF免费下 ...

  4. 基于MATLAB的二维与三维插值拟合运算(附完整代码)

    · 一. 一维插值 interp1函数在上个博客中(如下链接)已经更新了,此处再补充两个相关例题. 基于MATLAB的数据插值运算:Lagrange与Hermite算法(附完整代码)_唠嗑!的博客-C ...

  5. 基于MATLAB的三维数据插值拟合与三次样条拟合算法(附完整代码)

    目录 一. 三维插值 例题1 二. 高维度插值拟合 格式一 格式二 格式三 格式四 格式五 例题2 三. 单变量三次样条插值 例题3 例题4 四. 多变量三次样条插值 例题6 一. 三维插值 首先三维 ...

  6. [数值分析拟合]Matlab三次样条插值拟合数据

    三次样条插值是一种运用极为广泛的工程插值算法,本文章编写的函数默认使用端点处的导数值代替给定的两端点的导数值使用三转角构造法进行插值(该函数也可传入端点导数数值进行分析),对数据进行方便而迅速的拟合( ...

  7. matlab样条插值拟合,科学网—样条函数插值拟合 - 李继存的博文

    样条函数插值拟合 2014–02–11 09:26:49 在拟合势能函数的时候, 除解析式外, 也可以利用样条函数进行拟合. 样条拟合与其插值正好相反: 已知函数在节点上的值求任意位置的值, 做插值; ...

  8. 插值,拟合,逼近的区别理解

    以平面3个点为例,通过计算过程.求解目标来理解这3个概念: 插值,3个点间插入节点来得到满足条件的曲线 比如我们有一个插值函数y=3x^2+5满足过这3个点,那么我们就可以用这个函数来计算他们之间的点 ...

  9. matlab 椭圆方程拟合,matlab中如何插值拟合求椭圆方程

    [g_fitting.rar] 使用正交多项式完成数据拟合.程序对读入的gps采样点完成曲线拟合. (2007-08-01, matlab, 1KB, 26次) [曲面拟合.rar] 这是利用matl ...

最新文章

  1. 聊聊抖音、奈飞、Twitch、大疆、快手、B站的多媒体关键技术
  2. CF 1098 C. Construct a tree
  3. 一个API调用27个NLP预训练模型:BERT、GPT-2全囊括,像导入NumPy一样容易
  4. python条件语句-Python 条件语句
  5. 注释(Annotation)
  6. 第十八篇:java操作Excel要处理和分辨的几个概念
  7. 面试题整理17 输入一个字符串判断一个字符串是否是有效ip地址
  8. STM32使用串口IDLE中断的两种接收不定长数据的方式
  9. 初级算法-12.反转字符串
  10. 第19课 - 路径搜索的综合示例
  11. 机器学习基础(四十七)—— 统计
  12. 真相了!他说:码农和程序员的区别就在这!网友炸锅了
  13. [JavaScript]45 Fresh Useful JavaScript and jQuery Techniques and Tools
  14. 多模态知识问答:MMCoQA: Conversational Question Answering over Text, Tables, and Images
  15. Toshiba转换芯片-TC358778XBG:RGB转MIPI DSI芯片资料
  16. /Volumes/TeXLive2019/install-tl: No binary platform specified/available, quitting.
  17. mui 页面无法下滑拖拽 主要体现在华为手机浏览器
  18. Java POI:如何读取Excel单元格值而不是计算公式
  19. count()--不是单组分组函数
  20. mssql sqlserver 分析函数lag lead使用说明及简介

热门文章

  1. 第7章第23节:双图排版:两张图片的错位叠加 [PowerPoint精美幻灯片实战教程]
  2. ubuntu18.04返回桌面快捷键
  3. 光学变焦----景深=景深远界-景深近界
  4. 幸运岛链LKC:打造全新的商业和经济体系,让区块链赋能商业经济
  5. 一种确定六边形螺栓中心(形心)的Opencv方法——Python实现
  6. FloC背后联邦计算
  7. 用python对数据进行主成分分析、类概念描述及特征化分析-实验报告
  8. 思维工具1: SCAMPER
  9. 怎么在计算机中搜索可移动硬盘,电脑如何识别移动硬盘
  10. Sentiment Word Aware Multimodal Refinement for MultimodalSentiment Analysis with ASR Errors