MATLAB求解AX=b
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB求解AX=b相关的知识,希望对你有一定的参考价值。
例如A = [1 5*cos(x) 0 -1;5 1 -1 0;3 6*cos(x) -1 0;6 3 0 -1];b=[0 0 1.0472 0];X=[alpha1;alpha2;x;y];如何求出alpha1,alpha2,x,y用MATLAB解
参考技术A求解矩阵方程,可以利用矩阵的性质来求,即
syms alpha1 alpha2 x y
A =[1 5*cos(x) 0 -1;5 1 -1 0;3 6*cos(x) -1 0;6 3 0 -1];
b=[0;0;1.0472;0];
X=[alpha1;alpha2;x;y];
S=vpasolve(A*X==b);
alpha1=S.alpha1
alpha2=S.alpha2
x=S.x
y=S.y
运行结果
追问用牛顿法可以解决吗
追答可以解决的
本回答被提问者采纳超定线性方程组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...amn⎦⎥⎥⎤∈Rm×n, b=⎣⎢⎢⎢⎡b1b2⋮bm⎦⎥⎥⎥⎤∈Rm×1
其中 m > n ≥ 2 m>n\\ge 2 m>n≥2,求 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]T∈Rn×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 min∥Ax−b∥1=mini=1∑m∣j=1∑naijxj−bi∣(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∗=Ax∗−b 为问题 ( 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
以上是关于MATLAB求解AX=b的主要内容,如果未能解决你的问题,请参考以下文章 超定线性方程组Ax=b极小L1范数求解——MATLAB/Python实现