Está en la página 1de 1

%**********************************************************************

%** Programa para la obtención de Ybus y Vbus mediante la técnica de **


%** transformaciones singulares **
%** Nájera Gutiérrez Williams Giovanni 2007301998 **
%** Ingeniería eléctrica 9E2M **
%** ESIME IPN **
%**********************************************************************

clear all %Limpia la memoria


clc %Limpia pantalla
disp(['OBTENCIÓN DE Ybus POR TRANSFORMACIONES SINGULARES'])
f=input('Dame el numero de impedancias= '); %Lectura del número de filas de la matriz Yprimitiva
disp(['f=' num2str(f)]);
c=input('dame el numero de nodos= '); %Lectura del número de columnas de la matriz Yprimitiva
disp(['c=' num2str(c)]);
disp(['FORMACIÓN DE LA MATRIZ DE INDICENCIA'])
pause
disp([' Si el elemento sale coloca -1'])
disp([' Si el elemento entra coloca 1'])
disp([' Si no hay elemento coloca 0'])
for m= 1:f %Toma la secuencia de lecturas para desplazarse por filas
for n= 1:c %Toma la secuencia de lecturas para desplazarse por columnas
sprintf('El elemento A[%d %d.]es', m,n)
valor1=input(' ') %Guarda el valor introducido
disp(['valor2=' num2str(valor1)]);
A(m,n)=valor1 %Coloca el valor en la matriz
n=n+1; %Incrementa el valor de la columna para el siguiente ciclo
end
m= m+1; %Incrementa el valor de filas para el siguiente ciclo.
end
disp(['La matriz de indicencia es'])
A
B=A'; %La matriz de incidencia se traspone como B
disp(['La matriz transpuesta es']) %Se muestra el valor de la matriz B
B
disp(['FORMACIÓN DE LA MATRIZ DE ADMITANCIAS PRIMITIVA'])
pause
P=eye(f); %Se crea una matriz identidad asignada como P
for k= 1:f %Se crea el ciclo para la lectura de datos con el número de filas definido
j=k; %Se iguala k con el valor de filas para colocar los valores en la diagonal de la matriz
sprintf('Dame el valor de la impedancia Z%d.', k)
valor3=input(' ') %Se guarda el valor Z insertado desde pantalla
valor4=1/valor3; %Se invierte el valor Z para obtener la Y para la matriz primitiva
disp(['Matriz Admitancias Primitiva=' num2str(valor4)]);
P(k,j)=valor4 %Se asigna el valor a la casilla correspondiente dentro de la matriz
k= k+1; %se incrementa el valor de k para el siguiente ciclo
end
disp(['La matriz de admitancias primitiva es']) %Se muestra el valor de la matriz de la matriz Y primitiva
P
Y=B*P*A; %Se obtiene el valor de la Y bus multiplicando matrices
disp(['LA MATRIZ Ybus ES']) %Se muestra el valor de la matriz Ybus
Y
%CREACIÓN DE LA MATRIZ Zbus
I=eye(c); %Se crea una matriz identidad de magnitud c (columnas o nodos)
for k=1:c %Se inician las operaciones para la matriz inversa bajo la diagonal
for j=1:k
if(k==j) %se realiza el caso especial en que el número en diagonal ya sea 1
diag=Y(k,j); %Se guarda el valor
for t=1:c
Y(k,t)=Y(k,t)/diag; %Operaciones para convertir a ceros bajo la diagonal en Y
I(k,t)=I(k,t)/diag; %Operaciones para convertir a ceros bajo la diagonal en I
end
else
if(Y(k,j)~=0) %Caso en donde el elemento en diagonal no es 1 pero diferente a cero
diag=Y(k,j); %Se guarda el valor
for t=1:c
Y(k,t)=(-1*diag*Y(j,t))+Y(k,t); %Operaciones para convertir a ceros bajo la diagonal en Y
I(k,t)=(-1*diag*I(j,t))+I(k,t); %Operaciones para convertir a ceros bajo la diagonal en I
end
end
end
end
end
for k=1:c %Se inician las operaciones para los elementos bajo la diagonal
for j=(k+1):c %Se incrementa el valor k para trabajar arriba de la diagonal
if(Y(k,j)~=0) %Caso cuando el valor es diferente a cero
diag=Y(k,j); %Guarda el valor
for t=1:c
Y(k,t)=(-1*diag*Y(j,t))+Y(k,t); %Operaciones para convertir a ceros arriba la diagonal en Y
I(k,t)=(-1*diag*I(j,t))+I(k,t); %Operaciones para convertir a ceros arriba la diagonal en I
end
end
end
end
pause
disp(['LA MATRIZ Zbus ES:']) %Se muestra el valor de Z bus
Zbus=I; %El valor de Z bus es la I operada
Zbus
disp(['FUENTES DE CORRIENTE EN LA RED:'])
pause
disp(['Dame los elementos de la matriz de corrientes en coordenadas rectangulares'])
disp(['Indica si la fuente entra (+) o si sale (-) al nodo correspondiente'])
for l=1:c %Secuencia para pedir valores en matris cx1
sprintf('El elemento de corriente del nodo %d. es',l)
valor6= input(' ') %Se guarda el valor dado en pantalla
D(l,1) = valor6; %Se guarda dentro de la matriz
end
Vbus=Zbus*D; %Se realiza la operación V=IZ
disp(['LA MATRIZ Vbus ES:']) %Se despliega el resultado
Vbus

También podría gustarte