超定线性方程组Ax=b极小L1范数求解——MATLAB/Python实现

Posted Z.Q.Feng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超定线性方程组Ax=b极小L1范数求解——MATLAB/Python实现相关的知识,希望对你有一定的参考价值。

文章目录


一、前言

本文前半部分算法实现参考的为姚健康老师的论文,这篇论文在万方学术平台可以免费下载:http://d.g.wanfangdata.com.cn/Periodical_jxkx200701002.aspx

后半部分算法涉及到稀疏优化,我在之前的博客中介绍了实现原理并给出了代码,链接如下:稀疏优化L1范数最小化问题求解之基追踪准则(Basis Pursuit)——原理及其Python实现


二、问题重述

给定超定线性方程组 A x = b Ax=b Ax=b

A = [ a 11 a 12 . . . a 1 n a 21 a 22 . . . a 2 n . . . . . . . . . . . . a m 1 a m 2 . . . a m n ] ∈ R m × n ,   b = [ b 1 b 2 ⋮ b m ] ∈ R m × 1 A=\\beginbmatrix a_11&a_12&...&a_1n\\\\ a_21&a_22&...&a_2n\\\\ ...&...&...&...\\\\ a_m1&a_m2&...&a_mn\\\\ \\endbmatrix\\in R^m\\times n,\\ b=\\beginbmatrix b_1\\\\b_2\\\\\\vdots\\\\b_m \\endbmatrix\\in R^m\\times 1 A=a11a21...am1a12a22...am2............a1na2n...amnRm×n, b=b1b2bmRm×1

其中 m > n ≥ 2 m>n\\ge 2 m>n2,求 x = [ x 1 , x 2 , . . . , x n ] T ∈ R n × 1 x=[x_1,x_2,...,x_n]^T\\in R^n\\times 1 x=[x1,x2,...,xn]TRn×1,使得

min ⁡ ∥ A x − b ∥ 1 = min ⁡ ∑ i = 1 m ∣ ∑ j = 1 n a i j x j − b i ∣ (1) \\min \\left\\|Ax-b\\right\\|_1=\\min \\sum_i = 1^m|\\sum_j = 1^na_ijx_j-b_i| \\tag1 minAxb1=mini=1mj=1naijxjbi(1)

即求超定线性方程组 A x = b Ax=b Ax=b ℓ 1 \\ell_1 1 范数意义下的解,简称 ℓ 1 \\ell_1 1 范数极小化问题1

定义: x ∗ x^* x 为问题 ( 1 ) (1) (1) 的解,称 r ∗ = A x ∗ − b r^*=Ax^* - b r=Axb 为问题 ( 1 ) (1) (1) 的极小 ℓ 1 \\ell_1 1 模剩余向量。如果能求得极小 ℓ 1 \\ell_1 1 模剩余向量 r ∗ r^* r,那么相容线性方程组 A x = b + r ∗ Ax = b + r^* Ax=b+r 的解即为问题 ( 1 ) (1) (1) 的解。


二、极小模剩余向量的性质及求法

依据文献2中的说明,我们得到如下定理:

定理: 设有 2 个超定线性方程组 A x = b , B x = b Ax=b, Bx=b Ax=b,Bx=b,若存在可逆阵 P P P,使 B = A P B = AP B=AP,则这 2 个超定线性方程组的极小 ℓ 1 \\ell_1 1 模剩余向量相同。

A = [ A 1 A 2 ] A=\\beginbmatrix A_1\\\\A_2 \\endbmatrix A=[A1A2]( A 1 A_1 A1 n n n 阶可逆阵),则方程 A x = b Ax=b Ax=b 可以转变为式 ( 2 ) (2) (2)

[ I A 2 A 1 − 1 ] A 1

以上是关于超定线性方程组Ax=b极小L1范数求解——MATLAB/Python实现的主要内容,如果未能解决你的问题,请参考以下文章

超定线性方程组Ax=b极小L1范数求解——MATLAB/Python实现

稀疏矩阵超定线性方程组 c/c++ 库

线性方程求解之 二范数类型

欠定方程组的最小范数解

欠定方程组的最小范数解

欠定方程组的最小范数解