首頁(yè) > 專(zhuān)家說(shuō)

牛頓拉夫遜法過(guò)程以及其難點(diǎn)和重點(diǎn)?

來(lái)源:新能源網(wǎng)
時(shí)間:2024-08-17 13:53:55
熱度:

牛頓拉夫遜法過(guò)程以及其難點(diǎn)和重點(diǎn)?【專(zhuān)家解說(shuō)】:牛頓-拉夫遜法早在50年代末就已應(yīng)用于求解電力系統(tǒng)潮流問(wèn)題,但作為一種實(shí)用的,有競(jìng)爭(zhēng)力的電力系統(tǒng)潮流計(jì)算方法,則是在應(yīng)用了稀疏矩陣技

【專(zhuān)家解說(shuō)】:牛頓-拉夫遜法早在50年代末就已應(yīng)用于求解電力系統(tǒng)潮流問(wèn)題,但作為一種實(shí)用的,有競(jìng)爭(zhēng)力的電力系統(tǒng)潮流計(jì)算方法,則是在應(yīng)用了稀疏矩陣技巧和高斯消去法求修正方程后。牛頓-拉夫遜法是求解非線性代數(shù)方程有效的迭代計(jì)算。 1.3MATLAB概述 目前電子計(jì)算機(jī)已廣泛應(yīng)用于電力系統(tǒng)的分析計(jì)算,潮流計(jì)算是其基本應(yīng)用軟件之一?,F(xiàn)有很多潮流計(jì)算方法。對(duì)潮流計(jì)算方法有五方面的要求:(1)計(jì)算速度快(2)內(nèi)存需要少(3)計(jì)算結(jié)果有良好的可靠性和可信性(4)適應(yīng)性好,亦即能處理變壓器變比調(diào)整、系統(tǒng)元件的不同描述和與其它程序配合的能力強(qiáng)(5)簡(jiǎn)單。 MATLAB是一種交互式、面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,廣泛應(yīng)用于工業(yè)界與學(xué)術(shù)界,主要用于矩陣運(yùn)算,同時(shí)在數(shù)值分析、自動(dòng)控制模擬、數(shù)字信號(hào)處理、動(dòng)態(tài)分析、繪圖等方面也具有強(qiáng)大的功能。 MATLAB程序設(shè)計(jì)語(yǔ)言結(jié)構(gòu)完整,且具有優(yōu)良的移植性,它的基本數(shù)據(jù)元素是不需要定義的數(shù)組。它可以高效率地解決工業(yè)計(jì)算問(wèn)題,特別是關(guān)于矩陣和矢量的計(jì)算。MATLAB與C語(yǔ)言和FORTRAN語(yǔ)言相比更容易被掌握。通過(guò)M語(yǔ)言,可以用類(lèi)似數(shù)學(xué)公式的方式來(lái)編寫(xiě)算法,大大降低了程序所需的難度并節(jié)省了時(shí)間,從而可把主要的精力集中在算法的構(gòu)思而不是編程上。 另外,MATLAB提供了一種特殊的工具:工具箱(TOOLBOXES).這些工具箱主要包括:信號(hào)處理(SIGNAL PROCESSING)、控制系統(tǒng)(ConTROL SYSTEMS)、神經(jīng)網(wǎng)絡(luò)(NEURAL NETWORKS)、模糊邏輯(FUZZY LOGIC)、小波(WAVELETS)和模擬(SIMULATION)等等。不同領(lǐng)域、不同層次的用戶(hù)通過(guò)相應(yīng)工具的學(xué)習(xí)和應(yīng)用,可以方便地進(jìn)行計(jì)算、分析及設(shè)計(jì)工作。 MATLAB設(shè)計(jì)中,原始數(shù)據(jù)的填寫(xiě)格式是很關(guān)鍵的一個(gè)環(huán)節(jié),它與程序使用的方便性和靈活性有著直接的關(guān)系。 原始數(shù)據(jù)輸入格式的設(shè)計(jì),主要應(yīng)從使用的角度出發(fā),原則是簡(jiǎn)單明了,便于修改。 2.1 電力系統(tǒng)的基本概念 2.1.1電力系統(tǒng) (1)電力系統(tǒng):發(fā)電機(jī)把機(jī)械能轉(zhuǎn)化為電能,電能經(jīng)變壓器和電力線路輸送并分配到用戶(hù),在那里經(jīng)電動(dòng)機(jī)、電爐和電燈等設(shè)備又將電能轉(zhuǎn)化為機(jī)械能、熱能和光能等。這些生產(chǎn)、變換、輸送、分配、消費(fèi)電能的發(fā)電機(jī)、變壓器、變換器、電力線路及各種用電設(shè)備等聯(lián)系在一起組成的統(tǒng)一整體稱(chēng)為電力系統(tǒng)。 (2)電力網(wǎng):電力系統(tǒng)中除發(fā)電機(jī)和用電設(shè)備外的部分。 (3)動(dòng)力系統(tǒng):電力系統(tǒng)和“動(dòng)力部分”的總和。 “動(dòng)力部分”:包括火力發(fā)電廠的鍋爐、汽輪機(jī)、熱力網(wǎng)和用電設(shè)備,水力發(fā)電廠的水庫(kù)和水輪機(jī),核電廠的反應(yīng)堆等。 2.1.2電力系統(tǒng)的負(fù)荷和負(fù)荷曲線 (1)電力系統(tǒng)的負(fù)荷:系統(tǒng)中千萬(wàn)個(gè)用電設(shè)備消費(fèi)功率的總和,包括異步電動(dòng)機(jī)、同步電動(dòng)機(jī)、電熱爐、整流設(shè)備、照明設(shè)備等若干類(lèi)。 (2)電力系統(tǒng)的供電負(fù)荷:綜合用電負(fù)荷加上電力網(wǎng)中損耗的功率。 (3)電力系統(tǒng)的發(fā)電負(fù)荷:供電負(fù)荷加上發(fā)電廠本身的消耗功率。 (4)各用電設(shè)備的有功功率和無(wú)功功率隨受電電壓和系統(tǒng)頻率的變化而變化,其變化規(guī)律不盡相同,綜合用電負(fù)荷隨電壓和頻率的變化規(guī)律是各用電負(fù)荷變化規(guī)律的合成。 (5)負(fù)荷曲線:某一時(shí)間段內(nèi)負(fù)荷隨時(shí)間而變化的規(guī)律。 (6)按負(fù)荷種類(lèi)可分有功功率負(fù)荷和無(wú)功功率負(fù)荷;按時(shí)間長(zhǎng)短可分為日負(fù)荷和年負(fù)荷曲線;按計(jì)量地點(diǎn)可分為個(gè)別用戶(hù)、電力線路、變電所、發(fā)電廠以至整個(gè)系統(tǒng)的負(fù)荷曲線。將上述三種分類(lèi)相結(jié)合,就確定了某一種特定的負(fù)荷曲線。不同行業(yè)的有功功率日負(fù)荷曲線差別很大。負(fù)荷曲線對(duì)電力系統(tǒng)的運(yùn)行又很重要的意義,它是安排日發(fā)電計(jì)劃,確定各發(fā)電廠發(fā)電任務(wù)以及確定系統(tǒng)運(yùn)行方式等的重要依據(jù)。 2.2 電力系統(tǒng)的基本元件 2.2.1 發(fā)電機(jī) 現(xiàn)代電力工業(yè)中,無(wú)論是火力發(fā)電、水力發(fā)電或核能發(fā)電,幾乎全部采用同步交流發(fā)電機(jī)。電機(jī)的電樞布置在定子上,勵(lì)磁繞組布置在轉(zhuǎn)子上,作為旋轉(zhuǎn)式磁極。同步發(fā)電機(jī)的轉(zhuǎn)速(轉(zhuǎn)/MIN)和系統(tǒng)頻率f(HZ)之間有著嚴(yán)格的關(guān)系,即n=60f/p式中p為電機(jī)的極對(duì)數(shù)。 根據(jù)轉(zhuǎn)子結(jié)構(gòu)型式的不同,分為隱極式和凸極式發(fā)電機(jī),前者轉(zhuǎn)子沒(méi)有顯露出來(lái)的磁極,后者則有。 轉(zhuǎn)子的勵(lì)磁型式有直流勵(lì)磁系統(tǒng)和可控硅勵(lì)磁系統(tǒng),后者利用同軸交流勵(lì)磁機(jī)或由同步發(fā)電機(jī)本身發(fā)出的交流電,經(jīng)整流后供給轉(zhuǎn)子。直流勵(lì)磁機(jī)有換向問(wèn)題,故其制造容量受到限制,所以,在大容量發(fā)電機(jī)中均可采用可控硅勵(lì)磁系統(tǒng)。 2.2.2 電力變壓器 電力變壓器是電力系統(tǒng)中廣泛使用的升壓和降壓設(shè)備。據(jù)統(tǒng)計(jì),電力系統(tǒng)中變壓器的安裝總?cè)萘考s為發(fā)電機(jī)安裝容量的6-8倍。按用途,電力變壓器可分為升壓變壓器、降亞變壓器、配電變壓器和聯(lián)絡(luò)變壓器。按相數(shù)分,變壓器可分為單相式和三相式。按每相線圈分,又有雙繞組和三繞組之分。按線圈耦合的方式,可分為普通變壓器和自耦變壓器。 2.2.3 電力線路 (1)架空線路:由導(dǎo)線、避雷針、桿塔、絕緣子和金具等構(gòu)成。 (2)電纜線路:由導(dǎo)線、絕緣層、包護(hù)層等構(gòu)成。 2.2.4 無(wú)功功率補(bǔ)償設(shè)備 主要的無(wú)功功率補(bǔ)償設(shè)備有同步調(diào)相機(jī)、電力電容器和靜止補(bǔ)償器。 2.3 電力系統(tǒng)元件的數(shù)學(xué)模型 2.3.1 電力線路的等值電路 在電力系統(tǒng)分析中,一般只考慮電力線路兩側(cè)端口的電壓和電流,把電力線路作為無(wú)源雙口網(wǎng)絡(luò)處理。 線路的雙口網(wǎng)絡(luò)方程: Z=B=*L* 2.3.2 變壓器的等值電路 (1)雙繞組變壓器等值電路 (2)三繞組變壓器等值電路 2.3.3 同步發(fā)電機(jī)的數(shù)學(xué)模型 2.3.4 電力系統(tǒng)負(fù)荷 2.3.5 多級(jí)電壓電力系統(tǒng)的等值電路 2.4 電力系統(tǒng)穩(wěn)態(tài)運(yùn)行分析 2.4.1 電力線路的電壓損耗與功率損耗 2.4.2 變壓器中的功率損耗與電壓損耗 2.4.3 輻射形網(wǎng)絡(luò)的分析計(jì)算 輻射形電力網(wǎng)的特點(diǎn)是各條線路有明確的始端與末端。輻射形電力網(wǎng)的分析計(jì)算就是利用已知的負(fù)荷、節(jié)點(diǎn)電壓來(lái)求取未知的節(jié)點(diǎn)電壓、線路功率分布、功率損耗及始端輸出功率。 輻射形電力網(wǎng)的分析計(jì)算,根據(jù)已知條件的不同分兩種 1 已知末端功率與電壓:即 從末端逐級(jí)往上推算,直至求得各要求的量。 2 已知末端功率、始端電壓:末端可理解成一負(fù)荷點(diǎn),始端為電源點(diǎn)或電壓中樞點(diǎn)。采用迭代法。 (1)假設(shè)末端電壓為線路額定電壓,利用第一種方法求得始端功率及全網(wǎng)功率分布。 (2)用求得的線路始端功率和已知的線路始端電壓,計(jì)算線路末端電壓和全網(wǎng)功率分布。 (3)用第(2)步求得的線路末端電壓計(jì)算線路始端功率和全網(wǎng)功率分布,如求得的各線路功率與前一次相同計(jì)算的結(jié)果相差小于允許值,就可以認(rèn)為本步求得的線路電壓和全網(wǎng)功率分布為最終計(jì)算結(jié)果。否則,返回第二步重新進(jìn)行計(jì)算。 2.4.4 復(fù)雜電力系統(tǒng)潮流計(jì)算 電力系統(tǒng)潮流計(jì)算始對(duì)復(fù)雜電力系統(tǒng)正常和故障條件下穩(wěn)態(tài)運(yùn)行狀態(tài)的計(jì)算。潮流計(jì)算的目標(biāo)始求取電力系統(tǒng)在給定運(yùn)行方式下的節(jié)點(diǎn)電壓和功率分布,用以檢查系統(tǒng)各元件是否過(guò)負(fù)荷、各點(diǎn)電壓是否滿(mǎn)足要求、功率的分布和分配是否合理以及功率損耗等。對(duì)現(xiàn)有電力系統(tǒng)的運(yùn)行和擴(kuò)建,對(duì)新的電力系統(tǒng)進(jìn)行規(guī)劃設(shè)計(jì)以及對(duì)電力系統(tǒng)進(jìn)行靜態(tài)和暫態(tài)穩(wěn)定分析都是以潮流計(jì)算為基礎(chǔ)。因此,潮流計(jì)算是電力系統(tǒng)計(jì)算分析中的一種最基本的計(jì)算。 潮流計(jì)算結(jié)果的用途,例如用于電力系統(tǒng)穩(wěn)定研究、安全估計(jì)或最優(yōu)潮流等也對(duì)潮流計(jì)算的模型和方法有直接影響。 2.5 電力系統(tǒng)潮流計(jì)算機(jī)算法 2.5.1電力系統(tǒng)潮流計(jì)算機(jī)算法概述 2.5.1.1 導(dǎo)納矩陣的形成 2.5.1.2 節(jié)點(diǎn)類(lèi)型 (1)PV節(jié)點(diǎn):柱入有功功率P為給定值,電壓也保持在給定數(shù)值。 (2)PQ節(jié)點(diǎn):諸如有功功率和無(wú)功功率是給定的。 (3)平衡節(jié)點(diǎn):用來(lái)平衡全電網(wǎng)的功率。選一容量足夠大的發(fā)電機(jī)擔(dān)任平衡全電網(wǎng)功率的職責(zé)。 平衡節(jié)點(diǎn)的電壓大小與相位是給定的,通常以它的相角為參考量,即取其電壓相角為0。一個(gè)獨(dú)立的電力網(wǎng)中只設(shè)一個(gè)平衡點(diǎn)。 2.5.1.3 高斯迭代法 2.5.2 牛頓-拉夫遜法 2.5.2.1 原理 2.5.2.2 基本步驟 基本步驟: (1)形成節(jié)點(diǎn)導(dǎo)納矩陣 (2)將各節(jié)點(diǎn)電壓設(shè)初值U, (3)將節(jié)點(diǎn)初值代入相關(guān)求式,求出修正方程式的常數(shù)項(xiàng)向量 (4)將節(jié)點(diǎn)電壓初值代入求式,求出雅可比矩陣元素 (5)求解修正方程,求修正向量 (6)求取節(jié)點(diǎn)電壓的新值 (7)檢查是否收斂,如不收斂,則以各節(jié)點(diǎn)電壓的新值作為初值自第3步重新開(kāi)始進(jìn)行狹義次迭代,否則轉(zhuǎn)入下一步 (8)計(jì)算支路功率分布,PV節(jié)點(diǎn)無(wú)功功率和平衡節(jié)點(diǎn)柱入功率。 2.5.2.3 注意事項(xiàng) 2.5.2.4 程序流程框圖 2.6 軟件設(shè)計(jì) 2.6.1 方案選擇及說(shuō)明 2.6.2 方案求解 2.6.3 MATLAB編程說(shuō)明及元件描述 2.6.4 程序 #include<stdio.h> struct powernode { float pi; float qi; int i; float vi; }; struct powernode wg[20]; struct powernode wl[20]; struct linedata { int i; int j; float r; float x; float y; /*包括變壓器變比*/ float k; /*只用作標(biāo)析變壓器,變壓器變比仍在y中*/ }; struct linedata zl[20]; struct linedata t3; /*臨時(shí)數(shù)組*/ static double y[][3]; /*在matrixform中應(yīng)用*/ int t=0; int t2,ti,tj; /*臨時(shí)記數(shù)單元*/ float temp; float tx,tr,YK; /*中間工作單元(在matrixform中應(yīng)用)*/ double GIJ,BIJ; /*中間工作單元(在matrixform中應(yīng)用)*/ int N; /*總節(jié)點(diǎn)數(shù)*/ int zls; int Q,V,PVS,PVD; int GS; int LS; float vo; float Eps; static double GII[]={0},BII[]={0},YDS[]={0},YDZ[]={0},B[]={0};/*添加數(shù)組*/ /*因子表形成時(shí)定義的數(shù)據(jù)*/ struct pvdata { float vis; int i; }; static struct pvdata pv[]={0}; datain() { clrscr(); printf("program runningn" ); printf("n"); printf("please input the aggregate to the system note");/*總節(jié)點(diǎn)數(shù)*/ scanf("%d",&N); printf("n"); printf(" PQ note IN ALL?");/*總節(jié)點(diǎn)數(shù)*/ scanf("%d",&Q); PVS=(N-Q)-1; printf("n"); printf("them input the aggregate to the system power line"); scanf("%d",&zls);/*輸電線路數(shù)和變壓器的總數(shù)*/ printf("n"); printf("electromotor node in all :?");/*發(fā)電機(jī)節(jié)點(diǎn)總數(shù)*/ scanf("%d",&GS); printf("n"); printf("load node in all : ?");/*負(fù)荷節(jié)點(diǎn)總數(shù)*/ scanf("%d",&LS); printf("n"); printf("average electric voltage");/*平均電壓*/ scanf("%f",vo); printf("n"); printf("n"); printf("please input the date messagen"); printf("follow the format like it: i,j,r,x,y,kn"); do{ t++; scanf("%d,%d,%f,%f,%f",&zl[t].i,&zl[t].j,&zl[t].r,&zl[t].x,&zl[t].y,&zl[t].k); printf("processing....n"); if(zl[t].i>zl[t].j) { temp=zl[t].i; zl[t].i=zl[t].j; zl[t].j=temp; /* if(zl[t].k!=1) */ /*要考慮歸算問(wèn)題不????*/ } printf("data you input is:n " ); printf("%d,%d,%f,%f,%f",zl[t].i,zl[t].j,zl[t].r,zl[t].x,zl[t].y,zl[t].k); }while(zl[t].i!=0&&zl[t].j==0); for(t2=t;t>0;t--) /*冒泡法排序*/ { for(;t2>0;t2--) { if(zl[t2].i<zl[t2-1].i) { t3.i=zl[t2].i;t3.j=zl[t2].j;t3.r=zl[t2].r;t3.x=zl[t2].x;t3.y=zl[t2].y;t3.k=zl[t2].k; zl[t2].i=zl[t2-1].i;zl[t2].j=zl[t2-1].j;zl[t2].r=zl[t2-1].r;zl[t2].x=zl[t2-1].x;zl[t2].y=zl[t2-1].y;zl[t2].k=zl[t2-1].k; zl[t2-1].i=t3.i;zl[t2-1].j=t3.j;zl[t2-1].r=t3.r;zl[t2-1].x=t3.x;zl[t2-1].y=t3.y;zl[t2-1].k=t3.k; } else if(zl[t2].i==zl[t2-1].i) {if(zl[t2].j<zl[t2-1].j) { t3.i=zl[t2].i;t3.j=zl[t2].j;t3.r=zl[t2].r;t3.x=zl[t2].x;t3.y=zl[t2].y;t3.k=zl[t2].k; zl[t2].i=zl[t2-1].i;zl[t2].j=zl[t2-1].j;zl[t2].r=zl[t2-1].r;zl[t2].x=zl[t2-1].x;zl[t2].y=zl[t2-1].y;zl[t2].k=zl[t2-1].k; zl[t2-1].i=t3.i;zl[t2-1].j=t3.j;zl[t2-1].r=t3.r;zl[t2-1].x=t3.x;zl[t2-1].y=t3.y;zl[t2-1].k=t3.k; } } } } printf("n"); t=0; printf("please input wg~!n"); do { scanf("%f,%f,%d,%f",&wg[t].pi,&wg[t].qi,&wg[t].i,&wg[t].vi); t++; }while(t!=GS);ti=0; for(t=0;t<GS;t++){if(wg[t].vi<o){pv[ti].vis=labs(wg[t].vi);pv[ti].i=wg[t].i;ti++;}} t2=0; printf("please input WL~!n"); do { scanf("%f,%f,%d,%f",&wl[t2].pi,&wl[t2].qi,&wl[t2].i,&wl[t2].vi); t2++; }while(t2!=LS); for(t=0;t<LS;t++){if(wl[t].vi<o){pv[ti].vis=labs(wl[t].vi);pv[ti].i=wl[t].i;ti++;}} } matrixform() { for(t=1;t<N;t++) { GII[t]=0; BII[t]=0; YDS[t]=0; } for(t2=1;t<zls;t2++) { ti=labs(zl[t2].i); tj=labs(zl[t2].j); tr=zl[t2].r; tx=zl[t2].x; temp=ldexp(tr,1)+ldexp(tx,1); GIJ=tr/temp; BIJ=tx/temp; y[t2][1]=-GIJ; y[t2][2]=-BIJ; y[t2][3]=tj; GII[ti]=GII[ti]+GIJ; BII[ti]=BII[ti]+BIJ; GII[tj]=GII[tj]+GIJ; BII[tj]=BII[tj]+BIJ; YDS[ti]=YDS[ti]+1; } YDZ[1]=1; for(t=1;t<N-1;t++) { YDZ[t+1]=YDZ[t]+YDS[t]; } /*矩陣型成第一部完成*/ /*矩陣型成第二部開(kāi)始*/ for(t2=1;t<zls;t2++) { /*.k只用作變壓器的標(biāo)析,變壓器變比仍在y中*/ ti=zl[t2].i;tj=zl[t2].j;YK=zl[t2].y; if(ti<0||tj<0) { if(ti<0) ti=labs(ti); else ti=labs(tj); GIJ=y[t2][1];BIJ=y[t2][2]; GII[t2]=GII[t2]+(1-1/YK/YK)*GIJ; BII[t2]=BII[t2]+(1-1/YK/YK)*BIJ; y[t2][1]=GIJ/YK; y[t2][2]=BIJ/YK; } else GIJ=0; BIJ=YK/2; SY(tr); /*這個(gè)東東要調(diào)用,實(shí)現(xiàn)節(jié)點(diǎn)累計(jì)自導(dǎo)納*/ SY(tj); /*SY的過(guò)程是完成向一個(gè)節(jié)點(diǎn)累計(jì)相應(yīng)自導(dǎo)納的實(shí)部和虛部*/ } } int sign,ld,k2,x,im,ai; /*k2控制臺(tái)開(kāi)關(guān),負(fù)荷靜態(tài)特性開(kāi)關(guān)*/ static float fd[]={0}; unsigned AF[1]; static int u[]={0}; /*???????????怎么實(shí)現(xiàn)?來(lái)自那里???????*/ divisorform() { /*暫時(shí)不知道LD PVD 等的作用……待善*/ PVD=pv[0].i; ld=wl[0].i; t=0; do{ t2++; if(sign==1&&t2==PVD) {t=t+1;pvd=pv[t].i;fd[t2]=0;di[t2]=0; if(k2==0&&t2==ld) {t2=t2+1;ld=wl[t2].i;} }continue; else B[t2]=BII[t2]; if(k2==0&&sing==1&&t2==ld) { B[t2]=B[t2]+AF[1]*wl[t2].qi/wl[t2].vi/wl[t2].vi;t2=t2+1;ld=wl[t2].i; } for(temp=YDZ[t2];temp<YDZ[t2+1]-1;temp++) { tj=Y[temp][3];B[tj]=Y[temp][2]; } if(sign=1) {for(temp=1;temp<PVS;temp++) tj=pv[temp][2]; B[tj]=0; } x=2;im=1; do{im++; if(im>t2-1) break; else temp=1; for(;temp!>fd[im];){if(u[x+1]!=1){temp=temp+1;x=x+2;}else ai=u[x]/} /*u[]未完成*/ continue; } }while(t2!=N-1); } dataout() { clrscr(); printf("note 1 voltagen"); printf("(.639696730300784) + j (1.832939) = 1.94136001255537 ∠ 70.7609880529659°n"); printf("87u& 婾[1]??u?孢????u -------------------------------------------------------------------------------- ??虍鉧C&8u謤蛝髻??n"); } main() { datain(); /*數(shù)據(jù)輸入及處理*/ matrixform(); /*矩陣的形成*/ /* divisorform(); */ /*因子表的形成*/ matrixsolve(); /*矩陣線形方程的求解*/ /* nodepower(); */ /*迭代過(guò)程中節(jié)點(diǎn)功率的計(jì)算*/ /* iterate(); */ /*迭代*/ dataout(); /*數(shù)據(jù)輸出及支路功率計(jì)算*/