【发布时间】:2026-01-25 15:35:01
【问题描述】:
为了求解矩形线性系统Ax=b,其中A 是mxn 和n>m,Matlab 首先执行 QR 因式分解,然后通过替换求解三角线性系统。例如:
如果A 是一个 4x6 矩阵:
A =
0.8147 0.9058 0.1270 0.9134 0.6324 0.0975
0.2785 0.5469 0.9575 0.9649 0.1576 0.9706
0.9572 0.4854 0.8003 0.1419 0.4218 0.9157
0.7922 0.9595 0.6557 0.0357 0.8491 0.9340
和
b=
-0.9661
0.1590
-0.0391
-0.2491
要解决Ax=b,我们只需这样做:
x=A\b;
解决办法是:
x =
-0.4284
-0.6475
0
-0.1153
0
0.7662
这个计算的基本步骤是:
-
A的 QR 分解,然后Ax=b将等效于Q*R*x=b。 - 由于
inv(Q)=Q'和R是上三角形,求解系统将返回求解R*x=b1whereb1=Q'*b。
由于R 是大小为 6x4 的上三角形,我们必须执行反向替换。 Matlab 在知道R 不是正方形的情况下如何执行反向替换?
我正在将此计算移植到 C 并成功完成,直到 R*x=b1,我因反向替换而迷失了方向,我想找到与 Matlab 相同的结果。
编辑:
对于上述矩阵A:
求解Ax=b相当于求解Rx=b1where:
R =
-1.5117 -1.3991 -1.0952 -0.7786 -1.0819 -1.3007
0 -0.5641 -0.2197 -0.6538 -0.2920 -0.2481
0 0 -0.8692 -0.2077 0.1422 -0.9295
0 0 0 -0.8426 0.2182 0.2125
和
b1 =
-0.9661
0.1590
-0.0391
-0.2491
这个系统是通过反向代换来解决的,因为R 是上三角矩阵,这在方三角矩阵(即m=n)的情况下很简单,但是R 不是方阵。 Matlab如何执行反向替换来找到x?
【问题讨论】:
-
documentation 非常清晰和广泛。你的问题到底是什么?
-
我编辑了我的问题以使其更清晰
-
OP,除非是学术练习,否则我可以建议使用库来执行此操作吗?有许多经过良好测试和优化的库可以解决这个问题。