如何从向量推导出左侧矩阵?
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
实际上是 未知 。有没有办法从 b
和 x
中推断出来?如果是,怎么做?
到目前为止,我只有 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
假设我有以下脚本,它构造一个符号数组 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
实际上是 未知 。有没有办法从 b
和 x
中推断出来?如果是,怎么做?
到目前为止,我只有 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