CT重建笔记(三)——共轭梯度法

求解力学问题的有限元方法、CT迭代重建方法等都存在以下问题:
A x = b Ax=b Ax=b
其中, A A A为大型稀疏矩阵。利用系统矩阵的稀疏性可以把原问题缩减为一个小问题,从而加速求解。对于同样维度的问题,采用缩减法对于线性方程组问题不如特征值问题的效率提高明显。
我的毕业论文就是研究有限元模型的缩减,里面研究了一下这些方法。

关于缩减线性方程组问题、特征值问题的文献推荐,尤其是这名柏兆俊老师,我觉得他太厉害了。

书籍:
[1] Saad Y. Iterative methods for sparse linear systems[M]. Philadelphia: Society for
Industrial and Applied Mathematics, 2003.
[2] Bai Z, Demmel J, Dongarra J, et al. Templates for the solution of algebraic eigenvalue
problems: a practical guide[M]. Philadelphia: Society for Industrial and Applied
Mathematics, 2000.
[3] Gutknecht M H. A Brief Introduction to Krylov Space Methods for Solving Linear
Systems[M]. Berlin: Springer, 2007.
[4] Barrett R, Berry M, Chan T F, et al. Templates for the solution of linear systems:
building blocks for iterative methods[M]. Philadelphia: Society for Industrial and Applied
Mathematics, 1994.经典论文:
[5] Lanczos C. An Iteration Method for the solution of the Eigenvalue Problem of Linear
Differential and Integral Operators[J]. Journal of research of the National Bureau of
Standards, 1950(4).
[6] Arnoldi W E. The principle of minimized iterations in the solution of the matrix
eigenvalue problem[J]. Quarterly of Applied Mathematics, 1951(1).

求解线性方程组

线性方程组: A x = b Ax=b Ax=b
方阵(解的个数等于方程个数): x = A − 1 b x=A^{-1}b x=A1b

方程组超定时(解的个数少于方程个数): x = ( A T A ) − 1 A T b x=(A^TA)^{-1} A^Tb x=(ATA)1ATb
推导:
优化问题: x = a r g m i n f ( x ) x = argmin \space f(x) x=argmin f(x)
目标函数: f ( x ) = ∣ ∣ A x − b ∣ ∣ 2 2 = ( A x − b ) T ( A x − b ) = x T A T A x − 2 x T A T b − b T b f(x) = ||Ax-b||_2^2 = (Ax-b)^T (Ax-b) = x^TA^TAx - 2x^TA^Tb - b^Tb f(x)=∣∣Axb22=(Axb)T(Axb)=xTATAx2xTATbbTb
梯度: ∂ x f ( x ) = 2 A T ( A x − b ) \partial_x f(x) = 2A^T(A x- b) xf(x)=2AT(Axb)
由梯度为0得到: x = ( A T A ) − 1 A T b x=(A^TA)^{-1} A^Tb x=(ATA)1ATb

方程组欠定时(解的个数多于方程个数): x = A T ( A A T ) − 1 b x=A^T(AA^T)^{-1}b x=AT(AAT)1b
推导:
优化问题: x = a r g m i n f ( x ) x = argmin \space f(x) x=argmin f(x)
目标函数: f ( x ) = ∣ ∣ x ∣ ∣ 2 2 + Λ ( A x − b ) f(x) = ||x||_2^2 + \Lambda (Ax-b) f(x)=∣∣x22+Λ(Axb) Λ = d i a g ( λ ) \Lambda=diag(\lambda) Λ=diag(λ)
梯度: ∂ x f ( x ) = 2 x T + Λ A , ∂ Λ f ( x ) = A x − b \partial_x f(x) = 2x^T+\Lambda A, \partial_{\Lambda} f(x) = Ax-b xf(x)=2xT+ΛA,Λf(x)=Axb
由梯度为0得到: x = A T ( A A T ) − 1 b x=A^T(AA^T)^{-1}b x=AT(AAT)1b

方阵 A A A满秩,则 A A A可逆

行数大于列数的矩形阵 A A A列满秩,则 A T A A^TA ATA可逆
推导:
A x = 0 Ax=0 Ax=0,若 A A A的列满秩,则 N u l l ( A ) = 0 Null(A)=0 Null(A)=0
因为 N u l l ( A ) = N u l l ( A T A ) Null(A)=Null(A^TA) Null(A)=Null(ATA),所以若 A A A的列满秩,则 A T A x = 0 A^TAx=0 ATAx=0的唯一解为 0 0 0,得出 A T A A^TA ATA满秩。

行数小于列数的矩形阵 A A A行满秩,则 A A T AA^T AAT可逆
推导:
A T x = 0 A^Tx = 0 ATx=0,若 A T A^T AT的列满秩( A A A的行满秩),则 N u l l ( A T ) = 0 Null(A^T)=0 Null(AT)=0
因为 N u l l ( A T ) = N u l l ( A A T ) Null(A^T)=Null(AA^T) Null(AT)=Null(AAT),所以若 A A A的行满秩,则 A A T x = 0 AA^Tx=0 AATx=0的唯一解为 0 0 0,得出 A A T AA^T AAT满秩。

如果 A A A不满秩,则 A , A T A , A A T A,A^TA,AA^T A,ATA,AAT都不可逆。
此时可用广义逆求解,广义逆可通过SVD分解、QR分解得到,之前采用C++ Eigen库发现SVD分解效率更高:
A = U Σ V T A=U\Sigma V^T A=UΣVT,奇异值按由大到小的顺序排列
A + = V Σ + U T A^+ = V\Sigma^+ U^T A+=VΣ+UT
重建图像: x = A + b x = A^+b x=A+b

[1] 线代随笔04-ATA可逆条件. https://bourneli.github.io/linear-algebra/2016/03/03/linear-algebra-04-ATA-inverse.html

可逆、奇异、正定

只有方阵才能说是否可逆

可逆
定义在域 R R R上的矩阵 A n × n A_{n\times n} An×n可逆:
A − 1 A = A A − 1 = I A^{-1}A = AA^{-1} = I A1A=AA1=I
其中, I = d i a g ( 1 ) I=diag(1) I=diag(1)为单位矩阵(identity matrix,unit matrix)
可逆-性质
r a n k ( A ) = n rank(A)=n rank(A)=n
A T i s i n v e r t i b l e A^T \space is \space invertible AT is invertible
N u l l ( A ) = 0 Null(A)=0 Null(A)=0
A [ : , 1 ] , A [ : , 2 ] , . . . A [ : , n ] A[:,1],A[:,2],...A[:,n] A[:,1],A[:,2],...A[:,n]构成 R n R^n Rn的基
A [ 1 , : ] , A [ 2 , : ] , . . . A [ n , : ] A[1,:],A[2,:],...A[n,:] A[1,:],A[2,:],...A[n,:]构成 R n R^n Rn的基
d e t ( A ) ≠ 0 det(A)\neq 0 det(A)=0
A A A的特征值不为0

奇异
d e t ( A ) ≠ 0 det(A)\neq 0 det(A)=0,则矩阵非奇异;反之,矩阵奇异。
其中, d e t ( ⋅ ) det(\cdot) det()是行列式,是一个将矩阵映射为标量的函数。
非奇异矩阵可逆。

正定
如果定义在域 R R R上的实对称矩阵 M M M,满足 x T M x > 0 , ∀ x ∈ R n x^TMx>0, \forall x \in R^n xTMx>0,xRn,则称其正定。
如果定义在域 R R R上的实对称矩阵 M M M,满足 x T M x ≥ 0 , ∀ x ∈ R n x^TMx\geq 0, \forall x \in R^n xTMx0,xRn,则称其半正定。
二次型可以写作 x T M x x^TMx xTMx,可以通过判断 M M M是否正定来确定二次型是否正定。
正定-性质
正定矩阵是可逆矩阵,其逆矩阵也正定;
正定矩阵 M M M缩放为 r M , r > 0 rM, r>0 rM,r>0,依然正定;
两个正定矩阵 M , N M,N M,N满足:若 M ≥ N M \geq N MN,则 N − 1 ≥ M − 1 N^{-1} \geq M^{-1} N1M1 M M M的第k个特征值大于 N N N的第k个特征值;
正定矩阵+正定矩阵=正定矩阵,正定矩阵+半正定矩阵=正定矩阵,半正定矩阵+半正定矩阵=半正定矩阵;
半正定矩阵的集合是凸的;
实数值函数在一点处取极值的条件:其梯度向量为0,海森矩阵为半正定。
正定矩阵的所有特征值大于0

对任意矩阵 A A A
r a n k ( A A T ) = r a n k ( A ) = r a n k ( A T ) = r a n k ( A T A ) rank(AA^T)=rank(A)=rank(A^T)=rank(A^TA) rank(AAT)=rank(A)=rank(AT)=rank(ATA)

对任意矩阵 A A A
A T A , A A T A^TA, AA^T ATA,AAT至少半正定
推导
x T A T A x = ( A x ) T ( A x ) x^TA^TAx = (Ax)^T(Ax) xTATAx=(Ax)T(Ax)
x T A A T x = ( A T x ) T ( A T x ) x^T AA^T x = (A^Tx)^T(A^Tx) xTAATx=(ATx)T(ATx)
因为向量内积 u T u = Σ i u i 2 ≥ 0 u^Tu = \Sigma_i u_i^2 \geq 0 uTu=Σiui20,所以 x T A T A x ≥ 0 , x T A A T x ≥ 0 x^TA^TAx\geq 0, x^TAA^Tx\geq 0 xTATAx0,xTAATx0
又因为 ( A T A ) T = A T A , ( A A T ) T = A A T (A^TA)^T=A^TA, (AA^T)^T=AA^T (ATA)T=ATA,(AAT)T=AAT,所以两个矩阵对称。
综上,两个矩阵至少半正定。

共轭梯度法用于正定矩阵,文献[4]证明了当矩阵 A A A半正定且系统相容(至少有一个解),则可以用共轭梯度法求解。

[1] 正定矩阵. https://en.wikipedia.org/wiki/Definite_matrix
[2] ATA对称正定的证明. https://blog.csdn.net/wu_nan_nan/article/details/75097015
[3] What happens when I use a conjugate gradient solver with a symmetric positive semi-definite matrix? https://scicomp.stackexchange.com/questions/35239/what-happens-when-i-use-a-conjugate-gradient-solver-with-a-symmetric-positive-se
[4] Convergence of the Conjugate Gradient Method on Singular Systems. https://arxiv.org/abs/1809.00793.

共轭梯度法

线性方程组: A x = b Ax=b Ax=b A A A为正定矩阵 式1

求解式1等价于求解优化问题:
x ∗ = a r g m i n x ∈ R n 1 2 x T A x − x T b x^* = argmin_{x\in R^n} \frac{1}{2}x^TAx - x^T b x=argminxRn21xTAxxTb
共轭梯度法就是求解这个优化问题的一种方法。

共轭梯度法
更新公式: x ⃗ k + 1 = x ⃗ k + α k + 1 p ⃗ k + 1 \vec x_{k+1} = \vec x_k+\alpha_{k+1} \vec p_{k+1} x k+1=x k+αk+1p k+1
推出:
x ⃗ k = x ⃗ 0 + Σ j = 1 k α j p j = x ⃗ 0 + P k α ⃗ \vec x_k = \vec x_0 + \Sigma_{j=1}^k \alpha_j p_j = \vec x_0 + P_k \vec \alpha x k=x 0+Σj=1kαjpj=x 0+Pkα
其中, P k = ( p ⃗ 1 , . . . , p ⃗ k ) P_k = (\vec p_1, ..., \vec p_k) Pk=(p 1,...,p k) α ⃗ = ( α 1 , . . . , α k ) \vec \alpha = (\alpha_1, ..., \alpha_k) α =(α1,...,αk)

∣ ∣ x k − x ∗ ∣ ∣ A ≤ 2 ∣ ∣ x 0 − x ∗ ∣ ∣ A ( k − 1 ) k / ( k + 1 ) k ||x_k - x^*||_A \leq 2||x_0 - x^*||_A (\sqrt k - 1)^k/(\sqrt k + 1)^k ∣∣xkxA2∣∣x0xA(k 1)k/(k +1)k
其中, k k k为谱条件数, ∣ ∣ w ∣ ∣ A = w T A w ||w||_A=\sqrt{w^TAw} ∣∣wA=wTAw
因此,条件数越大矩阵越病态,共轭梯度法收敛很慢。
所以一般执行共轭梯度算法之前,要先进行预处理,使新的求解问题的条件数较小。

预处理
A A A拆分:
A = M − N A = M-N A=MN
其中, M M M为正定矩阵,Cholesky分解 M = R T R M=R^TR M=RTR R R R为上三角矩阵。

预处理后得到新问题:
A ^ x = b ^ \hat{A} x = \hat{b} A^x=b^
其中, A ^ = R − T A R − 1 , b ^ = R − T b \hat{A} = R^{-T}AR^{-1}, \hat{b} = R^{-T} b A^=RTAR1,b^=RTb y = R x y = Rx y=Rx
我们希望 k ( A ^ ) ≪ k ( A ) k(\hat{A}) \ll k(A) k(A^)k(A)

预条件矩阵举例:
M = d i a g ( a 11 , . . . , a n n ) M = diag(a_{11},...,a_{nn}) M=diag(a11,...,ann)
A ^ = D − 1 / 2 A D − 1 / 2 , b ^ = D − 1 / 2 b \hat{A} = D^{-1/2}AD^{-1/2}, \hat{b} = D^{-1/2}b A^=D1/2AD1/2,b^=D1/2b

[1] 共轭梯度法. https://www.cse.psu.edu/~b58/cse456/lecture20.pdf
[2] 矩阵条件数. https://leslielee.blog.csdn.net/article/details/120564282
[3] 预条件. https://math.ecnu.edu.cn/~jypan/Teaching/IMP/slides_IMP05_beamer.pdf

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

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

相关文章

人工智能之数学基础:线性代数中的线性相关和线性无关

本文重点 在线性代数的广阔领域中,线性相关与线性无关是两个核心概念,它们对于理解向量空间、矩阵运算、线性方程组以及人工智能等问题具有至关重要的作用。 定义与直观理解 当存在一组不全为0的数x1,x2,...,xn使得上式成立的时候,那么此时我们可以说向量组a1,a2...,an…

【王树森搜素引擎技术】相关性03:文本匹配(TF-IDF、BM25、词距)

链路上的相关性模型 召回海选 打分量:数万模型:文本匹配分数线性模型或双塔BERT模型 粗排 打分量:数千模型:双塔BERT,或单塔BERT模型(交叉) 精排 打分量:数百模型:单塔B…

owasp SQL 注入-03 (原理)

1: 先看一下注入界面: 点submit 后,可以看到有语法报错,说明已经起作用了: 报如下的错误: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near at line 1 2:…

项目实战--网页五子棋(游戏大厅)(3)

我们的游戏大厅界面主要需要包含两个功能&#xff0c;一是显示用户信息&#xff0c;二是匹配游戏按钮 1. 页面实现 hall.html <!DOCTYPE html> <html lang"ch"> <head><meta charset"UTF-8"><meta name"viewport"…

【Idea】编译Spring源码 read timeout 问题

Idea现在是大家工作中用的比较多的开发工具&#xff0c;尤其是做java开发的&#xff0c;那么做java开发&#xff0c;了解spring框架源码是提高自己技能水平的一个方式&#xff0c;所以会从spring 官网下载源码&#xff0c;导入到 Idea 工具并编译&#xff0c;但是发现build的时…

5 分钟复刻你的声音,一键实现 GPT-Sovits 模型部署

想象一下&#xff0c;只需简单几步操作&#xff0c;就能生成逼真的语音效果&#xff0c;无论是为客户服务还是为游戏角色配音&#xff0c;都能轻松实现。GPT-Sovits 模型&#xff0c;其高效的语音生成能力为实现自然、流畅的语音交互提供了强有力的技术支持。本文将详细介绍如何…

网络变压器的分类

网络变压器是局域网(LAN)中各级网络设备中必备的元件。它们的主要功能是传输数据&#xff0c;增强信号&#xff0c;并提供电气隔离&#xff0c;以防雷保护和匹配阻抗。网络变压器也被称为数据泵或网络隔离变压器。它们广泛应用于网络交换机、路由器、网卡、集线器等设备中。 网…

大数据时代的璀璨明珠:机器学习引领的智能应用革新与深度融合探索

欢迎大家阅读&#xff1a; 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C/C题海汇总,AI学习,c的不归之路,等方面的知识,羑悻的小杀马特.关注算法,c,c语言,ubuntu,linux,数据结构领域.https://blog.csdn.net/2401_82648291?spm1010.2135.3001.5343 目录 技术前沿&#xff1a…

【C++】如何从源代码编译红色警戒2地图编辑器

【C】如何从源代码编译红色警戒2地图编辑器 操作视频视频中的代码不需要下载三方库&#xff0c;已经包含三方库。 一、运行效果&#xff1a;二、源代码来源及编程语言&#xff1a;三、环境搭建&#xff1a;安装红警2安装VS2022下载代码&#xff0c;源代码其实不太多&#xff0c…

封装Redis工具类

基于StringRedisTemplate封装一个缓存工具类,满足以下需求: 方法1:将任意Java对象序列化为json并存储在string类型的key中,并且可以设置TTL过期时间 方法2:将任意Java对象序列化为json并存储在string类型的key中,并且可以设置TTL过期时间,用于处理缓存击穿问题 方法3:根据指定的…

三电平空间矢量详解

0. 前言 空间矢量PWM控制策略是依据变流器空间电压切换来控制变流器的一种新颖思路的控制策略。最早由日本学者在20世纪80年代初针对交流电动机变频驱动而提出的,主要思路在于抛弃了原有的正弦波脉宽调制,而是采用逆变器空间电压的矢量以获得准圆形旋转磁场,从而在不高的开关…

Go 切片:用法和本质

要想更好的了解一个知识点&#xff0c;实战是最好的经历。 题目 我这里放一道题目&#xff1a; package mainimport "fmt"func SliceRise(s []int) {s append(s, 0)for i : range s {s[i]}fmt.Println(s) }func SlicePrint() {s1 : []int{1, 2}s2 : s1s2 append…

蓝桥杯备考:堆和priority queue(优先级队列)

堆的定义 heap堆是一种特殊的完全二叉树&#xff0c;对于树中的每个结点&#xff0c;如果该结点的权值大于等于孩子结点的权值&#xff0c;就称它为大根堆&#xff0c;小于等于就叫小根堆&#xff0c;如果是大根堆&#xff0c;每个子树也是符合大根堆的特征的&#xff0c;如果是…

快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)

本文基于服务器端环境展开&#xff0c;使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版&#xff0c;仅包含Conda和Python&#xff0c;如果只做深度学习&#xff0c;可使用miniconda。 [注]&#xff1a;Anaconda、Conda与Miniconda Conda&#xff1a;创建和管…

springboot医院信管系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…

《自动驾驶与机器人中的SLAM技术》ch8:基于预积分和图优化的紧耦合 LIO 系统

和组合导航一样&#xff0c;也可以通过预积分 IMU 因子加上雷达残差来实现基于预积分和图优化的紧耦合 LIO 系统。一些现代的 Lidar SLAM 系统也采用了这种方式。相比滤波器方法来说&#xff0c;预积分因子可以更方便地整合到现有的优化框架中&#xff0c;从开发到实现都更为便…

微信消息群发(定时群发)-UI自动化产品(基于.Net平台+C#)

整理 | 小耕家的喵大仙 出品 | CSDN&#xff08;ID&#xff1a;lichao19897314&#xff09; 关联源码及工具下载https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/…

ESP8266-01S、手机、STM32连接

1、ESP8266-01S的工作原理 1.1、AP和STA ESP8266-01S为WIFI的透传模块&#xff0c;主要模式如下图&#xff1a; 上节说到&#xff0c;我们需要用到AT固件进行局域网应用&#xff08;ESP8266连接的STM32和手机进行连接&#xff09;。 ESP8266为一个WiFi透传模块&#xff0c;和…

动手学大数据-3社区开源实践

目录 数据库概览&#xff1a; MaxComput&#xff1a; HAWQ&#xff1a; Hologres&#xff1a; TiDB&#xff1a; Spark&#xff1a; ClickHouse&#xff1a; Apache Calcite 概览 Calcite RBO HepPlanner 优化规则&#xff08;Rule&#xff09; 内置有100优化规则 …

WPS数据分析000004

目录 一、表格阅读技巧 冻结窗格 拆分窗口 新建窗口 阅读模式 护眼模式 二、表格打印技巧 打印预览 打印缩放 打印区域 打印标题 分页打印 打印位置 页眉页脚 逐份打印 三、表格保护技巧 锁定单元格 隐藏公式 文档权限 文件加密 一、表格阅读技巧 冻结窗…