簡體   English   中英

為什么 Sympy 不生成數字 output?

[英]Why doesn't Sympy produce a numerical output?

我正在使用 sympy 求解方程組Ax=B並找到矩陣x x是 3 x 3 矩陣, AB是 3 x 4 矩陣。 結果不是數字,而是符號的形式。 如何獲得數字結果?

代碼:

import sympy as sp

X = sp.Matrix([[1,2,3,4],
               [5,6,7,8],
               [1,1,1,1]])

x = sp.Matrix([[5,6,7,8],
               [1,2,3,4],
               [1,1,1,1]])

a,b,c,d,e,f,g,h = sp.symbols('a,b,c,d,e,f,g,h')

M = sp.Matrix([[a,b,c],
               [d,e,f],
               [g,h,1]])

eq = solve(x-M.multiply(X),(a,b,c,d,e,f,g,h))
print(eq)

Output:

{a: c/4, b: 1 - c/4, d: f/4 + 1, e: -f/4, g: 0, h: 0}

solve的 output 似乎表明有無窮多個解,並且可以使用cf作為自由參數。 要查看您的完整矩陣,並為cf選擇一些值,您可以使用:

M.subs(eq).subs({c:1, f:2}).evalf()

結果:

Matrix([
[0.25, 0.75, 1.0],
[ 1.5, -0.5, 2.0],
[   0,    0, 1.0]])

這里subs(eq)填寫解決方案。 subs({c:44, f:28})填充cf的一些值。 evalf()創建一個數值結果; 當表達式包含分數、平方根或其他沒有求值的函數時,這是需要的。

對於更通用的方法,可以嘗試用零替換所有未分配的符號:

Ms = M.subs(eq)
Ms.subs({fr:0 for fr in Ms.free_symbols}).evalf()

結果:

Matrix([
[0, 1, 0],
[1, 0, 0],
[0, 0, 1]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM