如何从向量推导出左侧矩阵?

How to deduce left-hand side matrix from vector?

假设我有以下脚本,它构造一个符号数组 A_known 和一个符号向量 x,并执行矩阵乘法。

clc; clearvars
try
    pkg load symbolic
catch
    error('Symbolic package not available!');
end

syms V_l k s0 s_mean
N = 3;

% Generate left-hand-side square matrix
A_known = sym(zeros(N));
for hI = 1:N
    A_known(hI, 1:hI) = exp(-(hI:-1:1)*k);
end
A_known = A_known./V_l;

% Generate x vector
x = sym('x', [N 1]);
x(1) = x(1) + s0*V_l;
% Matrix multiplication to give b vector
b = A_known*x

假设 A_known 实际上是 未知 。有没有办法从 bx 中推断出来?如果是,怎么做?

到目前为止,我只有 x 未知的情况,通常 can be solved 通过 x = b \ A

在数学上,有可能得到解,但实际上有无限解

例子

A = magic(5);
x = (1:5)';
b = A*x;
A_sol = b*pinv(x);

其中有

>> A
A =

   17   24    1    8   15
   23    5    7   14   16
    4    6   13   20   22
   10   12   19   21    3
   11   18   25    2    9

但解决 A 就像 A_sol 一样

>> A_sol
A_sol =

    3.1818    6.3636    9.5455   12.7273   15.9091
    3.4545    6.9091   10.3636   13.8182   17.2727
    4.4545    8.9091   13.3636   17.8182   22.2727
    3.4545    6.9091   10.3636   13.8182   17.2727
    3.1818    6.3636    9.5455   12.7273   15.9091