亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Sympy 乘以答案改變它并使其錯誤

Sympy 乘以答案改變它并使其錯誤

慕雪6442864 2023-11-09 22:18:59
我試圖找到矩陣的逆矩陣,但是 sympy 總是將最終答案乘以 4,從而使答案錯誤。當我使用因子函數時,也會發生這種乘法。這是我要更改的矩陣import sympy as syz = sy.symbols('z')t = sy.Matrix([[z, -1], [sy.Rational(1,4), z + 1]])t.inv()這是它給出的“錯誤”答案 真正的答案是相同的,只是不乘以 4。為什么 sympy 會這樣相乘答案呢?為了隔離問題,我們可以嘗試分解行列式。如果我們分解行列式,我期望答案為(z+1/2)**2 但這是我得到的答案,它除以 4 和 ,乘以 2。期望的答案必須恰好是 (z+ 1/2)^2 不是乘法版本 sympy 輸出。d = t.det()print("I want to factor this")display(d)print("After factoring")display(sy.factor(d))print(" \n The right answer I was expecting")display((z+sy.Rational(1,2))**2)我正在解決的問題是 Z 變換的演變,而因子的乘法導致最終答案錯誤。因子或極點必須準確無誤,無需任何乘法,即答案必須準確為 (z+1/2)^2有沒有辦法讓 sympy 給我確切的因素?
查看完整描述

1 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

小心你的措辭:你得到的答案沒有任何“錯誤”。您希望以不同的形式得到答案,這很好,但給出的答案是正確的。


如果您考慮高斯有理數,您可以得到您想要的形式:


In [41]: e = z**2 + z + Rational(1, 4)                                                                                                         


In [42]: e                                                                                                                                     

Out[42]: 

 2       1

z  + z + ─

         4


In [43]: factor(e)                                                                                                                             

Out[43]: 

         2

(2?z + 1) 

──────────

    4     


In [44]: factor(e, gaussian=True)                                                                                                                

Out[44]: 

         2

(z + 1/2) 


In [45]: t.inv()                                                                                                                               

Out[45]: 

?    4?z + 4              -1        ?

? ──────────────   ─────────────────?

?    2               ?   2         ??

? 4?z  + 4?z + 1     ?  z    z   1 ??

?                  4??- ── - ─ - ──??

?                    ?  4    4   16??

?                                   ?

?       1                4?z        ?

?────────────────   ──────────────  ?

?  ?   2       1?      2            ?

?4??- z  - z - ─?   4?z  + 4?z + 1  ?

?  ?           4?                   ?


In [46]: t.inv().applyfunc(lambda e: factor(e, gaussian=True))                                                                                   

Out[46]: 

?   z + 1          1     ?

? ──────────   ──────────?

?          2            2?

? (z + 1/2)    (z + 1/2) ?

?                        ?

?    -1            z     ?

?────────────  ──────────?

?           2           2?

?4?(z + 1/2)   (z + 1/2) ?


查看完整回答
反對 回復 2023-11-09
  • 1 回答
  • 0 關注
  • 380 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號