在 Sagemath 中求解方程

问题描述 投票:0回答:1

我必须找到一个向量和一个矩阵,将一些输入向量转换为其他向量。输入向量为: (−3, 4), (0, 8) i (6, 6),每个向量的输出为 (1, -4), (6, -4) i (8, 2)。

这就是我尝试过的: `

var('a b c d e f')
p = matrix([[-3,4],[0,8],[6,6]]).T
p2 = matrix([[1,-4],[6,-4],[8,2]]).T
q = vector([a,b])
t = matrix([[c,d],[e,f]])

eqs = [p2[i,j] == q[i] + t[i,:]*p[:,j] for i in range(2) for j in range(2)]
show(eqs)

solve(eqs,[a,b,c,d,e,f])

但是当我说 show(eqs) 时,输出是 [False,False,False,False] 而不是实际的方程。为什么?

我已经尝试过上面的代码。我期望一些反馈可以让我理解代码中的错误。

sage equation-solving
1个回答
0
投票

问题是您要添加标量和矩阵:

p2[i,j]
是标量,
q[i]
也是标量,但
t[i,:]*p[:,j]
1x1
矩阵:
type(p2[1,1])
将返回
<class 'sage.rings.integer.Integer'>
,而
type(q[0])
将返回返回
<class 'sage.symbolic.expression.Expression'>
,但是
type(t[i,:]*p[:,j])
将返回
<class 'sage.matrix.matrix_symbolic_dense.Matrix_symbolic_dense'>
。尝试使用该矩阵中的唯一条目,通过显式拉出
[0,0]
条目或将
t
的行和
p2
的列转换为向量并使用点积:use

eqs = [p2[i,j] == q[i] + (t[i,:]*p[:,j])[0,0] for i in range(2) for j in range(2)]

eqs = [p2[i,j] == q[i] + t[i]*p.transpose()[j] for i in range(2) for j in range(2)]
© www.soinside.com 2019 - 2024. All rights reserved.