我有一個符號線性方程組
i1 = id2 - u1/zg
i2 = (C D*Y)*u1 D* i1
i2 = u2/zl
u2 = (A B*Y)*u1 B*i1
我的目標是 u2 的解決方案,其中 u1 和 i1 被上面宣告的相應解決方案替換。u2 的解就是這個巨大的方程,現在是手工計算的
u2 = (A B*Y)*(id1*zg*(-B D*zl)/(A*zg B*Y*zg - B - C*zg*zl - D*Y*zg*zl D*zl)) B * (id1 - (id1*zg*(-B D*zl)/(A*zg B*Y*zg - B - C*zg*zl - D*Y*zg*zl D*zl))/zg)
我確信有一種方法可以讓 Python 為我計算這個,因為它需要很長時間并且非常容易手動執行此操作。
基本上我希望 Python 為我消除所有未知變數(除了一個,然后我可以計算)。在上面的示例方程組中,i1 i2 u1 和 u2 是未知的。其他一切都是已知的。
謝謝你的幫助。
uj5u.com熱心網友回復:
好吧,我解決了如下:
equations = [
sym.Eq( (C D*Y)*u1 D* i1 , i2 ),
sym.Eq( id2 - u1/zg, i1),
sym.Eq(u2/zl, i2),
sym.Eq( (A B*Y)*u1 B*i1, u2 )
]
eq = sym.solve(equations, u2)
我之前就試過了,但一定是某個地方有錯字。
結果是
id1*zg*(-B D*zl)/(A*zg B*Y*zg - B - C*zg*zl - D*Y*zg*zl D*zl)
它比我每手計算的結果要短,但它似乎是正確的。
uj5u.com熱心網友回復:
from sympy import *
# unkowns
i1, i2, u1, u2 = symbols("i1, i2, u1, u2")
# knows quantities
id2, zg, zl, A, B, C, D, Y = symbols("id_2, z_g, z_l, A, B, C, D, Y")
# define equations:
# one way to do that is to write them as:
# (Left Hand Side) - (Right Hand Side) = 0
eq1 = i1 - (id2 - u1/zg)
eq2 = i2 - ((C D*Y)*u1 D* i1)
eq3 = i2 - (u2/zl)
eq4 = u2 - ((A B*Y)*u1 B*i1)
# solve the system of equation
sol = solve([eq1, eq2, eq3, eq4], [i1, i2, u1, u2])
# retrieve the solution of u2
sol[u2]
# out: (A*D*id_2*z_g*z_l - B*C*id_2*z_g*z_l)/(A*z_g B*Y*z_g - B - C*z_g*z_l - D*Y*z_g*z_l D*z_l)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/480071.html
上一篇:WP慢查詢/重復查詢-影像
下一篇:計算將箭頭旋轉到標記的最小角度