转载http://www.cnblogs.com/xpvincent/archive/2013/01/25/2877411.html

做三次样条曲线时,需要解三对角矩阵(Tridiagonal Matrices)。常用解法为Thomas Algorithm,又叫The tridiagonal matrix algorithm (TDMA)。它是一种基于高斯消元法的算法, 分为两个阶段:向前消元forward elimination和回代backward substitution。本文以一个6乘6矩阵为例,介绍一下使用TDMA的求解过程。

1.范例求解

步骤1: 将矩阵变为上三角矩阵

首先要把上面公式中的系数矩阵变为一个上三角矩阵。

第一行:

将上式除以b1:

可写作:

所以矩阵方程可写为:

第二行:

将变换后的第一行乘以a2,再与第二行相减,即可消去x1,得:

所以新的矩阵方程为:

同理可推,

第三行:

第四行:

第五行:

第六行:

最后得到新的上三角矩阵公式为:

步骤2:求解

x逆序可以求出,如下:

2. 一般性公式:

注意:

使用TDMA求解,系数矩阵需时diagonally dominant, 即:

3. 实现代码(C语言)

void tdma(float x[], const size_t N, const float a[], const float b[], float c[])
{
size_t n; c[] = c[] / b[];
x[] = x[] / b[]; for (n = ; n < N; n++) {
float m = 1.0f / (b[n] - a[n] * c[n - ]);
c[n] = c[n] * m;
x[n] = (x[n] - a[n] * x[n - ]) * m;
} for (n = N - ; n-- > ; )
x[n] = x[n] - c[n] * x[n + ];
}

三对角矩阵(Tridiagonal Matrices)的求法:Thomas Algorithm(TDMA)的更多相关文章

  1. Opencv 三对角线矩阵(Tridiagonal Matrix)解法之(Thomas Algorithm)

    1. 简介 三对角线矩阵(Tridiagonal Matrix),结构如公式(1)所示: aixi−1+bixi+cixx+1=di(1) 其中a1=0,cn=0.写成矩阵形式如(2): ⎡⎣⎢⎢⎢⎢ ...

  2. 三对角线性方程组(tridiagonal systems of equations)的求解

    三对角线性方程组(tridiagonal systems of equations)   三对角线性方程组,对于熟悉数值分析的同学来说,并不陌生,它经常出现在微分方程的数值求解和三次样条函数的插值问题 ...

  3. Doolitter分解 三对角矩阵分解 拟三对角分解

    #include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> # ...

  4. Broken robot CodeForces - 24D (三对角矩阵简化高斯消元+概率dp)

    题意: 有一个N行M列的矩阵,机器人最初位于第i行和第j列.然后,机器人可以在每一步都转到另一个单元.目的是转到最底部(第N个)行.机器人可以停留在当前单元格处,向左移动,向右移动或移动到当前位置下方 ...

  5. CodeForces - 24D :Broken robot (DP+三对角矩阵高斯消元 随机)

    pro:给定N*M的矩阵,以及初始玩家位置. 规定玩家每次会等概率的向左走,向右走,向下走,原地不动,问走到最后一行的期望.保留4位小数. sol:可以列出方程,高斯消元即可,发现是三角矩阵,O(N* ...

  6. Opencv 三次样条曲线(Cubic Spline)插值

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/47707679 1.样条曲线简介 样条曲 ...

  7. QuantStart量化交易文集

    Over the last seven years more than 200 quantitative finance articles have been written by members o ...

  8. poj_3070Fibonacci(矩阵快速幂)

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12732   Accepted: 9060 Descri ...

  9. bzoj1002 轮状病毒 暴力打标找规律/基尔霍夫矩阵+高斯消元

    基本思路: 1.先观察规律,写写画画未果 2.写程序暴力打表找规律,找出规律 1-15的答案:1    5    16    45    121 320 841     2205   5776 151 ...

随机推荐

  1. iOS获取运营商的相关信息

    1.导入:CoreTelephony.framework 2.添加头文件 #import <CoreTelephony/CTTelephonyNetworkInfo.h> #import ...

  2. Java基础之泛型——使用二叉树进行排序(TryBinaryTree)

    控制台程序. 1.实现针对容器类的基于集合的循环 为了让容器类类型的对象能够在基于集合的for循环中可用,类必须并且只需要满足一个要求——必须实现泛型接口java.lang.Iterable<& ...

  3. 使用Java创建RESTful Web Service

    REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移).2000年Roy Fielding博士在他的博士论文“Architectural Sty ...

  4. JAVA NIO系列(三) Buffer 解读

    缓冲区分类 NIO中的buffer用于和通道交互,数据是从通道读入缓冲区,从缓冲区中写入通道的.Buffer就像一个数组,可以保存多个类型相同的数据.每种基本数据类型都有对应的Buffer类: 缓冲区 ...

  5. VS2012离线安装Xamarin (含破解补丁)

    Xamarin离线安装包 来源于 忘忧草 特此感谢! 离线安装不成功:参考源 http://www.cnblogs.com/zjoch/p/3937014.html  / http://www.cnb ...

  6. android 内存不足的问题

    FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring project ' ...

  7. angular ng-href

    farmApp.config([ '$compileProvider', function( $compileProvider ) { $compileProvider.aHrefSanitizati ...

  8. logstash5.x改变

    5.x版本 logstash中 elasticsearch插件的workers,无法配置大于1,会提示 This plugin uses the shared and doesn't need thi ...

  9. 夺命雷公狗---DEDECMS----23dedecms修改内容页面展示的信息

    我们在网站上不管点击那个影视作品的A连接都是进入到一个同样的页面,因为他们是一个模版文件: 我们还没有对这个模版进行任何的修改,所以我们要在内容模版增加标签取出对应的影视作品,而且导航条也是按照模版上 ...

  10. 夺命雷公狗jquery---5可见选择器

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...