AC / C + + Programma e codice sorgente per Computing Ybus e Zbus Matrici
Di seguito è riportato un C / C + + programma e codice sorgente che calcola la Ybus e Zbus di una determinata rete elettrica di qualsiasi dimensione. Il sistema di input è scritto su "rx.txt" con il seguente formato colonna; 'Da bus',' Per autobus ',' R ', e,' x '. Il 'autobus Da' e 'Per il bus' deve essere un intero positivo consecutivi a partire da zero. Bus è pari a zero assumere per essere il lasco o swing autobus. Un file header complesso è stato utilizzato per assistere le operazioni di matrice. Zbus è stato calcolato semplicemente invertendo la Ybus.
//----------------------------- # Pragma hdrstop //-------------- --------------- # Pragma argsused # include <stdio.h> # include <conio.h> # include "matrix.h" # include <complex.h> utilizzando std:: complesso; using namespace matematica; typedef complesso complessi; typedef matrice Matrix; void main (void) (/ / dichiarare variabili int cnt, i, j, matsize = 1; doppio tmp3, tmp4; Complesso tmp6; Matrix Y, Ybus, Zbus; FILE * a; Y. SetSize (matsize, matsize); / / impostare una matrice di dimensioni temporanea / / ottenere il ramo dei dati in = fopen ( "rx.txt", "r"); / / apre il file if (in == NULL) (printf ( "nrx.txt non trovato"); getch ();) cnt = j = i = 0; for (;) (if (fscanf (in, "% d", & i) == EOF) (break;) if (i> matsize) (matsize = i;) fscanf (in, "% d", & j); if (j> matsize) (matsize = j;) Y. SetSize (matsize +1, matsize + 1); fscanf (in, "% lf", & tmp3); fscanf (in, "% lf", & tmp4); tmp6 = Complex (tmp3, tmp4); Y (i, j) = 1.0/tmp6; cnt + +;) fclose (in); / / fine di ottenere dati ramo / / Crea Ybus Ybus.SetSize (matsize +1, matsize 1); / / Diagonal voci per (i = 0; i <= matsize; i + +) (for (j = 0; j <= matsize; j + +) (Ybus (i, i) = Ybus (i, i) + Y (i, j);)) for (j = 0; j <= matsize; j + +) (for ( i = 0; i <= matsize; i + +) (Ybus (j, j) = Ybus (j, j) + Y (i, j);)) / / fine / / off diagonale voci cnt = 0; for (j = cnt; j <= matsize; j + +) (for (i = 0; i <= matsize; i + +) (if (j! = i) (Ybus (i, j) = Ybus (j, i) =- 1,0 * Y (i, j);)) cnt + +;) / / fine / / fine di creare Y autobus / / autobus 0 non è incluso nel Ybus Matrix / / perché è il riferimento per l'autobus (j = 1; j <= matsize; j + +) (for (i = 1; i <= matsize; i + +) (Ybus (i-1, j-1) = Ybus (i, j);)) Ybus.SetSize (matsize, matsize); Zbus. SetSize (matsize, matsize); printf ( "nnYbus Matrixn"); cout <<Ybus <<endl; Zbus =! Ybus; / / ottenere l'inverso del Ybus printf ( "nnZbus Matrixn"); cout <<Zbus << endl; getch ();) Depositata in: sistema di trasmissione e di carico del flusso, C + +











