首页 > 其他分享 >【笔记】大一下数值分析碎碎念——插值

【笔记】大一下数值分析碎碎念——插值

时间:2023-06-21 19:22:26浏览次数:49  
标签:frac 插值 多项式 sum 笔记 cdots 碎碎念 prod

\(\newcommand\op[1]{\operatorname{#1}}\)

插值

给定数据点 \((x_i,y_i)\),要求找到函数满足 \(f(x_i)=y_i\)。

线性插值:全局信息维护,光滑性(求导),积分都不太好搞。但是原理简单。

多项式?

指数?变化快。

三角函数?周期性。

多项式插值

Weierstrass 逼近定理:设 \(f\in \op C[a,b]\),则 \(\forall \epsilon > 0\),存在多项式 \(p(x)\) 满足 \(|f(x)-p(x)| < \epsilon\) over \([a,b]\)

过 \(n\) 个点 \((x_i,y_i)\),假设多项式是 \(n-1\) 次的,则正好可以唯一解出所有系数。注意到只要有 \(x_i\) 两两不等,则必然有解,因为系数矩阵是范德蒙矩阵。

Vandermonde 矩阵的行列式是 \(\prod_{j < i}(x_i-x_j)\)

证明:

数学归纳法,\(n=1,n=2\) 显然。

\(n>2\) 时考虑每一行减去上一行的 \(x_1\) 倍,再按第一行展开,提取公因式,由此可知。

Lagrange 插值

对于每一个点 \((x_i,y_i)\),构造出多项式函数 \(l_i(x)\) 满足在 \(x_j\)(\(j \ne i\))时取 \(0\),\(x_i\) 处取 \(1\)。然后我们把所有函数各自乘上 \(y_i\) 加起来 \(f(x) = \sum l_i(x)y_i\) 即得到插值函数。

显然存在构造:

\[l_k(x) = \frac{\prod_{i \ne k} (x-x_i)}{\prod_{i\ne k}(x_k-x_i)} \]

逐次线性插值(Neville 算法)

记 \(I_{i_1,\cdots,i_n}(x)\) 为满足 \((x_{i_j},y_{i_j})\) 的多项式,那么我们可以递归计算:

\[I_{0,1,\cdots,k,l}(x) = I_{0,1,\cdots,k}(x) + \frac{I_{0,1,\cdots,k-1,l}(x)-I_{0,1,\cdots,k}(x)}{x_l-x_k}(x-x_k) \]

验证一下:显然在 \(x=x_0,\cdots,x_{k}\) 正确。在 \(x=x_l\) 处显然也正确!每步次数最多 \(+1\)。

但是直接实现复杂度爆炸,把指标换一下改成:

\[I_{0,1,\cdots,k,k+1} = I_{0,1,\cdots,k}(x) + \frac{I_{1,2,\cdots,k+1}(x) - I_{0,1,\cdots,k}(x)}{x_{k+1}-x_0}(x-x_0) \]

这下指标一定是连续子段,所以计算过程中被用到的 \(I\) 不会超过 \(O(k^2)\) 级别。

单点求值时,如需增加一个点,复杂度为 \(O(k)\),空间复杂度维持 \(O(k)\)。

优势:可以逐步比较精度。

Newton 插值

求出一组系数 \(c_n\) 使得:

\[P_n(x) = \sum_{i=0}^{n} c_i\prod_{j=0}^{i-1}(x-x_j) \]

写一些值看看:

\(P_n(x_0)= y_0 = c_0\)

\(P_n(x_1)=y_1 = c_0 + c_1(x_1-x_0)\) 得到 \(c_1 = \frac{y_1 - y_0}{x_1-x_0}\)

\(P_n(x_2) = y_2 = c_0 + c_1(x_2-x_0)+c_2(x_2-x_0)(x_2-x_1)\) 得到 \(c_2 = \frac{\frac{y_2-y_0}{x_2-x_0}- \frac{y_1-y_0}{x_1-x_0}}{x_2-x_1}\)

我们先记

\[f[x_0,\cdots,x_k]=\frac{f[x_0,\cdots,x_{k-2},x_k]-f[x_0,\cdots,x_{k-2},x_{k-1}]}{x_k-x_{k-1}}\\ f[x_0]=f(x_0) \]

于是我们就可以递归计算:

\[f(x) = f(x_0) + f[x,x_0](x-x_0) \\ f[x,x_0] = f[x_0,x_1]+f[x,x_0,x_1](x-x_1) \\ f[x,x_0,x_1] = f[x_0,x_1,x_2]+f[x,x_0,x_1,x_2](x-x_2) \\ \cdots \]

发现 \(c_k = f[x_0,\cdots,x_k]\)。

所以我们需要想办法计算 \(f[x_0,\cdots,x_k]\)。

可以数学归纳法证明:

\[f[x_0,\cdots,x_k] = \sum_{i=0}^{k} \frac{f(x_i)}{\prod_{j\ne i}^k(x_j - x_i)} \]

于是可知顺序不会影响差商,故我们可以控制参数一定是一个区间,那么又可以计算了。

另一种证明 \(c_k = f[x_0,\cdots,x_k]\) 的方法:

首先我们定义 \(f[x_0,\cdots,x_n]\) 过这些点的多项式最高次项的系数,最后我们证明这个东西就是我们上面定义的差商。接下来我们证明:

\[P_n(x) = \sum_{i=0}^{n}f[x_0,\cdots,x_i] \prod_{j=0}^{i-1}(x-x_j) \]

差分

\(\Delta f_k = f_{k+1} - f_k\)

\(\nabla f_k = f_k - f_{k-1}\)

\(\delta f_k = f_{k + \frac{1}{2}} - f_{k-\frac{1}{2}}\)

误差

\[R_n(x)= f(x)-L_n(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!}\prod_{i=0}^n(x-x_i) \]

内差。

龙格现象

Hermite 插值

过 \((x_1,y_1),\cdots,(x_n,y_n)\) 且告诉导数 \(y_1',\cdots,y_n'\),则得到 \(2n-1\) 阶插值多项式为 Hermite 插值多项式。构造:

\[H_{2n-1} = \sum_{j=1}^n y_jH_j(x)+ \sum_{j=1}^ny'_j\hat H_j(x) \\ H_j(x) = [1-2(x-x_j)l'_j(x_j)]l_j^2(x) \\ \hat H_j(x) = (x-x_j)l_j^2(x) \]

检查一下满足:

  • \(H_j(x_i) = \delta_{i,j}\)
  • \(H_j'(x_i)=0\)
  • \(\hat H_j(x_i) = 0\)
  • \(\hat H _j(x_i) = \delta_{i,j}\)

分段插值

三次样条插值

分段,每一段是三次函数,且满足最后二阶连续可导。

分段处有 \(3n-3\) 个条件,过各点有 \(n+1\) 个条件,还有两个条件需要自行补充。

  • 自然样条:补充两个端点处二阶导为 \(0\)。
  • 曲率调整样条:直接指定两个端点处的二阶导。
  • 钳制样条:指定两个断点处的一阶导。

一定有解:考虑写成矩阵,发现对角占优,所以可以求逆!

标签:frac,插值,多项式,sum,笔记,cdots,碎碎念,prod
From: https://www.cnblogs.com/imakf/p/17496951.html

相关文章

  • opencv学习笔记(五)
    Sobel算子:Sobel算子是一种常用的图像梯度算子,用于检测图像中的边缘。它基于离散的差分运算,通过计算图像在水平和垂直方向上的梯度来确定边缘的强度和方向。importcv2importnumpyasnp#读取图像image=cv2.imread('input.jpg',cv2.IMREAD_GRAYSCALE)#计算水平方向......
  • MongoDB学习笔记
    MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存......
  • 大型网站技术架构 核心原理与案例分析--阅读笔记
    第一章大型网站架构演化大型网站软件系统的特点大型网站软件系统的特点高并发、大流量高可用海量数据用户分布广法、网络情况复杂安全环境恶劣需求快速变更、发布频繁渐进式发展大型网站架构演化发展历程大型网站的技术挑战主要来自庞大的用户,高并发的访问和海量的数据,任何简单......
  • MySQL笔记整理
    SELECT0+'123.00';SELECT0+'123.0qwe';SELECT0+'qwe1';SELECT0+null;SELECT'123.00'/4;SELECT'123.0qwe'/4;SELECT'qwe1'/4;SELECT'1qwe'/4;SELECTnull/4;SELECTconvert(......
  • iOS开发笔记 - Objective-C和JavaScript的混编
    最近看了一个对Github上面编程语言使用统计的排行榜,JavaScript真可以说是一枝独秀,很难想象20年前,这个语言只是浏览器中的装饰性语言,能做的事情也就是一点特效或者检查一下要提交给服务器的表单是否满足要求。今天的JavaScript已经是一个全栈语言,从客户端到服务器无所不在。很多编程......
  • iOS开发笔记 - 语言篇之Swift
     2014年的苹果全球开发者大会(WWDC),当CraigFederighi向全世界宣布“Wehavenewprogramminglanguage”(我们有了新的编程语言)的时候,全场响起了最热烈和持久的掌声,伴随着掌声到来的语言叫Swift。接下来CraigFederighi更是毫不掩饰的告诉大家,Swift将成为主宰iOS和Mac开发的新语言,甚......
  • 图论 学习笔记
    图的基本概念和数据结构圆圈表示节点线是边图是V和E的二元组无向图:边没有方向(边是双向的)有向图:边有方向无权图:所有边的权重都是1有权图:权重不同;在不同的应用里,权重的意义不同 没有的边记作0或者无穷大,具体看实际应用 基本原则是进行搜索的时候,使无法通过这条边数据结构......
  • 线性代数-二次型-坐标变换笔记
    原来的二次型\(f\left(x_{1},x_{2},x_{3}\right)\)经过坐标变换变成了\(g\left(y_{1},y_{2},y_{3}\right)\)这个新的二次型$x^{\mathrm{T}}Ax$经过坐标变换变成$y^{\mathrm{T}}By$原来的二次型矩阵\(A\)变成了\(B\)(也是实对称矩阵)\(A\)和\(B\)之间的之间的关......
  • JVM 虚拟机笔记,不一定全,但是一定靠谱
    在学习JVM之前,先分享一则信息:2009年4月20日,Orace宣布正式以74亿美元的价格收购市值曾超过2000亿美元的Sun公司,传奇的SunMicrosystems从此落幕成为历史。一、Java虚拟机的介绍首先登场的是,虚拟机的始组:SunClassic/ExactVM,SunClassic被誉为世界上第一款商用Ja......
  • 渗透笔记:vulnhub靶机drippingblues--第一篇测试记录
    在不知道靶场的ip情况下进行扫描 出现有几个ip,但是不知道哪个是的,所以就一个个试一试namp-T4-sV-A-O-p- 192.168.13.143-T4(速度) -sV(版本扫描和开启的服务) -O(操作系统) -p-(所有端口)扫了好几个,只有一个是的,所以不是的就没有发出来了 ftp一下ip,发现有一......