Matlab - Modelado de fourier.

   
Vista:

Modelado de fourier.

Publicado por dario nahuel güimil (3 intervenciones) el 17/10/2011 18:51:45
Hola:

Quería consultar este problema que tengo, porque si bien el programa corre.
No lo esta haciendo bien, tal vez tengo un problema en el traspaso del problema al lenguaje de matlab, porque hace poco empece a usar este programa.

Gracias y disculpen las molestias.



%función de concentración exponencial y su serie de fourier trigonométrica


%1° exponencial de concentracion del componente A.

t=0:0.1:1;
cia= 20;
qsa= 2;
to=0;
n=1;

hold on

for i=1:1:n
cf= exp((-qsa*(t-to)))*cia;
k(i,:)=cf;
plot(t,k,'--r')


end

hold on

%La función trigonometrica de fourier que se aproxima a las exponenciales.

t=0:0.1:1;
m=input('ingrese un valor de m: ');
T= input(' ingrese valor del periodo: ');
wo=2*pi/T;


ao= (-cia/qsa)*(exp(-qsa)-1);



hold on
for i=1:1:m

an=(2/T)*((exp(-qsa*(t-to)).*((-cos(wo*i*t)./qsa) + (sin(wo*i*t).*wo*i/qsa)))/((wo/qsa)^2 + cia));


end
hold on
for i=1:1:m

bn= (2/T)*(((exp(-qsa*(t-to))).*(-sin(wo*i*t))./qsa * + (wo*i/(qsa)^2 ).* cos(wo*i*t).*exp(-qsa*(t-to))./(cia+(wo/qsa)^2)));

end
hold on
s=0;


for i=1:1:m


Fo=(1/2)*ao + cos(i*wo*t).* an + sin(wo*i*t).* bn ;



F(i,:)=Fo;



plot(t,F,'k')

end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO

Modelado de fourier.

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 18/10/2011 03:02:41
%========================
%1° exponencial de concentracion del componente A.

clear all
cia=20;
qsa=2;
to=0;
n=1;

t=0:0.1:1;
k=exp((-qsa*(t-to)))*cia;
plot(t,k,'--r')
hold on
%La función trigonometrica de fourier que se aproxima a las exponenciales.
t=0:0.1:1;
m=length(t);
T= input(' ingrese valor del periodo: ');
wo=2*pi/T;
ao= (-cia/qsa)*(exp(-qsa)-1);
for i=1:m
an(i)=(2/T)*((exp(-qsa*(t(i)-to))*((-cos(wo*i*t(i))/qsa)+(sin(wo*i*t(i))*wo*i/qsa)))/((wo/qsa)^2+cia));
bn(i)= (2/T)*(((exp(-qsa*(t(i)-to)))*(-sin(wo*i*t(i)))/qsa+ (wo*i/(qsa)^2 )*cos(wo*i*t(i))*exp(-qsa*(t(i)-to))/(cia+(wo/qsa)^2)));
F(i)=(1/2)*ao + cos(i*wo*t(i))*an(i) + sin(wo*i*t(i))*bn(i) ;
end
plot(t,F,'k')
hold off
%=========================


saludos
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR MATLAB
jjcc94@hotmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Modelado de fourier.

Publicado por Dario Nahuel Güimil (3 intervenciones) el 18/10/2011 03:40:06
Jose:

Le agradezco por su tiempo primero que nada.

Vi lo que hizo y algunas cosas me van a servir bastante.

Me faltaría hacer un for mas para lo que yo llamaba en mi sentencia i que eran los n (numero entero positivo) que me hacia repetir el ciclo, a parte del for para el tiempo..

Lo trate de agregar pero me tira un error que el vector debe ser del mismo tamaño.

Por ejemplo: La sentencia que hizo usd solamente me permite agregar el periodo y hace un funcion, pero ademas yo necesito decirle el periodo y la cantidad de n veces que lo haga para que mejore la aproximacion a la funcion exponencial, logrando asi disminuir el error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO

Modelado de fourier.

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 18/10/2011 09:48:28
%==================================
clear all
cia=20;
qsa=2;
to=0;
n=1;
m=input('ingrese un valor de m:');
T= input(' ingrese valor del periodo: ');
t=linspace(0,1,m);
k=exp((-qsa*(t-to)))*cia;
figure(gcf)
plot(t,k,'--r')
hold on
wo=2*pi/T;
ao= (-cia/qsa)*(exp(-qsa)-1);
for i=1:m
an(i)=(2/T)*((exp(-qsa*(t(i)-to))*((-cos(wo*i*t(i))/qsa)+(sin(wo*i*t(i))*wo*i/qsa)))/((wo/qsa)^2+cia));
bn(i)= (2/T)*(((exp(-qsa*(t(i)-to)))*(-sin(wo*i*t(i)))/qsa+ (wo*i/(qsa)^2 )*cos(wo*i*t(i))*exp(-qsa*(t(i)-to))/(cia+(wo/qsa)^2)));
F(i)=(1/2)*ao + cos(i*wo*t(i))*an(i) + sin(wo*i*t(i))*bn(i) ;
end
plot(t,F,'k')
hold off
%============================================

EJECUCIÓN
>> modelado_fourier
ingrese un valor de m:13
ingrese valor del periodo: 20

saludos
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR MATLAB
jjcc94@hotmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Modelado de fourier.

Publicado por dario nahuel güimil (3 intervenciones) el 18/10/2011 15:15:17
Jose:

Tal vez no este dando porque tenga un error en los calculos.
Me dijieron que hay una funcion int que sirve para integrar funciones.

tengo que integrar de 0 a 1 y T=1, siendo n= la cantidad de veces que haga el ciclo para mejorar la aproximación.

an= 2/T * ( integral [( exp(-qsa*(t-to) *cia) * cos (wo*n*t) dt])

bn= 2/T * ( integral [( exp(-qsa*(t-to) *cia) * sen (wo*n*t) dt])


Luego cargar esos datos en:

Fo=(1/2)*ao +[ cos(n*wo*t) *an ]+ [sin(wo*n*t)*bn]


Desde ya le agradezco su disposición jose.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar