【文章內(nèi)容簡(jiǎn)介】
36 23 + j + j + j 37 25 + j + j + j 38 29 + j + j + j 20 19 + j + j + j 結(jié)果分析:此程序的運(yùn)行結(jié)果和試驗(yàn)程序給出的結(jié)果是一致的。說(shuō)明程序無(wú)誤,但在精確度上有微小差異,這主要是和導(dǎo)納矩陣的精確度以及顯示精度有關(guān)。 心得:本程序分模塊進(jìn)行,先是排序,再是求導(dǎo)納陣,然后求雅閣比,再進(jìn)行迭代運(yùn)算,程序本身很簡(jiǎn)潔明了,運(yùn)行的時(shí)候只需要在 matlab 里輸入 main就行了,然后打開(kāi) BUS 和 line 所在的 .m 文件,結(jié)果就會(huì)自動(dòng)存在 result 文件中了,通過(guò)編寫牛頓拉夫遜法 matlab 潮流計(jì)算程序復(fù)習(xí)了潮流計(jì)算的知識(shí),也實(shí)現(xiàn)了計(jì)算機(jī)算法 附錄: 實(shí)驗(yàn)源程序: Main 函數(shù): clear [dfile,pathname] uigetfile 39。*.m39。,39。Select Data File39。 。 if pathname 0 error 39。 you must select a valid data file39。 else lfile length dfile 。 % strip off .m eval dfile 1:lfile2 。 end [nb,mb] size bus 。 [nl,ml] size line 。 % 計(jì)算 bus 和 line矩陣的行數(shù)和列數(shù) [bus,line,nPQ,nPV,nodenum] Num bus,line 。 % 對(duì)節(jié)點(diǎn)重新排序的子程序 Y y bus,line % 計(jì)算節(jié)點(diǎn)導(dǎo)納矩陣的子程序 myf fopen 39。39。,39。w39。 。 fprintf myf,39。計(jì)算結(jié)果 39。 。 fclose myf 。 % 在當(dāng)前目錄下生成“ ”文件,寫入節(jié)點(diǎn)導(dǎo)納矩陣 format long EPS 。 % 設(shè)定誤差精度 for t 1:100 % 開(kāi)始迭代計(jì)算,設(shè)定最大迭代次數(shù)為 100,以便不收斂情 況下及時(shí)跳出 [dP,dQ] dPQ Y,bus,nPQ,nPV 。 % 計(jì)算功率偏差dP 和 dQ 的子程序 J Jac bus,Y,nPQ 。 % 計(jì)算雅克比矩陣的子程序 UD zeros nPQ,nPQ 。 for i 1:nPQ UD i,i bus i,2 。 % 生成電壓對(duì)角矩陣 end end dAngU J\[dP。dQ]。 dAng dAngU 1:nb1,1 。 % 計(jì)算相角修正量 dU UD* dAngU nb:nb+nPQ1,1 。 % 計(jì)算電壓修正量 bus 1:nPQ,2 bus 1:nPQ,2 dU。 % 修正電壓 bus 1:nb1,3 bus 1:nb1,3 dAng。 % 修正相角 if abs dU EPS amp。 abs dAng EPS break end % 判斷是否滿足精度誤差,如滿足則跳出,否則返回繼續(xù)迭代 end bus PQ bus,Y,nPQ,nPV 。 % 計(jì)算每個(gè)節(jié)點(diǎn)的有功和無(wú)功注入的子程序 [bus,line] ReNum bus,line,nodenum 。 % 對(duì)節(jié)點(diǎn)恢復(fù)編號(hào)的子程序 YtYm YtYm line 。 % 計(jì)算線路的等效Yt 和 Ym 的子程序,以計(jì)算線路潮流 bus_res bus_res bus 。 % 計(jì)算節(jié)點(diǎn)數(shù)據(jù)結(jié)果的子程序 S_res S_res bus,line,YtYm 。 % 計(jì)算線路潮流的子程序 myf fopen 39。39。,39。a39。 。 fprintf myf,39。牛頓-拉夫遜法潮流計(jì)算結(jié)果 節(jié)點(diǎn)計(jì)算結(jié)果: n 節(jié)點(diǎn) 節(jié)點(diǎn)電壓 節(jié)點(diǎn)相角(角度) 節(jié)點(diǎn)注入功率 \n39。 。 for i 1:nb fprintf myf,39。% 39。,bus_res i,1 。 fprintf myf,39。% 39。,bus_res i,2 。 fprintf myf,39。% 39。,bus_res i,3 。 fprintf myf,39。% + j %\n39。,real bus_res i,4 ,imag bus_res i,4 。 end fprintf myf,39。n 線路計(jì)算結(jié)果: n 節(jié)點(diǎn) I 節(jié)點(diǎn) J 線路功率 S I,J 線路功率 S J,I 線路損耗 dS I,J \n39。 。 for i 1:nl fprintf myf,39。% 39。,S_res i,1 。 fprintf myf,39。% 39。,S_res i,2 。 fprintf myf,39。% + j % 39。,real S_res i,3 ,imag S_res i,3 。 fprintf myf,39。% + j % 39。,real S_res i,4 ,imag S_res i,4 。 fprintf myf,39。% + j%\n39。,real S_res i,5 ,imag S_res i,5 。 end fclose myf 。 % 迭代結(jié)束后繼續(xù)在“ ”寫入節(jié)點(diǎn)計(jì)算結(jié)果和 線路計(jì)算結(jié)果 程序結(jié)束 作用為對(duì)節(jié)點(diǎn)重排序,并修改相應(yīng)的線路數(shù)據(jù) [nb,mb] size bus 。 [nl,ml] size line 。 nSW 0。 % number of swing bus counter nPV 0。 % number of PV bus counter nPQ 0。 % number of PQ bus counter for i 1:nb, % nb 為總節(jié)點(diǎn)數(shù) type bus i,6 。 if type 3, nSW nSW + 1。 % increment swing bus counter SW nSW,: bus i,: 。 elseif type 2, nPV nPV +1。 % increment PV bus counter PV nPV,: bus i,: 。 else nPQ nPQ + 1。 % increment PQ bus counter PQ nPQ,: bus i,: 。 end end。 bus [PQ。PV。SW]。 newbus [1:nb]39。 nodenum [newbus bus :,1 ]。 bus :,1 newbus。 for i 1:nl for j 1:2 for k 1:nb if line i,j nodenum k,2 line i,j nodenum k,1 。 break end end end end 作用為計(jì)算節(jié)點(diǎn)導(dǎo)納矩陣 [nb,mb] size bus 。 [nl,ml] size line 。 Y zeros nb,nb 。 for k 1:nl I line k,1 。 %讀入線路參數(shù) J line k,2 。 Zt line k,3 +j*line k,4 。 Yt 1/Zt。 Ym line k,5 +j*line k,6 。 K line k,7 。 if K 0 amp。 J~ 0 % 普通線路 : K 0。 Y I,I Y I,I +Yt+Ym。 Y J,J Y J,J +Yt+Ym。 Y I,J Y I,J Yt。 Y J,I Y I,J 。 end if K 0 amp。 J 0 % 對(duì)地支路 : K 0,J 0,R X 0。 Y I,I Y I,I +Ym。 end if K 0 % 變壓器線路 : Zt 和 Ym 為折算到 i 側(cè)的值 ,K 在 j 側(cè) Y I,I Y I,I +Yt+Ym。 Y J,J Y J,J +Yt/K/K。 Y I,J Y I,J Yt/K。 Y J,I Y I,J 。 end if K 0 % 變壓器線路 : Zt和 Ym為折算到 K側(cè)的值 ,K在 i 側(cè) Y I,I Y I,I +Yt+Ym。 Y J,J Y J,J +K*K*Yt。 Y I,J Y I,J +K*Yt。 Y J,I Y I,J 。 end end 作用為計(jì)算功率偏