拉格朗日插值和数值微积分

news/2024/12/15 22:17:02/文章来源:https://www.cnblogs.com/ColaBlack/p/18592083

+++
date = '2024-11-30T15:26:27+08:00'
draft = true
title = '拉格朗日插值和数值微积分'

+++

初次发布于我的个人文档。(每次都是个人文档优先发布哦)

本文想简要介绍和推导一下拉格朗日插值和数值积分方法。

什么是插值?

所谓的插值就是已知几个离散点的信息视图求一个满足这些信息的函数的过程。

如拉格朗日插值和牛顿插值就是已知f(x)在若干点的函数值希望找一个多项式函数穿过这些点。

而艾尔米特插值则更进一步要求函数在各个点的各阶导数值都等于指定的值。

本文只介绍最基础的拉格朗日插值和牛顿插值。

插值的唯一性

这两种插值方法都是已知一系列点$(x_i,y_i)$,找一个多项式p(x)它穿过了这些点。

其实这个问题你应该很容易就能找到第一个方法,待定系数法嘛。

我们假设$p(x)=a_0+a_1x+a_2x+...+a_nx^n$

这里有n+1个系数,所以我们需要给定n+1个不同的点,或者说n+1个点需要用n次插值多项式插值。

如果我们将这n+1个点代入就能得到

$a_0+a_1x_i+a_2x_i+...+a_nx_i^n=y_i$

显然,这是一个线性方程组,并且还有更令人兴奋的,

它的系数矩阵的行列式就是范德蒙德行列式。

从而,其系数矩阵的行列式是$x_i-x_j$的乘积,又由于这n+1个点是不同的,所以它的系数矩阵的行列式不为0。

那么根据克莱姆法则,这个线性方程组就有唯一解。

所以插值多项式是唯一的。

拉格朗日插值

那么怎么求插值多项式呢?

你是可以硬解刚刚的方程组啦,但是这有点痛苦。

拉格朗日的方法是,这样的:

你不是要求$p(x_i)=y_i$吗?

如果我能找到一系列多项式$l_k(x)$在$x_k$处取1,其他地方(指$x_1,x_2,x_3,...,x_n$但不包含$x_k$)取0,

那么p(x)不就是$y_i l_k(x)$吗?

这就是拉格朗日插值法的思想。

其中$l_k(x)$被称为插值基函数。

那么我们怎么找到插值基函数呢?

其实很简单,$l_k(x)$在其他点取0从而其他点都是插值基函数的零点,所以插值基函数$l_k(x)$有因子

$$\prod_{i \neq k}(x-x_i)$$

那么我们怎么保证$l_k(x)$在$x_k$处取1呢?

很简单啊,把$x_k$代入刚刚的可能的因子,把代入的结果除掉不就行了?

也就是说$l_k(x)=\frac{\prod_{i \neq k}(x-x_i)}{\prod_{i \neq k}(x_k-x_i)}$

这就是拉格朗日插值基函数了。

则拉格朗日插值多项式就是

$$p(x)=\sum_{k=1}^n y_k l_k(x)$$

这就是拉格朗日插值公式了。

把拉格朗日插值进一步优化,你就能得到埃特金插值和牛顿插值。

这个就不多介绍了,比较复杂而且插值公式是唯一的,你用任何方法得到的插值公式都是一样的。而且市面上大把的直接计算插值的软件和库,他们直接内置了其他的插值方法。

拉格朗日插值余项

下面简单给个拉格朗日插值余弦的结论,其定理的证明网上导出都是,我也没必要再赘述了。

关于拉格朗日插值的误差,有如下的拉格朗日插值余项定理

设[a,b]上有插值节点$x_0,x_1,...,x_n$,f(x)在[a,b]上有连续的直到n+1阶导数,且希望$f(x_i)=y_i$,

那么就有当$x \in [a,b]$时,有

余项$R_n(x)=f(x)-p_n(x)=\frac{f{(n+1)}(\xi)}{(n+1)!}\prod_{k=0}n(x-x_k)$

其中$\xi \in [a,b]$

这就是拉格朗日插值的余项了。由于插值多项式是唯一的,所以其他的插值方法的余项也是这个。

数值积分方法

下面我们来介绍一下怎么用插值法来得到数值方法计算函数积分。

对于大部分函数,我们其实都是很难求其积分的,甚至很多函数例如$e{x2}$这样的函数压根就没有初等原函数。所以我们需要寻找数值方法来计算他们的积分。

一种可能的思路就是用刚刚的插值多项式来近似替代这个函数。而且我们是已知了差值余项的,余项的积分就是我们数值积分方法的误差。

而这些都是多项式啊,都很好计算的。

这种求积分的数值方法得到的积分公式我们都叫做差值型的求积公式

前面我说这只是数值求积的一种思路,其最本真的思路其实是取函数的部分函数值,用他们的线性组合来近似积分。

也就是最一般化的求积公式是$\int_a^b f(x)dx=\sum_{k=0}^n A_k y_k$。

只需要知道$A_k$就知道怎么求积了。

而对于插值型求积公式,我们很容易就能得到$A_k$。

插值型求积公式就是用f(x)的插值多项式近似f(x),从而有

$\int_a^bf(x)dx \approx \int_a^bp_n(x)$

再把拉格朗日插值公式代入得

$\int_a^bf(x)dx \approx \int_a^b \sum_{k=1}^n y_k l_k(x)dx$

$=\sum_{k=1}^n y_k\int_a^bl_k(x)dx$

而我们最一般的求积公式是$\int_a^b f(x)dx=\sum_{k=0}^n A_k y_k$,从而

$A_k=\int_a^b l_k(x)dx$

牛顿-科特斯公式

如果我们进一步要求,插值点的间距相等(步长为h),我们可以得到一个特殊的结论。

我们竟然将区间长度提出来了,

$\int_a^b f(x)dx=(b-a)\sum_{k=0}^n C_k y_k$

并且,$C_k$竟然还是常数。

我们称$C_k$为科特斯系数,可以直接查科特斯系数表得到,与具体的函数f(x)无关,只和你插值多项式的次数n有关!

这就是牛顿-科特斯公式。

科特斯系数表

其中n=1得到的求积公式被称为梯形公式,n=2的是辛普森公式

对牛顿-科特斯公式的玩法有很多,例如复化得到复化梯形公式和复化辛普森公式,还有递推化得到龙贝格公式等等。

还有变步长使得精度尽可能高的高斯公式等等玩法。

数值微分方法

有了积分当基石我们就可以用数值方法求解微分方程。

我们以标准的微分方程初值问题为例介绍几个简单的方法。

对微分方程

$$\frac{dy}{dx}=f(x,y)$$

我们两边同时积分得到

$$\int_{x_n}{x_{n+1}}\frac{dy}{dx}=\int_{x_n}{x_{n+1}}f(x,y)dx$$

也就是

$$y_{n+1}-y_n=\int_{x_n}^{x_{n+1}}f(x,y)dx$$

从而

$$y_{n+1}=y_n+\int_{x_n}^{x_{n+1}}f(x,y)dx$$

而如果我们可以用数值方法求出这个积分,不就解出了这个微分方程?

例如,我们直接用积分区间左端点得到的矩形的面积来近似积分(这个叫做左矩形求积公式)

得到

$$y_{n+1}=y_n+\int_{x_n}^{x_{n+1}}f(x,y)=y_n+(x_{n+1}-x_n)f(x_n,y_n)$$

这就是欧拉格式。(注意,数值微分里我们称为格式而不是公式,这里没有打错字)

你可能会发现我这里给的欧拉格式和网上一般的不一样,其实你只要设$h=x_{n+1}-x_n$(当我设了h就默认等步长了)就能得到一般的欧拉格式了。

$$y_{n+1}=y_n+hf(x_n,y_n)$$

同样地,我们可以用积分区间右端点得到的矩形面积(右矩形公式)近似积分得到

$$y_{n+1}=y_n+\int_{x_n}^{x_{n+1}}f(x,y)=y_n+(x_{n+1}-x_n)f(x_{n+1},y_{n+1})$$

类似地,我们设$h=x_{n+1}-x_n$就有,

$$y_{n+1}=y_n+hf(x_{n+1},y_{n+1})$$

这就是隐式欧拉格式了。

那如果我用区间中点的矩形,还能得到两步欧拉格式:

对微分方程

$$\frac{dy}{dx}=f(x,y)$$

我们两边同时积分得到

$$\int_{x_n-1}{x_{n+1}}\frac{dy}{dx}=\int_{x_n-1}{x_{n+1}}f(x,y)dx$$

注意,这次是从$x_{n-1}$积到$x_n$,并且我们要求步长为h,则$x_n$是积分区间中点。

有$y_{n+1}-y_{n-1}=2hf(x_n,y_n)$

从而,$y_{n+1}=y_{n-1}+2hf(x_n,y_n)$

这就是两步欧拉格式

还可以用刚刚说的梯形公式来求积分得到梯形格式,或者引入预报-矫正系统得到改进的欧拉格式

以及另外一个思路可以得到一整套的龙格-库塔方法和亚当姆斯方法。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux之slb四层负载(lvs)

负载均衡-动静分离slb四层负载LVS(Linux Virtual Server) 是一个开源的负载均衡解决方案,运行在 Linux 操作系统上,用于在多个后端服务器之间分配客户端的请求,从而实现高可用性和负载均衡。它通常用于大规模网站、应用程序和微服务的架构中,适用于高并发场景,以提高系统…

CLion配置cout打印语句快捷键

点击菜单栏的 File -> Settings->Editor -> Live Templates 点击 Define,选择 C++。 点击Apply 和 OK 保存。 当我们sout时,自动出现打印语句。 本文来自博客园,作者:海_纳百川,转载请注明原文链接:https://www.cnblogs.com/chentiao/p/18608801,如有侵权…

域名信息

引子:上一章介绍了服务器的信息收集。本篇则介绍在面对存在Web资产企业时,其域名信息该如何收集。附:完整笔记目录~ ps:本人小白,笔记均在个人理解基础上整理,若有错误欢迎指正! 2.1 域名信息引子:上一章介绍了服务器的信息收集。本篇则介绍在面对存在Web资产企业时,其…

Go单体服务开发最佳实践

转: https://www.cnblogs.com/kevinwan/p/16193504.html ------------------------------------------------------------------------------------------ 单体最佳实践的由来对于很多初创公司来说,业务的早期我们更应该关注于业务价值的交付,并且此时用户体量也很小,QPS 也…

Adobe Bridge 2025下载与安装

1、安装包 我用夸克网盘分享了「Bridge 2025」 链接:下载地址 2、安装教程(安装前关闭系统防护) 1) 下载软件安装包,双击Set-up.exe安装2) 修改安装目录,点击继续3) 点击继续,提示正在安装进度4) 安装完成,点击启动5) 启动程序

fastapi本地部署,网页调用

Fastapi本地部署: 1、启动main.py。 文件test_main.http,点击3处运行,运行接口报错: Response code: 504 (Gateway Time-out); Time: 10032ms (10 s 32 ms); Content length: 101929 bytes (101.93 kB)2、文件main.py运行。 在浏览器输入:http://10.58.71.144:8000/ 。 打…

【MySQL内核】MySQL中一条 SQL语句是如何执行的?

MySQL执行一条SQL语句,涉及到以下几个过程:1、客户端连接 要执行 SQL 语句,首先用户需要通过客户端连接到MySQL服务器,连接时需要指定用户名和密码,MySQL服务器中的连接器模块会对用户提供的用户名和密码进行验证,并检查用户是否拥有执行特定SQL语句的权限。一个用户成功…

Adobe Audition 2025各版本安装包下载与安装

1、安装包 我用夸克网盘分享了「Adobe Audition 2025」 链接:下载地址 2、安装教程(安装前关闭系统防护) 1) 下载软件安装包,双击Set-up.exe安装2) 修改安装目录,点击继续3) 点击继续,提示正在安装进度4) 安装完成,点击启动5) 启动程序…

SVN 报错 | svn: E170004: Commit failed (details follow): svn: E170004: Directory xxx is out of date

问题描述 IDEA 中通过 SVN 拉取项目后进行修改,第一次 commit 提交代码的时候成功提交,第二次修改后再提交的时候报错了,提示“Directory xxx is out of date”解决方法 报错的原因是本地项目过时了,和 svn 服务器的项目版本不一致。需要先 update 更新本地的项目,再重新修…

文件保护

文件保护 ‍ ​​ ‍一、口令保护 口令一般存放在文件对应的 FCB 或索引结点中。用户访问文件前需要先输入“口令”,操作系统会将用户提供的口令与 FCB 中存储的口令进行对比,如果正确,则允许该用户访问文件。优点:保存口令的空间开销不多,验证口令的时间开销也很小 缺点:…

文件系统的全局结构(布局)

文件系统的全局结构(布局) 一、文件系统在外存中的结构 演变过程:原始磁盘(刚被生产出来)​​物理格式化(低级格式化):划分扇区,检测坏扇区,并用备用扇区替换坏扇区(骗过OS)​​磁盘分区(分卷Volume)分为C盘、D盘等逻辑格式化完成各分区的文件系统初始化 注:逻辑…

虚拟文件系统文件系统挂载(安装)

虚拟文件系统&文件系统挂载(安装) 一、虚拟文件系统 (一)普通的文件系统 先来看不存在虚拟文件系统的普通文件系统,彼此之间实现同一功能的接口具有差异,比较混乱。 ​​ ‍ (二)VFS 虚拟文件系统 Virtual File System 为解决同时使用不同文件系统需要频繁改动底层…