【学习笔记】插值之拉格朗日插值(Lagrange)
0 插值介绍
插值法是广泛应用于理论研究和工程实际的重要数值方法。用提供的部分离散的函数值来进行理论分析和设计都是极不方便的,因此希望能够用一个既能反映原函数特征,又便于计算的简单函数去近似原函数。
1 低次拉格朗日插值
定理:设 x 0 {x_0} x0, ⋯ {\cdots} ⋯, x n {x_n} xn是互异插值节点,则满足差值条件 p ( x i ) = y i ( i = 0 , 1 , 2 , ⋯ , n ) {p(x_i)}=y_i(i=0,1,2,\cdots,n) p(xi)=yi(i=0,1,2,⋯,n)的插值多项式 p ( x ) = a 0 + a 1 x + a 2 x 2 + ⋯ + a n x n {p(x)=a_0+a_1x+a_2x^2+\cdots+a_nx^n} p(x)=a0+a1x+a2x2+⋯+anxn是存在且唯一的。
证明:由条件可知, p ( x ) p(x) p(x)的系数 a i a_i ai满足
{ a 0 + a 1 x 0 + ⋯ + a n x 0 = y 0 a 0 + a 1 x 1 + ⋯ + a n x 1 = y 1 ⋮ a 0 + a 1 x n + ⋯ + a n x n = y n \left\{ \begin{array}{c} a_0+a_1x_0+\cdots+a_nx_0=y_0\\ a_0+a_1x_1+\cdots+a_nx_1=y_1\\ \vdots\\ a_0+a_1x_n+\cdots+a_nx_n=y_n\\ \end{array} \right. ⎩ ⎨ ⎧a0+a1x0+⋯+anx0=y0a0+a1x1+⋯+anx1=y1⋮a0+a1xn+⋯+anxn=yn
这是一个关于 a 0 , a 1 , ⋯ , a n a_0,a_1, \cdots ,a_n a0,a1,⋯,an的 n + 1 n+1 n+1元线性方程组,并注意到其系数行列式为一个范德蒙行列式,又由于 i ≠ j i \ne j i=j时 x i ≠ x j x_i \ne x_j xi=xj,于是,方程组唯一解。
以上定理的证明提供了一个求 p ( x ) p(x) p(x)的方法,这就是解方程组。但当 n n n较大时,这是很困难的。对于给定的插值点,求形如 p ( x ) = a 0 + a 1 x + a 2 x 2 + ⋯ + a n x n {p(x)=a_0+a_1x+a_2x^2+\cdots+a_nx^n} p(x)=a0+a1x+a2x2+⋯+anxn的插值多项式有不同的方法。
1.1 n=1时插值方法
先讨论 n = 1 n=1 n=1的简单情况,互异插值点 x 0 , x 1 x_0,x_1 x0,x1上的函数值分别为 f ( x 0 ) , f ( x 1 ) f(x_0),f(x_1) f(x0),f(x1)是已知的,通过两点 ( x 0 , f ( x 0 ) ) (x_0,f(x_0)) (x0,f(x0))及 ( x 1 , f ( x 1 ) ) (x_1,f(x_1)) (x1,f(x1))的插值多项式是一条直线,即两点式
L 1 ( x ) = x − x 1 x 0 − x 1 f ( x 0 ) + x − x 0 x 1 − x 0 f ( x 1 ) L_1(x)=\frac {x-x_1}{x_0-x_1}f(x_0) + \frac {x-x_0}{x_1-x_0}f(x_1) L1(x)=x0−x1x−x1f(x0)+x1−x0x−x0f(x1)
显然, L 1 ( x 0 ) = f ( x 0 ) , L 1 ( x 1 ) = f ( x 0 ) L_1(x_0)=f(x_0),L_1(x_1)=f(x_0) L1(x0)=f(x0),L1(x1)=f(x0),满足插值条件,所以 L 1 ( x ) L_1(x) L1(x)就是线性插值多项式。若记 l 0 ( x ) = x − x 1 x 0 − x 1 l_0(x)=\frac{x-x_1}{x_0-x_1} l0(x)=x0−x1x−x1, l 1 ( x ) = x − x 0 x 1 − x 0 l_1(x)=\frac{x-x_0}{x_1-x_0} l1(x)=x1−x0x−x0,则称 l 0 ( x ) , l 1 ( x ) l_0(x),l_1(x) l0(x),l1(x)为关于 x 0 x_0 x0与 x 1 x_1 x1的线性插值基函数。
于是有
L 1 ( x ) = l 0 ( x ) f ( x 0 ) + l 1 ( x ) f ( x 1 ) L_1(x)=l_0(x)f(x_0)+l_1(x)f(x_1) L1(x)=l0(x)f(x0)+l1(x)f(x1)
1.2 n=2时插值方法
当 n = 2 n=2 n=2时,给定互异插值点 x 0 , x 1 , x 2 x_0,x_1,x_2 x0,x1,x2上的函数值分别为
f ( x 0 ) , f ( x 1 ) , f ( x 2 ) f(x_0),f(x_1),f(x_2) f(x0),f(x1),f(x2)
l 0 ( x ) = ( x − x 1 ) ( x − x 2 ) ( x 0 − x 1 ) ( x 0 − x 2 ) , l_0(x)=\frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)}, l0(x)=(x0−x1)(x0−x2)(x−x1)(x−x2),
l 1 ( x ) = ( x − x 0 ) ( x − x 2 ) ( x 1 − x 0 ) ( x 1 − x 2 ) , l_1(x)=\frac{(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)}, l1(x)=(x1−x0)(x1−x2)(x−x0)(x−x2),
l 2 ( x ) = ( x − x 0 ) ( x − x 1 ) ( x 2 − x 0 ) ( x 2 − x 1 ) l_2(x)=\frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)} l2(x)=(x2−x0)(x2−x1)(x−x0)(x−x1)
称为关于点 x 0 , x 1 , x 2 x_0,x_1,x_2 x0,x1,x2的二次插值基函数,它满足
l i ( x j ) = { 1 , j = i 0 , j ≠ i , i , j = 0 , 1 , 2 , ⋯ l_i(x_j)= \left\{ \begin{array}{c} 1, j = i \\ 0, j \ne i\\ \end{array},i,j=0,1,2,\cdots \right. li(xj)={1,j=i0,j=i,i,j=0,1,2,⋯
满足条件的 L 2 ( x i ) = f ( x i ) ( i = 0 , 1 , 2 ) L_2(x_i)=f(x_i)(i=0,1,2) L2(xi)=f(xi)(i=0,1,2)的二次插值多项式 L 2 ( x ) L_2(x) L2(x)可表示为
L 2 ( x ) = l 0 ( x ) f ( x 0 ) + l 1 ( x ) f ( x 1 ) + l 2 ( x ) f ( x 2 ) L_2(x)=l_0(x)f(x_0)+l_1(x)f(x_1)+l_2(x)f(x_2) L2(x)=l0(x)f(x0)+l1(x)f(x1)+l2(x)f(x2)
y = L 2 ( x ) y=L_2(x) y=L2(x)的图形是通过三点 ( x 1 , f ( x i ) ) ( i = 0 , 1 , 2 ) (x_1,f(x_i))(i=0,1,2) (x1,f(xi))(i=0,1,2)的抛物线。
1.3 举例
| x x x | 1 | 4 | 9 | 16 |
|---|---|---|---|---|
| x \sqrt{x} x | 1 | 2 | 3 | 4 |
解:
选择与 x = 5 x=5 x=5最接近的三点 x 0 = 1 , x 1 = 4 , x 2 = 9 x_0=1,x_1=4,x_2=9 x0=1,x1=4,x2=9为插值点,由
L 2 ( x ) = l 0 ( x ) f ( x 0 ) + l 1 ( x ) f ( x 1 ) + l 2 ( x ) f ( x 2 ) L_2(x)=l_0(x)f(x_0)+l_1(x)f(x_1)+l_2(x)f(x_2) L2(x)=l0(x)f(x0)+l1(x)f(x1)+l2(x)f(x2)
得, 5 ≈ 1 ⋅ ( 5 − 4 ) ( 5 − 9 ) ( 1 − 4 ) ( 1 − 9 ) + 2 ⋅ ( 5 − 1 ) ( 5 − 9 ) ( 4 − 1 ) ( 4 − 9 ) + 3 ⋅ ( 5 − 1 ) ( 5 − 4 ) ( 9 − 1 ) ( 9 − 4 ) ≈ 2.267 \sqrt{5} \approx 1 \cdot \frac{(5-4)(5-9)}{(1-4)(1-9)}+2 \cdot \frac{(5-1)(5-9)}{(4-1)(4-9)}+ 3 \cdot \frac{(5-1)(5-4)}{(9-1)(9-4)} \approx 2.267 5≈1⋅(1−4)(1−9)(5−4)(5−9)+2⋅(4−1)(4−9)(5−1)(5−9)+3⋅(9−1)(9−4)(5−1)(5−4)≈2.267
相关文章:
【学习笔记】插值之拉格朗日插值(Lagrange)
0 插值介绍 插值法是广泛应用于理论研究和工程实际的重要数值方法。用提供的部分离散的函数值来进行理论分析和设计都是极不方便的,因此希望能够用一个既能反映原函数特征,又便于计算的简单函数去近似原函数。 1 低次拉格朗日插值 定理:设…...
无人机电力巡检系统运行流程全解读
随着电力行业体系不断完善,保障电网运营的安全成为至关重要的任务。传统的人工巡检方式在面对电力设备广泛分布和复杂工况时显得效率低下,为了解决这一难题,无人机电力巡检系统应运而生,以智能化的运行流程,为电网安全…...
有关全局变量和sizeof的题
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int i; int main() {i--;if (i > sizeof(i)){printf(">");}else{printf("<");}return 0; } 这道题结果是 > 首先对于一个全局变量,当没有对其初始化时,它…...
vue简述
vue为渐进式框架:vmmv 1.易用 有html、css、javascript基础,即可学习vue框架 2.高效、开发前端页面 非常高效 1.vue的体积小、压缩完只需要20k的大小 2.超快的虚拟dom操作js中非常多的dom操作,vue设计虚拟dom非常快 3.设计时vue底层深度优化 …...
YOLOv8 训练自己的分割数据集
之前写过一篇 使用YOLOv8训练自己的【目标检测】数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】,里面带大家整个流程走过一遍了, 这篇文章我们来介绍如何使用 YOLOv8 训练分割数据集&a…...
Python实现DDos攻击实例详解
文章目录 SYN 泛洪攻击Scapy3k 基本用法代码实现DDos 实现思路argparse 模块socket 模块代码实现Client 端程序测试后记关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案…...
微信小程序实现【点击 滑动 评分 评星(5星)】功能
wxml文件: <view class"wxpl_xing"><view class"manyidu">{{scoreContent}}</view><view><block wx:for{{scoreArray}} wx:for-item"item"><view classstarLen bindtapchangeScore data-sy"{{…...
堡垒机的用途
堡垒机的用途 堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时…...
超全超实用行业解决方案合集,覆盖十大行业数据应用需求
现代企业面对复杂的业务需求,对数据分析的需求日益增加。 从实时销售到市场趋势,从客户行为到产品优化,每个环节都依赖于数据支持。然而,传统的数据分析平台常分散在不同系统和团队中,形成数据孤岛,降低了…...
一盏茶的时间,入门 Node.js
一、.什么是 Node.js? Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于构建高性能、可伸缩的网络应用。 它采用事件驱动、非阻塞 I/O 模型,使其在处理并发请求时表现出色。 二、安装 Node.js 首先,让我们从 Node.…...
关于Java多线程的一些随笔
Synchronized与ReentrantLock有哪些相同点和不同点? 在Java中,synchronized关键字和ReentrantLock类都用于管理线程间的同步,但它们在实现方式、功能和灵活性方面存在一些差异。以下是它们的相同点和不同点: 相同点 互斥性&…...
Answering difficult questions in other way
I’m not (too) sure Q:Do you think computers make life easier? A:I’m not (too) sure, to be honest, but I reckon they do make life easier because… I can’t say for sure, but … Q:Do you think computers make lif…...
RabbitMQ教程:Linux下安装、基本命令与Spring Boot集成
RabbitMQ教程:Linux下安装、基本命令与Spring Boot集成 1. RabbitMQ简介 RabbitMQ是一个开源的消息代理和队列服务器,用于通过轻量级消息传递协议(AMQP)在分布式系统中传递消息。它支持多种编程语言,包括Java、Pytho…...
王者荣耀小游戏
第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame 运行类 package com.sxt; package com.sxt;import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.…...
JAVA小游戏“简易版王者荣耀”
第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame 运行类 package com.sxt;import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; im…...
Nginx高级
Nginx高级 第一部分:扩容 通过扩容提升整体吞吐量 1.单机垂直扩容:硬件资源增加 云服务资源增加 整机:IBM、浪潮、DELL、HP等 CPU/主板:更新到主流 网卡:10G/40G网卡 磁盘:SAS(SCSI) HDD(机械…...
深度学习中小知识点系列(三) 解读Mosaic 数据增强
前言 Mosaic数据增强,这种数据增强方式简单来说就是把4张图片,通过随机缩放、随机裁减、随机排布的方式进行拼接。Mosaic有如下优点: (1)丰富数据集:随机使用4张图片,随机缩放,再随…...
telnet-MISC-bugku-解题步骤
——CTF解题专栏—— 题目信息: 题目:这是一张单纯的图片 作者:未知 提示:无 解题附件: 解题思路: (⊙﹏⊙)这是个什么文件pcap文件分析_pcap文件打开-CSDN博客查了一下,但没看懂,…...
大数据Doris(二十九):数据导入(Insert Into)
文章目录 数据导入(Insert Into) 一、创建导入...
jmeter测试dubbo接口
本文讲解jmeter测试dubbo接口的实现方式,文章以一个dubbo的接口为例子进行讲解,该dubbo接口实现的功能为: 一:首先我们看服务端代码 代码架构为: 1:新建一个maven工程,pom文件为: 1…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
拟合问题处理
在机器学习中,核心任务通常围绕模型训练和性能提升展开,但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正: 一、机器学习的核心任务框架 机…...
使用python进行图像处理—图像滤波(5)
图像滤波是图像处理中最基本和最重要的操作之一。它的目的是在空间域上修改图像的像素值,以达到平滑(去噪)、锐化、边缘检测等效果。滤波通常通过卷积操作实现。 5.1卷积(Convolution)原理 卷积是滤波的核心。它是一种数学运算,…...
