formacion de ybus, transformaciones singulares

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

Upload: gio-najera

Post on 29-Jun-2015

537 views

Category:

Documents


6 download

DESCRIPTION

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

TRANSCRIPT

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