AC / C + + y el Programa de Código Fuente de Informática Ybus y Zbus Matrices
A continuación se presenta una relación C / C + + y el programa de código fuente que calcula la Ybus y Zbus de una red eléctrica de cualquier tamaño. El sistema de entrada está escrito en "rx.txt" con la columna siguiente formato: "A partir de autobús', 'Para autobús ',' R 'y,' x '. El campo 'De bus »y« Para bus »debe ser un número entero positivo consecutivo a partir de cero. Bus cero es asumir que se holgura el swing o autobús. Un complejo archivo de cabecera se utilizó para ayudar a las operaciones de la matriz. Zbus se calcula simplemente invirtiendo la Ybus.
//-----------------------------
# pragma hdrstop
//----------------------------
# pragma argsused
# include <stdio.h>
# include <conio.h>
# include "matrix.h"
# include <complex.h>
usando std:: complejo;
el uso de nombres de matemáticas;
typedef complejo Complejo;
typedef Matrix Matrix;
void main (void)
(
/ / declarar variables
int CNT, i, j, matsize = 1;
doble tmp3, tmp4;
Complejo tmp6;
Y Matrix, Ybus, Zbus;
FILE * a;
Y. SetSize (matsize, matsize); / / establecer una matriz de tamaño temporal
/ / obtener la sucursal de datos
a = fopen ( "rx.txt", "r"); / / abrir el archivo
if (a == NULL)
(printf ( "\ nrx.txt no encontrada");
getch ();
)
CNT = j = i = 0;
(;);
(if (fscanf (a, "% d", & i) == EOF)
(break;)
if (i> matsize)
matsize = (i;)
fscanf (a, "% d", & j);
if (j> matsize)
(matsize = j;)
Y. SetSize (matsize +1, matsize +1);
fscanf (a, "% lf", & tmp3);
fscanf (a, "% lf", & tmp4);
tmp6 = Complejo (tmp3, tmp4);
Y (i, j) = 1.0/tmp6;
CNT + +;
)
fclose (a);
/ / fin de obtener datos rama
/ / Crear Ybus
Ybus.SetSize (matsize +1, matsize +1);
/ / Diagonal entradas
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 diagonal entradas
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 crear Y bus
/ / bus 0 no se incluye en la matriz Ybus
/ / porque es la referencia de 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 Matrix \ n");
tribunal <<Ybus <<Endl;
Zbus =! Ybus; / / obtener la inversa de la Ybus
printf ( "\ n \ nZbus Matriz \ n»);
tribunal <<Zbus <<Endl;
getch ();
)
Presentadas en: Sistema de Transmisión y Análisis de flujo de carga, C + +











