sábado, octubre 09, 2010

Teorema de Ferrari (Máquinas eléctricas) en Octave

Este es un pequeño programa escrito en GNU Octave, un lenguaje de alto nivel para cómputo numérico.
El programa hace un pequeña simulación del Teorema de Ferrari, el cual nos permite hacer la equivalencia entre un campo pulsante y dos campos rotativos de sentido contrario de la mitad de amplitud que el campo inicial.
El programa es el siguiente:

# teorema_de_ferrari.m
#Licensed under GPL_v3.
# Un campo pulsante se puede escribir como dos
# campos rotativos de la mitad de amplitud que el original.
clear;
#Se establecen las condiciones basicas:
freq=60; # 60Hz
w=2*pi*freq; # velocidad angular (rad/s)
t=[0:1/6000:1/60]; # el tiempo para 60Hz
theta=0; # desfasaje de 0 grados
# Se definen los campos rotativos
Bsmr=0.5*cos(w*t-theta)-0.5*j*sin(w*t-theta);
Bscmr=0.5*cos(w*t-theta)+0.5*j*sin(w*t-theta);
# Se calcula el campo resultante:
Bs=Bsmr + Bscmr;
# Este circulo representa el valor maximo
# que esperamos:
circle_max=1*(cos(w*t)+j*sin(w*t));
circle=0.5*circle_max;
for ii=1:length(t)
plot(circle_max,'k');
hold on;
plot(circle,'k');
title("Terorema de Ferrari:\n Un campo pulsante se puede escribir como dos campos rotativos de la mitad de amplitud que el original.");
grid on;
# Se dibujan los cuatro campos magnéticos:
plot([0 real(Bsmr(ii))],[0 imag(Bsmr(ii))],'k','LineWidth',2);
plot([0 real(Bscmr(ii))],[0 imag(Bscmr(ii))],'b','LineWidth',2);
plot([0 real(Bs(ii))],[0 imag(Bs(ii))],'r','LineWidth',2);
axis square;
axis ([-1 1 -1 1]);
drawnow;
hold off;
endfor


La salida es por GNUPlot:
 

No hay comentarios.: