【问题标题】:Solving for [A] to satisfy [A]*[B]=[C] when [C] is known and [B] is randomly generated with less rows than columns当 [C] 已知且 [B] 是随机生成且行数少于列数时,求解 [A] 以满足 [A]*[B]=[C]
【发布时间】:2014-10-02 14:37:11
【问题描述】:

我的目标是求解满足 [A]*[B]=[C] 的矩阵 [A],其中 [C] 已知且 [B] 是随机生成的。下面是一个例子:

C=[1/3 1/3 1/3]'*[1/3 1/6 1/6 1/6 1/6];
B=rand(5,5);
A=C*pinv(B);
A*B=C_test;
norm(C-C_test);
ans =

4.6671e-16

这里 [C_test] 的元素在原始 [C] 的 1e-15 范围内,但是当 [B] 的行数少于列数时,误差会急剧增加(不确定 norm() 是不是最好的显示方式错误,但我认为它说明了问题)。例如:

B=rand(4,5);
A=C*pinv(B);
A*B=C_test;
norm(C-C_test);
ans =

0.0173

其他方法:

二维码分解

[Q,R,P]=qr(B);
A=((C*P)/R))*Q';
norm(C-A*B);
ans =

0.0173

/ 运算符

A=C/B;
norm(C-A*B);
ans =

0.0173

为什么会这样?在这两种情况下 [B]*pinv([B])=[I] 所以看起来这个过程应该有效。 如果这是与 pinv() 或其他方法相关的生命的数值或代数事实,是否有另一种方法可以生成 [A] 来满足方程?谢谢!

【问题讨论】:

    标签: matlab matrix matrix-inverse


    【解决方案1】:

    由于 C 是 3×5,C 中的元素数和方程数等于 15。如果 B 是 5×5,未知数(A 中的元素)的数量等于 3×5 = 15也一样,并且解决方案将是准确的。

    另一方面,如果 B 是 3×5,则 A 中的元素数等于 3×3 = 9,因此系统是超定的,这意味着结果 A 将是最小二乘解.

    有关一般信息,请参阅维基百科:System of linear equations 和 Matlabs Overdetermined system

    得到的矩阵 A 是最合适的,没有办法改进(在最小二乘意义上)。


    在回答您的第二个问题时:您通过将 2 范数应用于 A*B-C:来测量 A*B 的近似值作为 C 的近似值:这相当于最小二乘拟合。在这个衡量标准中,您使用的所有方法都提供了最佳答案。

    但是,如果您更喜欢其他度量,例如 1-范数、无穷大范数或任何其他度量(例如,通过为列、行或元素选择不同的权重),则从原始方法获得的答案将当然,就这一新措施而言,不一定是最佳的。

    最通用的方法是使用一些优化例程,如下所示:

    x = fminunc(f, zeros(3*size(B,1),1));
    A = reshape(x,3,size(B,1));
    

    f 是一些(任何)度量。最小二乘法的结果应该是相同的 A。所以如果你试试这个:

    f = @(x) norm(reshape(x,3,size(B,1))*B - C);
    

    A 应该与您的方法中的结果相匹配。

    但你可以在这里使用任何f。例如,尝试 1-范数:

    f = @(x) norm(reshape(x,3,size(B,1))*B - C, 1);
    

    或者像这样疯狂的东西:

    f = @(x) sum(abs(reshape(x,3,size(B,1))*B - C)*[1 10 100 1000 10000]');
    

    这将给出不同的结果,根据新的措施f最佳。话虽如此,我会坚持最小二乘;)

    【讨论】:

    • 感谢您解释为什么它不起作用。不过,您的最后一句话让我充满希望,除了“在最小二乘意义上”,还有哪些其他可能的改进方法?
    • 请注意,reshape(x,3,size(B,1)) 用于创建适当大小的矩阵。这样做是因为f 的输入应该是一个向量。
    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多