linear-algebra - 在线性系统 A*x=b 中,如何从给定的 x 和 b 获得 A,在 SymPy 中象征性地
问题描述
考虑线性方程组: A*x=b
只知道向量b和感兴趣的变量x:
from sympy import Matrix, symbols
i, j, x1, x2 = symbols('i j x1 x2')
b = Matrix([i*j*x1 + j**2*x2,
x2 + i*x1])
x = Matrix([x1, x2])
有没有办法象征性地和自动地获得A?
返回的值将是:
A == Matrix([[i*j, j**2],
[ i, 1]])
(这是我的问题的简化版本,有几十个变量和符号)
解决方案
您将 x 和 b 指定为向量。
所以你得到:
A = [a1, a2; a3, a4]
x = [x1; x2]
b = [b1; b2]
方程组为:Ax = b 或
a1 * x1 + a2 * x2 = b1 (eq1)
a3 * x1 + a4 * x2 = b2 (eq2)
这是一个有 2 个方程和 4 个未知数 (a1,a2,a3,a4) 的系统。
所以,不,没有办法解决这个问题以获得 a1,..,a4。这与任何程序/语言无关,这是线性代数。
您唯一能做的就是限制未知数,例如对于已知的 a1、a3 和 x2!= 0,您可以计算 a2 和 a4。