亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

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

        0 引 言

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

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

        1 實驗原理介紹

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

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

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

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

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

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

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

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

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

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

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

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

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

        與電路的穩(wěn)態(tài)求解類似,對于除參考結點外的n′-1個結點列寫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個結點電壓uk、b′個支路電流、p個電容電壓uCj及其p個導數(shù)個電感電流iLj及其q個導數(shù)由于未知量數(shù)恰比獨立方程數(shù)多p+q,根據(jù)線性代數(shù)理論可知,若將p個電容電壓uCj和q個電感電流iLj視為參量后解方程組,可關于狀態(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 軟件設計

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

        圖3 程序架構

        2.1 電路分析模塊(SOLVER)

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

        圖4 電路分析模塊結構

        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)部會將線性方程組先轉化為標準的矩陣形式Ax=b,再使用高斯消元法求解[7]。

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

        2.2 用戶界面模塊(UI)

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

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

        圖5 用戶界面模塊結構

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

        圖6 用戶界面運行流程

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

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

        圖7 用戶界面布局

        2.2.1 電路結構參數(shù)輸入

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

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

        2.2.2 繪制響應曲線

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

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

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

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

        2.4 啟動器(STARTER)

        當啟動器作為程序入口時,它會對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時刻,開關S1閉合,S2斷開。使用本軟件對圖1電路進行暫態(tài)分析,得到u1,u2,i1,i2的響應曲線如圖8所示。為驗證正確性,本文借助Simulink對圖1電路進行仿真,原理圖如圖9所示,仿真結果如圖10所示。為比對結果,計算本軟件得到的結果和Simulink仿真結果的絕對誤差Δu1,Δu2,Δi1,Δi2,得到圖11所示曲線,誤差數(shù)量級為10-3,說明本軟件對線性動態(tài)電路的暫態(tài)分析是準確的。

        圖8 使用本軟件得到的響應圖像

        圖9 Simulink仿真原理圖

        圖10 Simulink仿真結果

        圖11 絕對誤差曲線

        4 結 語

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

        一区二区三区在线视频爽| 孩交精品xxxx视频视频| 国产精美视频| 喷潮出白浆视频在线观看| 亚洲精品98中文字幕| 亚洲精品乱码久久久久久中文字幕 | 视频一区中文字幕日韩| 91九色老熟女免费资源| 台湾无码av一区二区三区| 亚洲日韩AV秘 无码一区二区| 女同性恋一区二区三区四区| 亚洲av久播在线一区二区| 国产成人精品综合在线观看| 日韩高清无码中文字幕综合一二三区| 久久精品av一区二区免费| 一区二区三区国产精品乱码| 最近中文字幕完整版免费 | 日韩人妻无码中文字幕一区| 人妻蜜桃日产一本久道综合在线 | 亚洲第一av导航av尤物| 99久久综合九九亚洲| 国产亚洲av一线观看| 亚洲三区在线观看内射后入| 亚洲精品久久无码av片软件| yy111111少妇影院| 国产精品日韩av一区二区| 国产网红主播无码精品| 78成人精品电影在线播放| 国产极品嫩模大尺度在线播放| 亚洲最大成人综合网720p| 好大好深好猛好爽视频免费| 亚洲综合网站精品一区二区| 国产精品成人一区二区在线不卡| 人妻少妇精品视频专区| 91日韩高清在线观看播放| 国产精品农村妇女一区二区三区| 精品高朝久久久久9999| 久久久精品人妻一区二区三区四 | 伦伦影院午夜理论片| 亚洲依依成人亚洲社区| 国产男女做爰猛烈视频网站|