我有一个线性子空间S = [v1 v2 v3 v4] = [1 1 1 2]t
,其中 t 是一些标量实数。
我想根据以下内容对 S 进行转换:[v1 v2 v3 v4] = [A 2A*B 3*C 10]
我T = [A B C]
用上述规则定义一个新子空间的最快方法是什么,它是 S 的转换?
在此示例中, 的T
值为T = [A B C] = [1 0 1/3]t + [0 1/2 0]
。我通过在上面的转换规则中根据 v1、v2、v3 和 v4 找到 A、B 和 C 来得到这个。A = v1
和B = v2/(2A) = v2/(2*v1)
和C = v3/3
。然后,我用我在上面 S 中找到的 v1、v2 和 v3 的值替换。在这种情况下A = 1t
, 和B = (1/2)*(v2/v1) = 1/2
和C = (1/3)t
。
我想在 Python 中以编程方式确定这一点。我不能真正追求改变基础的转换(http://en.wikipedia.org/wiki/Change_of_basis),因为转换不是严格线性的。
但是,我可以保证转换只包括标量和变量 A、B 和 C 的一次幂。
编辑:我希望解决方案不涉及符号数学工具包。
Edit2:除了追求这一点的最简单方法外,我还想要一个可以实际扩展到大型阵列(1000 个组件)的解决方案。