使用Sympy 0.7.2從Continuum Anaconda發行版(太懶得建立我自己的堆棧,不討厭),我在做複雜矩陣代數時遇到這個問題,其中一些本地函數用'I'代替了典型的'1j',這很煩人,因爲它不能很好地與其他的算術運算一起使用,並且基本上保持了它的形式並且增加了因子而不是計算簡明的結果。例如:Sympy複雜矩陣求逆/操作
>>> T
[ 1, 1.0 - 1.0*I]
[1.0 + 1.0*I, 0]
>>> T.inv()
[-(0.5 + 0.5*I)*(1.0 - 1.0*I) + 1, 0.5 - 0.5*I]
[ 0.5 + 0.5*I, -0.5]
>>> T.inv()*T
[-(0.5 + 0.5*I)*(1.0 - 1.0*I) + 1 + (0.5 - 0.5*I)*(1.0 + 1.0*I), (1.0 - 1.0*I)*(
-(0.5 + 0.5*I)*(1.0 - 1.0*I) + 1)]
[ 0,
(0.5 + 0.5*I)*(1.0 - 1.0*I)]
其是東陽T.INV()* T是絕對,(單位矩陣,數量不限),而不是那些亂七八糟那裏,清楚地延遲(也格式是disgusti因爲任何原因)。如果我手動將「I」替換爲「1j」,我會像您一樣獲得。上面的結果並沒有錯,(它可以用於),但是你可以想象,對於更復雜的問題,如果不是「讓我們找到單位矩陣」,那麼這個問題可能非常快速地變得非常嚴重。
我不知道有一個比我現在有,這是對矩陣轉換爲字符串,並取代「我」與「1J」手動....
#If A is a complex matrix, Let AI be its inverse.
A_STR = string(A).replace("I", "1j").replace("\n", "")
exec("AI=Matrix("+str(A.shape()).replace("(", "").replace(")", "")+"," + A_STR + ")")
一個更好的解決方案
謝謝
太棒了,謝謝。 –