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

理论学习:三对角矩阵(Tridiagonal Matrices)的求法:Thomas Algorithm(TDMA) - 马语者 - 博客园

一般公式:

使用C++使用TDMA算法解题:

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;//构建三对角矩阵求解函数
//x[]未知数列向量; a[]三对角矩阵中下三角数组; b[]三对角矩阵对角数组;
//c[]三对角矩阵中上三角数组;N 矩阵维度; d[]是等号右侧结果矩阵
double *TDMA(double x[], double a[], double b[], double c[], double d[], int N){c[0]=c[0]/b[0];d[0]=d[0]/b[0];for(int i=1;i<N-1;i++)c[i]=c[i]/(b[i]-c[i-1]*a[i]);for(int i=1;i<N;i++)d[i]=(d[i]-d[i-1]*a[i])/(b[i]-c[i-1]*a[i]);x[N-1]=d[N-1];cout<<"x"<<N-1<<"  "<<x[N-1]<<endl;for(int i=N-2; i>=0; i--){x[i]=d[i]-c[i]*x[i+1];cout<<"x"<<i<<"  "<<x[i]<<endl;}return x;
}int main(){const int n=5;double b[n]={1,0,0,0,0};double D[n], u[n], v[n], x[n];fill(D,D+n,2);fill(u,u+n,-1);fill(v,v+n,-1);TDMA(x, u, D, v, b, n);
}

代码运行结果:

x4  0.166667
x3  0.333333
x2  0.5
x1  0.666667
x0  0.833333

三对角矩阵解算——TDMA解法(C++)相关推荐

  1. 空间谱专题13:联合解算DOA(ML/AP)

    其中作者:桂. 时间:2017-10-16  07:51:40 链接:http://www.cnblogs.com/xingshansi/p/7675380.html 前言 主要记录二维测向中,分别利 ...

  2. 单目相机三维姿态解算

    单目相机三维姿态解算 Abstract:This passage mainly describes how to solve pose(Yaw,Pitch,Roll)with signal camer ...

  3. MPU6050姿态解算1-DMP方式

    MPU6050的姿态解算方法有多种,包括硬件方式的DMP解算,软件方式的欧拉角与旋转矩阵解算,软件方式的轴角法与四元数解算.本篇先介绍最易操作的DMP方式. MPU6050基本功能 3轴陀螺仪 陀螺仪 ...

  4. 三对角系统并行算法的研究概况

    [摘   要]在科学和工程计算中,许多问题往往归结为三对角线性方程组的求解,其并行算法的研究具有重要意义.文章全面总结了当前求解三对角线性方程组的两类并行算法:直接解法和迭代解法,并介绍了其特点. [ ...

  5. hdu 4605 Magic Ball Game (在线主席树/离线树状数组)

    版权声明:本文为博主原创文章,未经博主允许不得转载. hdu 4605 题意: 有一颗树,根节点为1,每一个节点要么有两个子节点,要么没有,每个节点都有一个权值wi .然后,有一个球,附带值x . 球 ...

  6. Git 远程分支的pull与push

    远程分支信息查看 git branch -r #查看远程分支git branch -a #查看所有分支,本地和远程git remote show [remote-name] #查看远程仓库信息 其中g ...

  7. 三次样条插值三弯矩matlab_三次样条(cubic spline)插值

    当已知某些点而不知道具体方程时候,最经常遇到的场景就是做实验,采集到数据的时候,我们通常有两种做法:拟合或者插值.拟合不要求方程通过所有的已知点,讲究神似,就是整体趋势一致.插值则是形似,每个已知点都 ...

  8. aitken插值方法的c++代码_无人驾驶路径规划技术-三次样条插值曲线及Python代码实现...

    自动驾驶运动规划(Motion Planning)是无人驾驶汽车的核心模块之一,它的主要任务之一就是如何生成舒适的.碰撞避免的行驶路径和舒适的运动速度.生成行驶路径最经典方法之一就是是Sampling ...

  9. 字符串的全排列(字典序排列)

    题目描述 输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串abc,则输出由字符a.b.c 所能排列出来的所有字符串abc, acb, bac, bca, cab, cba. 题目分析 穷 ...

  10. [转]MegCup2015初赛题

    原文链接 门票题:数独有多少种对解线上没有1的填法? 这道"门票题"虽说只是"热身",但还是有一定难度的.共有245名选手通过各种方法拿到了门票.下面,我们就为 ...

最新文章

  1. [Python学习] 专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例
  2. [NOTE] sqli-labs Adv Injections
  3. 感谢球,感谢铁道部,感谢电信,我终于定到回武汉的票了
  4. 《信息安全系统设计基础》实验四 外设驱动程序设计
  5. python计算余弦距离_在Python中计算余弦距离的优化方法
  6. halcon create_ocr_class_svm 使用SVM分类器创建OCR分类器
  7. java.net.sockettimeoutexception read timed out
  8. java 递归调整为队列
  9. 算法导论2nd 10.1-7
  10. Linux 权限、磁盘操作命令-Linux基础环境命令学习笔记
  11. php7.3 mysql gd支持_配置PHP对gd库的支持
  12. If 的替代词汇:unless、in case..._60
  13. Glide加载相同地址图片,不缓存
  14. 一秒点击手机屏幕次数_抓住夏天的尾巴|与自动点击评论器邂逅一次
  15. 算法-罗马数字转成整数(leetcode13)
  16. 深度学习--概率图模型(一)
  17. 51单片机游戏(推箱子)
  18. Pacman基本使用
  19. Windows XP 启动过程jjhou
  20. 某代工大厂的勒索病毒处理案例

热门文章

  1. 如何使用FlashgameMaster修改游戏
  2. 屏蔽网站广告插件:广告终结者
  3. Java项目:图书馆借阅管理系统(java+Springboot+bootstrap+HTML+maven+Mysql)
  4. 什么是实时渲染,吃CPU还是显卡?
  5. 2022见证中国崛起从Python绘制中国地图开始:使用pyecharts最新版本绘制中国地图实例详解,个性化地图定制及常用参数解析
  6. actviti 工作流核心技术和实战-学习笔记(一)什么是工作流
  7. Xweibo插件版20110809重要补丁及下载
  8. Linux Block Driver - 1
  9. 飙泪怀旧:那些经典的老软件、老网站
  10. 信签纸有虚线怎么写_红底虚线信签纸模板