AC / C + + Programme et le code source de l'Informatique et Ybus Matrices Zbus
Ci-dessous est un C / C + + programme et le code source qui calcule la Ybus et Zbus d'un réseau électrique de n'importe quelle taille. Le système de saisie est écrit sur "rx.txt" avec la colonne suivante le format; "De bus», «Pour taxi ',' R ', et' X '. Le "De bus» et «Pour bus» doit être un entier positif consécutifs à partir de zéro. Bus zéro est suppose être le relais ou swing bus. Un fichier d'en-tête complexe a été utilisé pour aider les opérations de la matrice. Zbus a été calculée par la simple inversion de la Ybus.
//-----------------------------
# pragma hdrstop
//----------------------------
# pragma argsused
# include <stdio.h>
# include <conio.h>
# include "matrix.h"
# include <complex.h>
en utilisant std:: complexe;
espace de nom en utilisant les mathématiques;
typedef complexe Complexe;
typedef Matrix Matrix;
void main (void)
(
/ / déclarer les variables
int cnt, i, j, matsize = 1;
double tmp3, tmp4;
Complexe tmp6;
Grille Y, Ybus, Zbus;
FILE *;
Y. SetSize (matsize, matsize) / / set une matrice temporaire
/ / récupère la branche de données
= fopen ( "rx.txt", "r") / / ouvre le fichier
si (== NULL)
(printf ( "\ nrx.txt not found");
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 = Complexe (tmp3, tmp4);
Y (i, j) = 1.0/tmp6;
cnt + +;
)
fclose (in);
/ / fin de branche obtenir des données
/ / Création Ybus
Ybus.SetSize (matsize +1, matsize +1);
/ / Diagonal entrées
for (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);)
)
/ / fin
/ / off diagonale entrées
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 + +;
)
/ / Fin
/ / fin de la création d'autobus Y
/ / bus 0 ne sont pas inclus dans la Grille des Ybus
/ / car il est la référence bus
for (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 ( "\ n \ nYbus Grille \ n");
cout <<Ybus <<Endl;
Zbus =! Ybus / / obtenir l'inverse de la Ybus
printf ( "\ n \ nZbus Grille \ n");
cout <<Zbus <<Endl;
getch ();
)
Classé dans: gestionnaire de réseau de transport et l'analyse des flux de charge, C + +











