首页 > 解决方案 > 在线性系统 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]])

(这是我的问题的简化版本,有几十个变量和符号)

标签: linear-algebrasympy

解决方案


您将 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。


推荐阅读