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

Formacion de Ybus, Transformaciones Singulares

Embed Size (px)

DESCRIPTION

programa para conocer las tensiones de una red, por medio de la técnica de transformaciones singulares

Citation preview

Page 1: Formacion de Ybus, Transformaciones Singulares

%********************************************************************** %** 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