999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的線性動態(tài)電路可視化分析軟件設(shè)計與實現(xiàn)

2022-04-06 10:09:18王博文趙彥珍
實驗室研究與探索 2022年2期

康 顥, 沈 瑤, 王博文, 趙彥珍

(西安交通大學(xué)電氣工程學(xué)院,西安 710049)

0 引 言

線性動態(tài)電路是電路理論中的重要內(nèi)容。對線性動態(tài)電路進行暫態(tài)分析,通常需要列寫并求解線性微分方程,隨著電路階數(shù)的逐漸增高,手工求解的難度也會急速增大[1]。隨著計算機技術(shù)的飛速發(fā)展,功能強大的科學(xué)計算軟件如Matlab提供了新的解決方案,例如文獻[2]中利用拉氏變換手工列寫電路方程,借助Matlab進行輔助計算和繪制響應(yīng)曲線;文獻[3]中采用系統(tǒng)法手工列寫電路的狀態(tài)方程,借助Matlab的符號運算功能進行求解。這些研究為解決線性動態(tài)電路問題提供了很好的思路,本文將在這些研究的基礎(chǔ)上,使用Python設(shè)計并實現(xiàn)一個可視化電路分析軟件,實現(xiàn)對存在換路過程的任意階線性動態(tài)電路的自動分析。

Python作為一種解釋型的高級語言,具有良好的可擴展性和可移植性,擁有豐富的第3方庫,其中不乏各種優(yōu)秀的科學(xué)計算庫[4-5]。本文所設(shè)計實現(xiàn)的軟件,其主要功能包括:①利用基爾霍夫電流定律(Kirchhoff’s Current Law,KCL)和支路電壓電流關(guān)系(Voltage Current Relation,VCR),自動求解任意階線性動態(tài)電路在穩(wěn)態(tài)下的結(jié)點電壓和支路電流;②利用狀態(tài)方程和龍格庫塔法,自動計算任意階線性動態(tài)電路中任一電壓或電流的時域數(shù)值解;③借助圖形化的用戶界面,進行電路原理圖的交互式繪制及計算結(jié)果的可視化顯示等。

1 實驗原理介紹

以圖1為例介紹動態(tài)電路的分析方法。

圖1 示例動態(tài)電路

1.1 電路的穩(wěn)態(tài)求解

在t=0-時刻,電路處于穩(wěn)態(tài),可將電容元件視為開路,電感元件視為短路,開關(guān)根據(jù)其類型視為相應(yīng)的開路或短路。圖1所示電路在t=0-時刻的穩(wěn)態(tài)電路如圖2所示。

圖2 t=0-時刻的穩(wěn)態(tài)電路

設(shè)此時電路中結(jié)點數(shù)量為n,元件數(shù)量為b。設(shè)電路中結(jié)點電壓uk(k=1,2,…,n-1)和元件支路電流ik(k=1,2,…,b)為未知量。為簡便起見,將每個元件視作一條支路,且元件電壓和電流取關(guān)聯(lián)參考方向。

對除去0號參考結(jié)點之外的n-1個結(jié)點列寫出共n-1個獨立KCL方程:

式中:bj為與結(jié)點j關(guān)聯(lián)的元件個數(shù);ijk為與結(jié)點j關(guān)聯(lián)的元件上電流的代數(shù)值,流出取正,流入取負。

根據(jù)元件的VCR,對b個元件可列寫出共b個方程。以圖1所示電路為例,電阻、電壓源和電流控制電壓源(Current Controlled Voltage Source,CCVS)的VCR方程分別為:

其中:Ri為電阻阻值;upos、uneg分別為元件兩端的結(jié)點電壓;r為CCVS的控制系數(shù);icid為CCVS的控制電流。

未知量數(shù)與獨立代數(shù)方程數(shù)均為n-1+b。根據(jù)線性代數(shù)理論可知,解此方程組即可得到電路在t=0-穩(wěn)態(tài)下的各結(jié)點電壓和支路電流。得到在t=0-時刻的各電容電壓u Cj(0-)和電感電流iLj(0-)。

1.2 電路的動態(tài)求解

圖1所示電路中,t=0時刻開關(guān)S1閉合,S2斷開。設(shè)換路后的電路結(jié)點數(shù)量為n′,元件數(shù)量為b′,其中包含p個電容和q個電感,其狀態(tài)方程的標(biāo)準(zhǔn)形式為:

與電路的穩(wěn)態(tài)求解類似,對于除參考結(jié)點外的n′-1個結(jié)點列寫n′-1個KCL方程,對于所有非動態(tài)元件列寫b′-p-q個VCR方程。對于每個電容元件,需要列寫兩個方程:

式(6)為電容兩端電壓,式(7)為流過電容的電流;對于每個電感元件,需列寫方程:

式(8)為流過電感的電流,式(9)為電感兩端電壓。

至此,共列寫了n′-1+b′+p+q個獨立方程,而此時未知量共有n′-1+b′+2p+2q個,包括n′-1個結(jié)點電壓uk、b′個支路電流、p個電容電壓uCj及其p個導(dǎo)數(shù)個電感電流iLj及其q個導(dǎo)數(shù)由于未知量數(shù)恰比獨立方程數(shù)多p+q,根據(jù)線性代數(shù)理論可知,若將p個電容電壓uCj和q個電感電流iLj視為參量后解方程組,可關(guān)于狀態(tài)向量的函數(shù),且各函數(shù)均為uCj,iLj的線性組合加一常數(shù)項的形式:

根據(jù)換路定則,在換路前后電容電流和電感電壓為有限值的條件下,由1.1節(jié)計算的穩(wěn)態(tài)解,可得到狀態(tài)變量的初始值,即uCj(0+)=uCj(0-),iLj(0+)=iLj(0-)。

根據(jù)狀態(tài)方程及狀態(tài)變量的初值,利用龍格庫塔法即可得到各狀態(tài)變量在時域內(nèi)的數(shù)值解,進而可求出電路中任一電壓或電流的解。

2 軟件設(shè)計

軟件共分為4大部分:電路分析(SOLVER)、用戶界面(UI)、電路計算流程(CORE)和啟動器(STARTER)模塊。其中,SOLVER模塊用于對處理后的電路進行最基本的穩(wěn)態(tài)或動態(tài)分析;UI模塊負責(zé)與用戶進行交互式操作;CORE模塊是對SOLVER和UI模塊的整合運用,同時負責(zé)兩個模塊之間的數(shù)據(jù)轉(zhuǎn)換與傳遞;STARTER是整個程序的入口,負責(zé)UI和CORE模塊的初始化及啟動。程序各部分間的關(guān)系結(jié)構(gòu)如圖3所示。

圖3 程序架構(gòu)

2.1 電路分析模塊(SOLVER)

電路分析模塊由3部分組成:分析器(ANALYZER)、電路元件模塊(ELEMENT)和公用模塊(COMMON)。其中,分析器包含穩(wěn)態(tài)分析器(STEADY)和動態(tài)分析器(DYNAMIC),穩(wěn)態(tài)分析器用于對穩(wěn)態(tài)的電阻電路進行結(jié)點電壓和支路電流的求解,動態(tài)分析器用于在給定動態(tài)電路初始條件的前提下對其進行暫態(tài)分析;電路元件模塊包含一系列理想電路元件類,每種元件類都包含相應(yīng)的元件參數(shù)和附加VCR方程作為類的屬性;公用模塊包含一些常用的工具類或方法。模塊結(jié)構(gòu)如圖4所示。

圖4 電路分析模塊結(jié)構(gòu)

2.1.1 線性代數(shù)方程組的求解

在電路穩(wěn)態(tài)和動態(tài)求解中,分別需要對不含符號參數(shù)和含符號參數(shù)的線性代數(shù)方程組進行求解。對于這兩種計算情境,可使用SymPy這一用于符號計算的第3方庫。具體實現(xiàn)為調(diào)用sympy.solvers.solvers.solve函數(shù)對方程組進行求解,其內(nèi)部會將線性方程組先轉(zhuǎn)化為標(biāo)準(zhǔn)的矩陣形式Ax=b,再使用高斯消元法求解[7]。

2.1.2 非齊次線性微分方程組的數(shù)值求解

2.2 用戶界面模塊(UI)

用戶界面一方面用于輸入電路結(jié)構(gòu)參數(shù),另一方面用于圖形結(jié)果顯示。軟件采用了第3方Pygame庫進行用戶界面的開發(fā),其優(yōu)勢在于繪圖函數(shù)豐富全面、開發(fā)靈活度較高。

用戶界面模塊的結(jié)構(gòu)如圖5所示,主要由7個子模塊構(gòu)成:渲染器(RENDERER)、電路繪制面板(BOARD)、命令輸入欄(PROMPT)、狀態(tài)欄(STATUSBAR)、結(jié)果顯示欄(RESULTBAR)、管理器(MANAGER)和圖像繪制器(PLOTTER)。其中渲染器負責(zé)各窗體控件的繪制與渲染;管理器負責(zé)對用戶發(fā)出的鼠標(biāo)操作或輸入的命令進行解釋和執(zhí)行,并對各控件進行數(shù)據(jù)更新,起到管理全局的作用。

圖5 用戶界面模塊結(jié)構(gòu)

用戶界面的運行流程如圖6所示,在程序主循環(huán)中,對事件隊列進行遍歷,根據(jù)事件的類型進行相應(yīng)操作;直至事件隊列為空,繪制各控件并更新窗口畫面,開始新一輪的循環(huán)過程。

圖6 用戶界面運行流程

本文開發(fā)的用戶界面如圖7所示,用戶可通過鼠標(biāo)操作或在命令輸入欄中輸入命令的方式,在電路繪制面板上繪制待分析的電路原理圖,并進行電路自動分析及結(jié)果顯示。本軟件涉及的各項命令見表1。

表1 各命令行的名稱及功能

圖7 用戶界面布局

2.2.1 電路結(jié)構(gòu)參數(shù)輸入

對于只包含二端元件的電路,可以將其抽象成一個有向圖G=(V,E),其中點集V與電路中各結(jié)點對應(yīng),邊集E與各元件對應(yīng)。本軟件采用鄰接表存儲有向圖[10],其優(yōu)勢在于時空復(fù)雜度一般較低,且編碼難度低,使用Python中的嵌套列表即可實現(xiàn)。

針對電路結(jié)點編號,軟件采用了并查集這一用于處理若干不交集的合并與查詢問題的數(shù)據(jù)結(jié)構(gòu)進行處理[11]。對于一個僅含有b個二端元件的電路,若忽略其導(dǎo)線,則該電路對應(yīng)的有向圖初始包含2b個頂點,每個頂點單獨成一集合。連接導(dǎo)線的過程可視為使用并查集合并點集的過程。當(dāng)所有合并操作完成后,統(tǒng)計每個點集的代表元素,再重新分配連續(xù)編號即可。

2.2.2 繪制響應(yīng)曲線

繪制響應(yīng)曲線采用了第3方繪圖庫Matplotlib[12],其提供了功能齊全的圖像可視化操作界面。借助該操作界面,用戶可對結(jié)果圖像進行各種高級操作,如選定區(qū)域放大、設(shè)置光標(biāo)及導(dǎo)出圖像等。

2.3 電路計算流程模塊(CORE)

電路計算流程模塊在整合運用SOLVER和UI模塊的基礎(chǔ)上,實現(xiàn)了一系列的電路計算流程函數(shù),起到了在SOLVER和UI兩模塊之間進行數(shù)據(jù)處理與傳輸?shù)淖饔谩?/p>

以該模塊中的電路暫態(tài)分析流程為例:CORE模塊首先從UI模塊中獲取原始電路數(shù)據(jù),再參考1.1節(jié)的方法得到原始動態(tài)電路對應(yīng)的t=0-時刻的穩(wěn)態(tài)電路,將其傳遞至SOLVER模塊進行穩(wěn)態(tài)求解,因此得到狀態(tài)變量的初始值。將初始值以及處理后的動態(tài)電路數(shù)據(jù)傳遞至SOLVER模塊進行動態(tài)求解,得到原電路的時域數(shù)值解。最終該模塊會將數(shù)值解傳遞至UI模塊進行響應(yīng)曲線的繪制。

2.4 啟動器(STARTER)

當(dāng)啟動器作為程序入口時,它會對CORE、UI模塊進行初始化,并調(diào)用UI模塊的啟動函數(shù),達到啟動程序的作用。

3 算 例

在圖1所示電路中,US=4V,R1=R2=2Ω,R3=R4=R5=1Ω,L1=L2=2 H,L3=4 H,C1=C2=1 F,r=0.5Ω,在t=0時刻,開關(guān)S1閉合,S2斷開。使用本軟件對圖1電路進行暫態(tài)分析,得到u1,u2,i1,i2的響應(yīng)曲線如圖8所示。為驗證正確性,本文借助Simulink對圖1電路進行仿真,原理圖如圖9所示,仿真結(jié)果如圖10所示。為比對結(jié)果,計算本軟件得到的結(jié)果和Simulink仿真結(jié)果的絕對誤差Δu1,Δu2,Δi1,Δi2,得到圖11所示曲線,誤差數(shù)量級為10-3,說明本軟件對線性動態(tài)電路的暫態(tài)分析是準(zhǔn)確的。

圖8 使用本軟件得到的響應(yīng)圖像

圖9 Simulink仿真原理圖

圖10 Simulink仿真結(jié)果

圖11 絕對誤差曲線

4 結(jié) 語

本文針對求解線性動態(tài)電路響應(yīng)時域數(shù)值解,使用Python語言設(shè)計并實現(xiàn)了一個線性動態(tài)電路可視化自動分析軟件。該軟件的優(yōu)點有:①擁有交互式的圖形化用戶界面,操作簡單直觀;②采用狀態(tài)方程和龍格庫塔法的分析方法,精度高,且適用于任意階的線性動態(tài)電路,實用性和普適性強;③采用Python語言編寫,可擴展性和可移植性強,易于進行二次開發(fā),便于集成到其他系統(tǒng)。該軟件的設(shè)計與實現(xiàn),為線性動態(tài)電路暫態(tài)分析的仿真計算提供了便捷、高效且實用的工具。實踐表明,在計算機專業(yè)學(xué)生中開展此類課程設(shè)計項目對激發(fā)學(xué)生學(xué)習(xí)興趣是非常有益的,既加深了對電路理論知識的學(xué)習(xí),又鍛煉了借助計算機手段解決實際電路問題的能力,對培養(yǎng)新工科人才起到了積極作用。

主站蜘蛛池模板: 蜜臀AVWWW国产天堂| 韩国自拍偷自拍亚洲精品| 狠狠色婷婷丁香综合久久韩国| 精品国产网| 在线a视频免费观看| 日本三级欧美三级| 99久久国产自偷自偷免费一区| 国内熟女少妇一线天| 亚洲av无码成人专区| 欧美日韩中文字幕二区三区| 思思热精品在线8| 亚洲天堂精品视频| 国产在线自乱拍播放| 午夜影院a级片| 久久香蕉欧美精品| 激情乱人伦| 国内精自线i品一区202| 日本影院一区| 华人在线亚洲欧美精品| 中文字幕 91| AV在线天堂进入| 久久不卡精品| 色综合久久无码网| 一本色道久久88亚洲综合| 国产亚洲精品97在线观看| 欧美国产精品不卡在线观看| 性欧美久久| 91国内在线视频| 亚洲人在线| 婷婷综合缴情亚洲五月伊| 亚洲成人一区在线| 亚洲成肉网| 性欧美在线| 日韩国产无码一区| 亚洲综合中文字幕国产精品欧美| 亚洲人成影院在线观看| 久久熟女AV| 国产精品v欧美| 色综合综合网| 亚洲三级成人| 亚洲欧美成aⅴ人在线观看| 毛片久久久| 国产99免费视频| 国产精品片在线观看手机版 | 欧美成人午夜影院| 欧美中文字幕在线视频| 天天做天天爱天天爽综合区| 国产不卡国语在线| 日本人妻一区二区三区不卡影院| 欧美国产在线看| 国产精品久久国产精麻豆99网站| 2021天堂在线亚洲精品专区| 本亚洲精品网站| 亚洲中文在线看视频一区| 国产欧美综合在线观看第七页| 她的性爱视频| 91久久国产综合精品女同我| 久久精品国产亚洲麻豆| 色婷婷综合激情视频免费看| 人妻精品久久无码区| 青青草原国产精品啪啪视频| 午夜免费小视频| 欧美国产日韩在线播放| 精品国产免费观看| 亚洲国产日韩在线成人蜜芽| 亚洲欧美日韩成人高清在线一区| 久操中文在线| 日韩精品毛片| 日本午夜在线视频| 亚洲成人动漫在线观看 | 国产激情在线视频| 亚洲天堂区| 中国丰满人妻无码束缚啪啪| 99久久国产自偷自偷免费一区| 97免费在线观看视频| 日韩美一区二区| 欧美国产在线看| 国产成人亚洲综合A∨在线播放| 色呦呦手机在线精品| 成人免费黄色小视频| 久久精品丝袜| 人妻中文久热无码丝袜|