当前位置: 首页>編程日記>正文

从拉格朗日插值法到范德蒙行列式

从拉格朗日插值法到范德蒙行列式

之前我写过一篇文章:如何理解牛顿插值法?其中解释了什么是插值法?为什么要有插值法?大家对此感兴趣可以去看看。

还有另外一种插值法,叫做拉格朗日插值法,也是以大牛冠名的,我们来看看它是怎么推导的?

1 拉格朗日插值法

比如说,已知下面这几个点,我想找到一根穿过它们的曲线:

使用多项式画出这根曲线是完全可行的,关于这点可以参看我写的如何理解泰勒公式?。

我们可以合理的假设,这根曲线是一个二次多项式:

y = a_0 + a_1x + a_2x^2

这是因为有三个已知的点,可以通过下列方程组解出这个二次多项式:

\begin{cases}    y_1 = a_0 + a_1x_1 + a_2x_1^2\\    y_2 = a_0 + a_1x_2 + a_2x_2^2\\    y_3 = a_0 + a_1x_3 + a_2x_3^2\end{cases}

不过这里不打算通过解方程来得到这根二次曲线,我们来看看拉格朗日是怎么解出这根曲线的?

1.1 拉格朗日的思考

约瑟夫·拉格朗日伯爵(1736 - 1813),可能是这么思考的。

首先,肯定得是二次曲线,这个之前我们就已经说明过了。

其次,拉格朗日认为可以通过三根二次曲线相加来达到目标。那这是怎么的三根二次曲线呢?

第一根曲线f_1(x) ,在x_1 点处,取值为1,其余两点取值为0:

为什么这么做?看下去就知道了。

第二根曲线f_2(x) ,在x_2 点处,取值为1,其余两点取值为0:

第三根曲线f_3(x) ,在x_3 点处,取值为1,其余两点取值为0:

这三根曲线就是拉格朗日需要的,我们来看看为什么?

  • y_1f_1(x) 可以保证,在x_1 点处,取值为y_1 ,其余两点取值为0。

  • y_2f_2(x) 可以保证,在x_2 点处,取值为y_2 ,其余两点取值为0。

  • y_3f_3(x) 可以保证,在x_3 点处,取值为y_3 ,其余两点取值为0。

那么:

f(x)=y_1f_1(x)+y_2f_2(x)+y_3f_3(x)

可以一一穿过这三个点,我们来看看:

此处有互动内容,点击此处前往操作。

拉格朗日伯爵说,看,这三根曲线就可以组成我在寻找的曲线:

真的是非常精彩的思考啊。

1.2 插值法的推导

到了严格化的时候了,我们用符号来表示f_i(x_j),i=1,2,3,j=1,2,3 。

首先,f_i 必须是二次函数。

其次,需要满足的条件:

f_i(x_j)=\begin{cases}1&i=j\\0&i\ne j\end{cases}

那么,如下构造f_1(x) 很显然可以满足上述条件(代值进去就可以验算):

\displaystyle f_1(x)=\frac{(x-x_2)(x-x_3)}{(x_1-x_2)(x_1-x_3)}

更一般的有:

\displaystyle f_i(x)=\prod_{j\ne i}^{1\leq j \leq 3}\frac{(x-x_j)}{(x_i-x_j)}

因此,最终我们得到:

\displaystyle f(x)=\sum_{i=1}^3 y_if_i(x)

这就是拉格朗日插值法。上面的思路要推广到更多点的插值也非常容易。

牛顿插值法也是多项式插值法,拉格朗日插值法也是多项式插值法,那么,两者得到的多项式是否是同一个多项式?

2 拉格朗日插值法、牛顿插值法、范德蒙行列式

要回答刚才提出的问题,得看看我们最早提出的方程组怎么解?

\begin{cases}    y_1 = a_0 + a_1x_1 + a_2x_1^2\\    y_2 = a_0 + a_1x_2 + a_2x_2^2\\    y_3 = a_0 + a_1x_3 + a_2x_3^2\end{cases}

(x_1,y_1),(x_2,y_2),(x_3,y_3) 这三个点是已知的,所以上面实际是一个线性方程组:

\underbrace{\begin{pmatrix}y_1\\y_2\\y_3\end{pmatrix}}_{\vec{y}}=\underbrace{\begin{pmatrix}1&x_1&x_1^2\\1&x_2&x_2^2\\1&x_3&x_3^2\end{pmatrix}}_{A}\underbrace{\begin{pmatrix}a_0\\a_1\\a_2\end{pmatrix}}_{\vec{a}}

简写就是:

\vec{y}=A\vec{a}

A 就是所谓的范德蒙矩阵,|A| 自然就是范德蒙行列式。

根据矩阵与线性方程组解的关系,如果|A|\ne 0 ,那么此方程就只有唯一的解,自然牛顿插值法、拉格朗日插值法得到的就是同一根多项式曲线。

求一下|A| ,先把r_2-r_1,r_3-r_1 ,得到(r_1 表示第一行,以此类推。这么做是不会改变行列式的值的):

\begin{align*}    |A|&=\begin{vmatrix}1&x_1&x_1^2\\0&x_2-x_1&x_2^2-x_1^2\\0&x_3-x_1&x_3^2-x_1^2\end{vmatrix}\\        &=\begin{vmatrix}x_2-x_1&x_2^2-x_1^2\\x_3-x_1&x_3^2-x_1^2\end{vmatrix}\\        &=(x_3-x_1)(x_3-x_2)(x_2-x_1)\end{align*}

从给出的三个点来看,x_1,x_2,x_3 都不相等,所以|A|\ne 0 。

所以,牛顿插值法、拉格朗日插值法得到的是同一根多项式曲线。

文章最新版本在(可能不定期更新):从拉格朗日插值法到范德蒙行列式


https://www.fengoutiyan.com/post/14588.html

相关文章:

  • 拉格朗日三次插值例题
  • 范德蒙德行列式加边法
  • 拉格朗日线性插值
  • 拉格朗日插值恒等式
  • 三阶范德蒙行列式例题
  • 范德蒙行列式证明
  • 范德蒙行列式如何计算
  • 范德蒙行列式经典例题
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機