了解在直流和穩(wěn)態(tài)交流電路分析中使用 Python 和 SymPy 如何幫助加快和簡(jiǎn)化網(wǎng)格電流和相量電流等計(jì)算。
基本電路是線性系統(tǒng),確定電路中的電流或電壓值需要使用線性代數(shù)。我發(fā)現(xiàn)當(dāng)我“求解”一個(gè)電路(即確定流過(guò)電路中所有元件的電流值)時(shí),電路定律的應(yīng)用早在確定感興趣的數(shù)量之前就已經(jīng)完成。在短短幾分鐘內(nèi),我們就可以確定一個(gè)描述簡(jiǎn)單電路行為的方程組。然而,手動(dòng)操作這組代數(shù)方程以找到我們正在尋找的量可能需要相當(dāng)長(zhǎng)的時(shí)間。
許多學(xué)生和教育工作者經(jīng)常求助于MATLAB來(lái)尋求線性系統(tǒng)的幫助,但Python和SymPy包也可以輕松免費(fèi)地用于分析直流和穩(wěn)態(tài)交流電路。讓我們通過(guò)一些示例來(lái)說(shuō)明這一點(diǎn),從 DC 分析開(kāi)始。
DC 分析示例 - 使用 Python 求解網(wǎng)格電流
圖 1 中的電路在現(xiàn)實(shí)生活中可能不存在,它沒(méi)有任何實(shí)際用途。
圖 1. 直流電路示例電路原理圖。
然而,在典型的電路分析教科書(shū)中,使用這種帶有直流電源的全電阻電路作為在大型電路環(huán)境中練習(xí)應(yīng)用基爾霍夫定律和歐姆定律的一種手段。
作為說(shuō)明,我認(rèn)為如果您將這些不視為可能是真實(shí)的電路,而是將其視為具有特定知識(shí)基礎(chǔ)和技能組合的人的難題來(lái)解決……這會(huì)有所幫助……為了好玩!
除此之外,我已經(jīng)在該電路上繪制了網(wǎng)狀電流I 1和 I 2,我們可以使用網(wǎng)狀電流分析技術(shù)來(lái)設(shè)計(jì)以下等式 1a 和 1b:
有了這個(gè)方程組,我們就有效地完成了電路理論的應(yīng)用。將這些方程一起處理以求解網(wǎng)格電流 I 1和 I 2的值的剩余任務(wù)是純代數(shù)的。讓我們將這個(gè)方程組轉(zhuǎn)換為矩陣,并使用 Python 為我們研究代數(shù),而不是手動(dòng)這樣做。我們的矩陣將由每個(gè)網(wǎng)格電流的電阻系數(shù)和方程右側(cè)的電壓組成,如圖 2 所示。
圖 2. 描述圖 1 電路的 I、R 和 V 關(guān)系的矩陣方程。
接下來(lái),我們轉(zhuǎn)向 Python。我使用Google Colaboratory 進(jìn)行此類計(jì)算,因?yàn)樗梢酝ㄟ^(guò)網(wǎng)絡(luò)訪問(wèn),并且我需要的所有庫(kù)都可用。但是,如果您的 Python 環(huán)境包含 SymPy 庫(kù),您可以使用您喜歡的任何環(huán)境。
為了在 Python 中求解我們的方程組,讓我們首先導(dǎo)入 SymPy 庫(kù),然后定義我們的矩陣,最后使用以下命令計(jì)算其簡(jiǎn)化的行梯形,以確定兩個(gè)網(wǎng)格電流的值:
from sympy import *
dcEquations = Matrix([[3000, 1500, 9],[1500, 1650, 6]])
dcEquations.rref()
這會(huì)產(chǎn)生以下輸出:
(Matrix([
[1, 0, 13/6000],
[0, 1, 1/600]]), (0, 1))
這些代碼片段告訴我們,I 1的值為 13/6000 A 或 2.17 mA,而 I 2的值為 1/600 A 或 1.67 mA。
使用 Python 的穩(wěn)態(tài)交流分析示例
我們用于分析圖 1 中的直流電阻電路的方法也可以用于分析穩(wěn)態(tài)交流電路,并且 在紙上設(shè)計(jì)一個(gè)實(shí)際上可以服務(wù)于實(shí)際目的的交流電路并不需要花費(fèi)太多精力。圖 3 顯示了一個(gè)帶有兩個(gè)無(wú)功負(fù)載(電感器)的電路,每個(gè)負(fù)載都可以代表一個(gè)用于空調(diào)單元、污水泵、冰箱壓縮機(jī)或其他家用電器設(shè)備的電機(jī)。
圖 3. 具有兩個(gè)無(wú)功負(fù)載的穩(wěn)態(tài)交流電路示例。
圖 3 中的電路稱為“穩(wěn)態(tài)”交流電路,因?yàn)樗碾娫淳哂泄潭l率和恒定幅度。從這里開(kāi)始,我們需要將電路中的電感轉(zhuǎn)換為阻抗(以歐姆為單位),以便我們可以使用網(wǎng)格電流方法來(lái)分析其穩(wěn)態(tài)行為。因此,我們根據(jù)公式 2 計(jì)算電路中電感器的阻抗,使用源的驅(qū)動(dòng)頻率為 ω (120π rad/s)。
在圖 4 中,我們用每個(gè)無(wú)源元件的阻抗和相量網(wǎng)格電流 I 1和 I 2重新繪制了電路。
圖 4. 將電感轉(zhuǎn)換為阻抗后的圖 3 的交流電路。
就像我們對(duì)圖 1 中的電路所做的那樣,我們可以使用基爾霍夫電壓定律和歐姆定律推導(dǎo)出與圖 4 中電路中的元件和網(wǎng)格電流相關(guān)的方程組。方程 3a 和 3b 構(gòu)成了該系統(tǒng)。
同樣,用于求解圖 4 電路中網(wǎng)格電流的其余過(guò)程是純代數(shù)。該方程組的矩陣形式如圖 5 所示。
圖 5. 等式 3a 和 3b 的矩陣表示圖 4 的穩(wěn)態(tài)交流電路。
Python 中的以下命令將為圖 4 中電路中的網(wǎng)格電流值求解該方程組。請(qǐng)注意,我們可以在矩陣定義中使用“j”而無(wú)需任何特殊努力,因?yàn)椤癹”在 SymPy 中定義為復(fù)空間中的虛單位。
from sympy import *
acEquations = Matrix([[2+3.77j,-(2+3.77j), 120],[2+3.77j, -(5+6.41j), 0]])
acEquations.rref()
這會(huì)產(chǎn)生以下輸出:
(Matrix([
[1, 0, 35.7203044893402 - 44.6772284258869*I],
[0, 1, 22.5428313796213 - 19.8376916140667*I]]), (0, 1))
這告訴我們相量電流 I 1和 I 2分別為 (35.72 – j44.68)A 和 (22.54 – j19.84)A。請(qǐng)注意 Python 如何將虛數(shù)單位表示為“I”而不是“j”。為了將這些轉(zhuǎn)換為時(shí)間相關(guān)函數(shù),我們應(yīng)用了一點(diǎn)三角函數(shù)來(lái)找到它們各自的幅度和相位。I 1的幅度和相位通過(guò)等式 4a 和 4b 求得:
類似地,根據(jù)等式 5a 和 5b 求出I 2的幅度和相位:
最后,給定這些幅度和相位,我們確定 I 1和 I 2的函數(shù)形式:
Python 和 SymPy 對(duì)直流和穩(wěn)態(tài)交流分析的好處
請(qǐng)注意,穩(wěn)態(tài)交流分析確實(shí)需要預(yù)先從電感(和/或電容)轉(zhuǎn)換為復(fù)阻抗以及之后從相量形式轉(zhuǎn)換為時(shí)間相關(guān)形式的額外步驟。然而,使用 Python 應(yīng)用這種矩陣技術(shù)在求解交流電路時(shí)比直流電路為我們節(jié)省了更多的計(jì)算時(shí)間,因?yàn)?Python 甚至可以為我們處理復(fù)雜的代數(shù),輕松處理增加的虛數(shù)維度。
對(duì)于直流和穩(wěn)態(tài)交流電路分析,可以輕松使用 Python 和 SymPy 庫(kù)來(lái)減少確定所需值所需的工作量。雖然這些示例中分析的電路相對(duì)簡(jiǎn)單,但該技術(shù)可以擴(kuò)展到具有更多網(wǎng)格的更復(fù)雜電路。以這種方式使用 Python 不僅可以減少解決電路問(wèn)題所花費(fèi)的時(shí)間,而且還可以幫助學(xué)生在練習(xí)新學(xué)習(xí)的網(wǎng)絡(luò)分析技術(shù)時(shí)在心理上區(qū)分電路理論和純代數(shù)。
-
DC
+關(guān)注
關(guān)注
9文章
3626瀏覽量
679205 -
交流電路
+關(guān)注
關(guān)注
0文章
180瀏覽量
28792 -
python
+關(guān)注
關(guān)注
55文章
4774瀏覽量
84386
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論