gpt4 book ai didi

matlab - 如果 A.B = C,给定 A、B、C 是矩阵,如何使用 Matlab 从 B 和 C 计算 A?

转载 作者:行者123 更新时间:2023-12-04 23:57:06 25 4
gpt4 key购买 nike

A、B、C 是矩阵。

A*B = C

现在我想做一个反向操作,即使用 B 和 C 计算 A。我该怎么做?Matlab 说 B 应该是一个方阵来计算它的逆。

最佳答案

如果存在唯一解,那么最好使用 pinv 来找到它。使用 schwarz 提出的示例...

A = [2 3 4];
B = [11 11 11; 12 12 12; 13 13 13];
C = A*B;

Ahat = C*pinv(B)
Ahat =
2.788 3.0415 3.2949

问题是,B 是单数的。所以可能有无限多的解决方案。

B = magic(3)
B =
8 1 6
3 5 7
4 9 2
A = [2 3 4];
C = A*B
C =
41 53 41

Ahat = C*pinv(B)
Ahat =
2 3 4

Ahat = C/B
Ahat =
2 3 4

看到 pinv 和 slash 都产生相同的解决方案,因为 B 是非奇异的并且条件良好。

但是如果我们尝试条件不太好的东西呢?在下一个示例中,我将使用一个还算不错的矩阵。

>> A = [2 3 4];
>> B = [1 1 1;1 2 3;2 3 4.00001]
B =
1 1 1
1 2 3
2 3 4.00001

好吧,它有一个相当大的条件数,但这个矩阵不是我所说的数字奇异矩阵。

cond(B)
ans =
2865128.4655819

C = A*B
C =
13 20 27.00004

现在让我们尝试几种不同的解决方案。

format long g
Ahat1 = C*pinv(B)
Ahat1 =
2 3 4

pinv 做得很好。

Ahat2 = C/B
Ahat2 =
2.00000000017764 3.00000000017764 3.99999999982236

Ahat3 = C*inv(B)
Ahat3 =
1.99999999953434 2.99999999953434 4.00000000046566

slash 和 inv 都不错,尽管在这种情况下显然更糟。对于这个问题,pinv 解决方案似乎更稳定一些。

我们也可以对此进行 QR 因式分解。使用旋转解决方案以获得最佳稳定性。请注意,当您的系统几乎是单一的时,我们仍然会遇到问题。

[Q,R,P] = qr(B);

您可以通过检查 R 看到问题。最后一个对角线元素与其余元素相比很小。这将导致解决方案出现问题,放大任何噪音。

R
R =
-5.09902735824196 -2.35339392337313 -3.72620671848107
0 0.679365175314723 0.339681455393392
0 0 -2.88675134520189e-06

QR 因子具有 Q*R*P' = B 的性质。所以我们可以在这里求解 A:

Ahat4 = ((C*P)/R)*Q'
Ahat4 =
2.00000000076851 3.0000000007685 3.9999999992315

请注意,我已将括号安排得尽可能高效,因为 MATLAB 将使用 R 的属性作为三角矩阵来简单地进行反向求解。我们不希望 MATLAB 分解已经分解的矩阵。

但是现在让我们看看 vahid 提出的一个:

Ahat5 = C*B'*(inv(B*B'))
Ahat5 =
1.9970703125 2.998046875 4.0029296875

然而,vahid 提出的解决方案简直糟透了。不要使用最后一种形式。请。人们告诉您不要这样做是有原因的,或者他们应该告诉您!是的,我知道有一群人不知道所涉及的数学,他们一直在传播它。您甚至可以在一些不知情的教科书中找到它。

pinv 的好处在于它适用于任何矩阵,无论是否为单数。如果存在解决方案,它将找到一个。如果解决方案是唯一的,它将起作用。如果解决方案不是唯一的,那么您期望什么?

关于matlab - 如果 A.B = C,给定 A、B、C 是矩阵,如何使用 Matlab 从 B 和 C 计算 A?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12653061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com