AC / C + + программы и исходный код для вычисления Ybus и Zbus Матрицы
Ниже C / C + + программа и исходный код, что исчисляет Ybus и Zbus той или иной электрической сети любого размера. Ввод системы, написанные на "rx.txt" со следующими колонке формате; "От автобуса ',' На автобусе ',' Р 'и, "х". "От автобус" и "до автовокзала" должны быть последовательными положительное целое число, начиная с нуля. Автобус нуля себя быть натяжные или свинга автобус. Сложных заголовка файла был использован для оказания помощи матричных операций. Zbus был создан путем простого инвертирования Ybus.
//-----------------------------
# pragma hdrstop
//----------------------------
# pragma argsused
# включить <stdio.h>
# включить <conio.h>
# включить "matrix.h"
# включить <complex.h>
с использованием обычной:: комплекса;
с использованием имен математике;
typedef сложный комплекс;
typedef матрица Matrix;
Основными недействительным (недействительными)
(
/ / объявлять переменные
int НЦДЗ, я, к, matsize = 1;
двойные tmp3, tmp4;
Комплекс tmp6;
"Матрикс" Y, Ybus, Zbus;
FILE * в;
Ю. SetSize (matsize, matsize); / / установка временного размер матрицы
/ / получить данные отрасли
в = fopen ( "rx.txt", "р") / / открыть файл
если (в == NULL)
(printf ( "\ nrx.txt не найден");
getch ();
)
НЦДЗ к = = я = 0;
для (;;)
(если (fscanf (в, "% d.", и я) == EOF)
(перерыва;)
если (я> matsize)
(matsize = я;)
fscanf (в, "% d.", и к);
если (к> matsize)
(matsize = к;)
Ю. SetSize (matsize +1, matsize 1);
fscanf (в, "% lf", и tmp3);
fscanf (в, "% lf", и tmp4);
tmp6 = комплекс (tmp3, tmp4);
Y (я, к) = 1.0/tmp6;
НЦДЗ + +;
)
fclose (в);
/ / конец получения данных филиала
/ / Создаем Ybus
Ybus.SetSize (matsize +1, matsize 1);
/ / Диагональ отзывов
за (я = 0; я <= matsize; я + +)
(для (к = 0; к <= matsize; к + +)
(Ybus (я, я) = Ybus (я, я) + Y (я, к);)
)
за (к = 0; к <= matsize; к + +)
(для (я = 0; я <= matsize; я + +)
(Ybus (к, к) = Ybus (к, к) + Y (я, к);)
)
/ / конец
/ / выкл диагональ отзывов
НЦДЗ = 0;
за (к = НЦДЗ; к <= matsize; к + +)
(для (я = 0; я <= matsize; я + +)
(если (к! я =)
(Ybus (я, к) = Ybus (к, я) =- 1,0 * Y (я, к);)
)
НЦДЗ + +;
)
/ / Конец
/ / конец создавая Y автобуса
/ / 0 автобусе не включен в Ybus Matrix
/ / поскольку он является ссылкой автобус
за (к = 1; к <= matsize; к + +)
(для (я = 1; я <= matsize; я + +)
(Ybus (я-1, й-1) = Ybus (я, к);
)
)
Ybus.SetSize (matsize, matsize);
Zbus.SetSize (matsize, matsize);
printf ( "\ n \ nYbus Matrix \ n");
Суд <<Ybus <<endl;
Zbus =! Ybus / / получения обратной Ybus
printf ( "\ n \ nZbus Matrix \ n");
Суд <<Zbus <<endl;
getch ();
)
Подала в: система передачи и анализа нагрузки, C + +











