范德蒙德和Teoplitz方程组的解法

简单介绍

工程中的很多实际问题的处理,比如说图像处理的某些情况,最后往往归结为比较容易处理的Vandermonde方程组和Teoplitz方程组的求解问题,因此对于这类特殊问题的快速求解方法就显得尤为重要。

所谓Vandermonde方程组,指的是如下方程组:
Vz=bVz=bVz=b
其中V是Vandermonde矩阵, V=V(x0,…,xn)=(11⋯1x0x1⋯xn⋮⋮⋮x0nx1n⋯xnn)V = V(x_0,\dots,x_n) = \left( {\begin{array}{ccc} 1&1& \cdots &1\\ {{x_0}}&{{x_1}}& \cdots &{{x_n}}\\ \vdots & \vdots &{}& \vdots \\ {x_0^n}&{x_1^n}& \cdots &{x_n^n} \end{array}} \right)V=V(x0​,…,xn​)=⎝⎜⎜⎜⎛​1x0​⋮x0n​​1x1​⋮x1n​​⋯⋯⋯​1xn​⋮xnn​​⎠⎟⎟⎟⎞​ 而Toeplitz方程组指的是: Tnx=bT_nx=bTn​x=b

其中TnT_nTn​是Toeplitz矩阵, Tn=(1γ1⋯γn−1γ11⋯⋮⋮⋮⋱γ1γn−1⋯γ11)T_n = \left( {\begin{array}{ccc} 1&{{\gamma _1}}& \cdots &{{\gamma _{n - 1}}}\\ {{\gamma _1}}&1& \cdots & \vdots \\ \vdots & \vdots & \ddots &{{\gamma _1}}\\ {{\gamma _{n - 1}}}& \cdots &{{\gamma _1}}&1 \end{array}} \right)Tn​=⎝⎜⎜⎜⎜⎛​1γ1​⋮γn−1​​γ1​1⋮⋯​⋯⋯⋱γ1​​γn−1​⋮γ1​1​⎠⎟⎟⎟⎟⎞​

一般矩阵的求解有各种分解,那么对于这类特殊的方程组,有么有什么特殊的解法呢?下面做一个简单的介绍。

基本思想

Vandermonde方程组

假设我们已经得到了范德蒙德逆转置的的一个分解V−T=ULV^{-T} = ULV−T=UL,那么V−1=LTUTV^-1 = L^TU^TV−1=LTUT,可以得到方程组的解为z=V−1b=LTUTbz=V^-1b=L^TU^Tbz=V−1b=LTUTb。
所以我们主要把力量放在的到范德蒙德逆转置的一个分解。

首先考虑这样的一个方程组求解:
VTv=yV^Tv = yVTv=y 这里v=(a0,a1,…an)Tv = (a_0,a_1,\dots a_n)^Tv=(a0​,a1​,…an​)T.

注意这里的VTV^TVT是带转置的,并不是原来的Vandermonde方程组的求解问题了。因为范德蒙德矩阵的特殊性,不难想到,这其实是以vvv为稀系数的多项式在(xi,yi)(x_i,y_i)(xi​,yi​)点的插值问题,如果用cic_ici​表示牛顿插值表达式的系数,其实就是kkk阶差商,我们可以通过差商之间的递推关系,找到cic_ici​
和yiy_iyi​的一个关系,进而,通过将牛顿插值多项式以某种巧妙的方式展开,找到cic_ici​和插值多项式系数aia_iai​之间的关系,换言之,就是找到了vvv和yyy之间的一个关系。这个过程比较繁琐,但是细细品味,也是很有意思的。这里考虑到期末考试将至,就不再细述了。给出一个结果,同过一步步推导,最后可以得到vvv和yyy之间的形如下面这样的一个关系:

v=ULyv = ULyv=ULy

结合前式,可以得到V−Ty=ULyV^-Ty =ULyV−Ty=ULy,有yyy的任意性,我们就得到了V−TV^-TV−T的一个形如V−T=ULV^-T=ULV−T=UL的分解,这就得到了我们想要的。

Teoplitz方程组

在说Teoplitz方程组前,可以先提一下Yule-Walker方程组,Yule-Walker方程组指的是Teoplitz方程组b=−(γ1,…,γn−1,γn)Tb = -(\gamma_1,\dots,\gamma_{n-1},\gamma_n)^Tb=−(γ1​,…,γn−1​,γn​)T(γn\gamma_nγn​自由)的特殊情况。简单地说Yule-Walker方程组的求解,是通过矩阵分块的方法,找到yky_kyk​和yk+1y_{k+1}yk+1​之间的关系,进而可以从一阶解y1y_1y1​出发,递推得到方程组的解,这一个过程所需的运算量为3n2/23n^2/23n2/2。类似于Yule-Walker方程组的求解过程,我们也可以递推地得到一般Teoplitz方程组的解,由于时间关系,就不再细述。

程序和结果

下面直接给出程序和简单的算例和结果,我这里用的环境是VS2013:

Vandermonde方程组

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define N 6int main(int argc, char** argv) {double b[N] = { 1, 2, 3, 4, 5, 6 };double x[N] = { 5, 6, 7, 8, 9, 10 };int i, k, k0;int n = N - 1;printf("要求解的方程组为:\n x = \n");for (i = 0; i < N; i++){printf("%f ", x[i]);}printf("\n b = \n");for (i = 0; i < N; i++){printf("%f\n ", b[i]);}for (k = 0; k <= n - 1; k++){for (i = n; i > k; i--){b[i] = b[i] - x[k] * b[i - 1];}}for (k0 = k; k >= 0; k--){for (i = k + 1; i <= n; i++){b[i] = b[i] / (x[i] - x[i - k - 1]);}for (i = k; i <= n - 1; i++){b[i] = b[i] - b[i + 1];}}printf("\nthe solution is :\n");for (i = 0; i <= n; i++){printf("%f \n", b[i]);}getchar();return 0;
}

Toeplitz方程组

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define N 3int main(int argc, char** argv){double gamma[N - 1] = { 0.3, 0.6 };double b[N] = { 5, 6, 7 };int n = N;int i, k;double s = 0;double zeta[N], xi[N], delta, alpha, mu, v[N], sigma[N];zeta[0] = -gamma[0];xi[0] = b[0];delta = 1.0;alpha = -gamma[0];k = 1;printf("gamma (from 1 to %d) is\n", N - 1);for (i = 0; i <= N - 2; i++){printf("%f ", gamma[i]);}printf("\n\nb  is \n");for (i = 0; i <= N - 1; i++){printf("%f ", b[i]);}while (1)//while(k<n-1){delta = (1.0 - alpha*alpha)*delta;for (i = 1; i <= k; i++) {s = s + gamma[i - 1] * xi[k - i];}mu = (b[k] - s) / delta;s = 0.0;for (i = 1; i <= k; i++) {v[i - 1] = xi[i - 1] + mu*zeta[k - i];}for (i = 1; i <= k; i++) {xi[i - 1] = v[i - 1];}xi[k] = mu;if (k >= n - 1) break;for (i = 1; i <= k; i++){s = s + zeta[k - i] * gamma[i - 1];}alpha = -(gamma[k] + s) / delta;s = 0.0;for (i = 1; i <= k; i++) {sigma[i - 1] = zeta[i - 1] + alpha*zeta[k - i];}for (i = 1; i <= k; i++) {zeta[i - 1] = sigma[i - 1];}zeta[k] = alpha;k = k + 1;}printf("\n\nsolution:\n");for (i = 0; i <= n - 1; i++) {printf("%lf\n", xi[i]);}getchar();return 0;
}

范德蒙德和Teoplitz方程组的解法相关推荐

  1. 范德蒙德矩阵在MATLAB中怎么表示,Python 之 Python与MATLAB 矩阵操作总结

    Python 之 Python与MATLAB 矩阵操作小结 一.线形代数理论基础 线形代数(linear algebra)是数学的一个分支,研究矩阵理论.向量空间.线性变换和有限维线形方程组等内容. ...

  2. 洛谷·幼儿园篮球题【including范德蒙德卷积,二项式反演

    初见安~时隔良久我又回来写多项式了[靠 还是放在题目前面吧,简单讲一下这两个东西. 一.范德蒙德卷积 可以理解为:在两个有n个石子和m个石子的堆里面共选k个石子的方案数.这样这个等式的成立就很显然了. ...

  3. 半正定Toeplitz矩阵的范德蒙德分解

    半正定Toeplitz矩阵的范德蒙德分解 Toeplitz矩阵的定义:Matrices whose entries are constant along each diagonal are calle ...

  4. C语言二维数组范德蒙,浅谈范德蒙德(Vandermonde)方阵的逆矩阵的求法以及快速傅里叶变换(FFT)中IDFT的原理...

    浅谈范德蒙德(Vandermonde)方阵的逆矩阵与拉格朗日(Lagrange)插值的关系以及快速傅里叶变换(FFT)中IDFT的原理 标签: 行列式 矩阵 线性代数 FFT 拉格朗日插值 只要稍微看 ...

  5. 浅谈范德蒙德(Vandermonde)方阵的逆矩阵的求法以及快速傅里叶变换(FFT)中IDFT的原理...

    浅谈范德蒙德(Vandermonde)方阵的逆矩阵与拉格朗日(Lagrange)插值的关系以及快速傅里叶变换(FFT)中IDFT的原理 标签: 行列式 矩阵 线性代数 FFT 拉格朗日插值 只要稍微看 ...

  6. 【校内模拟】A(容斥原理)(数位DP)(范德蒙德恒等式)(高精度)

    简要题意: 请你对满足下列条件的正整数序列 A1,A2⋯AnA_1,A_2\cdots A_nA1​,A2​⋯An​ 进行计数. ∀1≤i≤n,Li≤Ai≤Ri\forall 1\leq i\leq ...

  7. 【题解】幼儿园篮球题(范德蒙德卷积+斯特林+NTT)

    [题解]幼儿园篮球题 题目就是要我们求一个式子 \[ \sum_{i=1}^{S}{\dfrac 1 {{M\choose m_i}{N-M\choose n_i-m_i}}}\sum_{j=0}^{ ...

  8. Codeforces-1473-G. Tiles (范德蒙德卷积+快速数论变换NTT)

    题目 传送门 思路 这是题解的思路:传送门 我就再具体写写我对题解的几点理解吧. 首先,解决这个递推式的问题: ansi+1,j=∑k=1mCa+bb−k+jansi,kans_{i+1,j}=\su ...

  9. bzoj 4830: [Hnoi2017]抛硬币 [范德蒙德卷积 扩展lucas]

    4830: [Hnoi2017]抛硬币 题意:A投a次硬币,B投b次硬币,a比b正面朝上次数多的方案数,模\(10^k\). \(b \le a \le b+10000 \le 10^{15}, k ...

最新文章

  1. 一种新的高级抖动分离解析方法
  2. 芯片植入:“增强人类”的生物黑科技
  3. android的快速开发框架,FastAndroid
  4. 玩游戏计算机配置,玩游戏的电脑需要什么配置?
  5. CSS 中文字体的英文名称对照
  6. Java 面试高频提问知识点一
  7. IT报表开发者必看:别加班了,真正解放双手的低代码开发神器来了
  8. CentOS项目实例之一--操作系统安装
  9. 用jQuery实现.net 2.0 treeview客户端无刷新操作的实例
  10. springboot整合阿里云oss上传文件(图片或视频)
  11. html给下拉菜单设置背景色,如何更改下拉菜单活动背景的颜色(即。tk.列表框)在一个ttk.组合框...
  12. 阳光教练隐私政策URL
  13. 英文查重检测网站有哪些?
  14. 透射电镜测试样品的制备要求和方法
  15. 讨论世界的意义是否存在
  16. Top 和 LIMIT
  17. apex显示服务器不同步,apex云服务器不同步
  18. 2021开鲁一中高考成绩查询,2021年通辽中考所有高中学校排名 通辽重点高中分数线...
  19. SSH V2的中间人攻击
  20. 信息检索 Information Retrieval

热门文章

  1. VS Code:自动生成文件头部和函数头部注释(koroFileHeader)
  2. 6款职场发型,造就你的气质不凡!
  3. 嵌入式 Mplayer的移植、使用
  4. IDEA快捷键显示参数提示
  5. 旧电脑装html5,8年前老电脑如何升级?实战近十年的老电脑升级方案
  6. html下拉菜单全屏,下拉菜单如何居中并全屏宽显示
  7. 【HTML——落花雨(你飘摇的美丽~)】(效果+特效)
  8. 我生命中的钱事:养家!
  9. 2021.10.19练习2
  10. 模拟QQ相册上传图片(上传指定文件夹下所有的图片) 多线程上传(每个图片开辟一个子线程)