You are on page 1of 65

ESTUDIANTE

:
CI.
:
GRUPO Nro.
:
FECHA DE ENT. :
MATERIA
:
CARRERA
:
PRE INFORME Nro.:

CAP. INF. GUERY OSCAR DE LA BARRA CERVANTES


4992347 LP.
1
08-AGO-16
SISTEMAS DE MODELADO Y SIMULACIN
INGENIERA EN TELECOMUNICACIONES
2
FUNCIONES MATEMTICAS

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/simbolico/portada/portada.html

1 - 65

PRE INFORME DE LABORATORIO N. 2


FUNCIONES MATEMTICAS EN MATLAB
I.

ANTECEDENTES
MATLAB proporciona un ambiente de computacin tcnica integrada que
combina computacin numrica, grficos y visualizacin avanzada y un lenguaje
de programacin de alto nivel.
Sea cual fuere el objetivo, un algoritmo, anlisis, grficos, informes o simulacin,
MATLAB lo lleva all. El lenguaje flexible e interactivo de MATLAB permite a
ingenieros y cientficos expresar sus ideas tcnicas con simplicidad. Los
poderosos y amplios mtodos de cmputo numrico y graficacin permiten la
prueba y exploracin de ideas alternativas con facilidad, mientras que el
ambiente de desarrollo integrado facilita producir resultados prcticos
fcilmente. MATLAB combina computacin numrica, grficos 2D y 3D y
capacidades de lenguaje en un nico ambiente fcil de usar.
MATLAB provee acceso inmediato a las caractersticas grficas especializadas
requeridas en ingeniera y ciencias. Potente graficacin orientada a objetos
grficos le permite graficar los resultados de su anlisis, incorporar grficos en
sus modelos de sistemas, rpidamente presentar complejos 3-D objetos, y crear
resultados de presentacin.

II.

OBJETIVO
Configurar y utilizar las bibliotecas de MATLAB para el manejo de Funciones
Matemticas.

III.

MARCO TERICO
A. Formas de declarar una funcin
1. Numrica
Una tabla de nmeros
X
1
2
3
4
5
6

Y
1
4
9
16
25
36
2 - 65

2. Analtica
Para el caso anterior la expresin sera:
Y = X2
3. Simblica
Las funciones simblicas son cadenas de caracteres que representan
nmeros, funciones, operadores y variables. Para este caso las variables
no necesitan tener un valor predefinido. Ej:
Y =[sin ( x ) +cos ( x ) ]2

Y =sin ( x ) Y ' =cos ( x)

Entre los principales funciones simblicas tenemos:


Operaciones Algebraicas
F(x) +G(x)
Composicin de Funciones

F(x)

G
(( x ))
G(x ) H (x )=F

Correlacin de Funciones
Es la comparacin de dos funciones. Nos da el grado de aproximacin
entre las funciones. El resultado de una correlacin es tambin una
funcin (Funcin de Correlacin). Consiste en superponer las funciones
para ver los puntos de coincidencia.
Autocorrelacin de Funciones
Es la comparacin de la misma funcin en el tiempo. Una funcin puede
mejorar en el tiempo o no. Se logra desplazando la funcin en el tiempo.
Correlacin Cruzada
3 - 65

Consiste en tomar dos funciones y desplazarlas en el tiempo en sentido


opuesto.

IV.

MARCO PRCTICO
A. Cmo maneja MATLAB la operacin simblica?
La herramienta Symbolic Math Toolbox define un nuevo tipo de dato
denominado objeto simblico, que representan a variables, expresiones y
matrices.
El comando sym se usa para crear objetos simblicos en MATLAB. El
argumento de sym es una cadena de caracteres (string) entre comillas
simples. Por ejemplo:
>> sym('x')
>> sym('2')
>> sym('1/3')
Hemos creado tres objetos simblicos, x es una variable, 2 es un nmero y
1/3 es una fraccin. Vamos a apreciar la diferencia entre operar con
nmeros a operar con objetos simblicos.
>> sqrt(2)
ans = 1.4142
>> sqrt(sym('2'))
ans =2^(1/2)
>> 2/3+1/2
ans = 1.1667
>> sym('2/3')+sym('1/2')
ans =7/6
>> sin(pi)
ans = 1.2246e-016
>> sin(sym('pi'))
ans =0
En la ltima lnea, vemos claramente la diferencia entre los valores que
devuelve el seno de .
Supongamos que queremos evaluar una funcin f(x) para un determinado
valor de x:
>> x=sym('1-sqrt(2)');
>> y=x^2-2*x
4 - 65

y =(2^(1/2) - 1)^2 + 2*2^(1/2) - 2


>> simplify(y)
ans =1
sym nos permite crear y dar un valor inicial a una variable simblica x.
Se ha creado una variable simblica x y otra variable simblica y, tal como
puede verse en la ventana Workspace. El comando simplify que
estudiaremos ms adelante simplifica la expresin resultante.

El comando syms permite declarar ms de una variable simblica y no


precisa de comillas simples, por lo que se utilizar con mayor frecuencia.
>> syms x y;
>> s=x+2*y-x
s =2*x
>> r=sqrt(x^2+y^2);
Se han creado dos variables simblicas nuevas s y r tal como podemos
apreciar en la ventana Workspace.
Los comandos s=x+2*y+x, r=sqrt(x^2+y^2), son ejemplos de expresiones
simblicas.
B. Tipos de Operaciones entre funciones que nos proporciona MATLAB
(con ejemplos)
expand
Realiza operaciones con expresiones simblicas tal como vemos en el
siguiente ejemplo:
5 - 65

y=(x1)3+3x2+1

>> syms x;
>> y=(x-1)^3+3*x^2+1;
>> expand(y)
ans =x^3 + 3*x
Se ha declarado una variable simblica x con syms y se crea una variable
simblica y y otra variable simblica, por defecto, ans donde se guarda el
resultado de expand.

simplify
Con un ejemplo vamos a ver cmo este comando simplifica la siguiente
expresin algebraica:

1 1
( x 2x+ 2 )
x x
1
x1+
x

>> syms x;
>> y=(x^2-x+1/x-1/x^2)/(x-1+1/x);
>> simplify(y)
ans =x - 1/x

factor
Como su nombre indica, factoriza una expresin. Primero vamos a probar
con nmeros y a continuacin, con expresiones simblicas:

6 - 65

360=25325

>> factor(360)
ans =
2 2 2 3 3
>> factor(sym('360'))
ans =2^3*3^2*5

y=x82x69x4+2x2+8

>> syms x;
>> factor(x^8-2*x^6-9*x^4+2*x^2+8)
ans =(x - 1)*(x - 2)*(x + 2)*(x + 1)*(x^2 + 2)*(x^2 + 1)
subs

Evala numricamente una expresin simblica, para un determinado valor


de la variable simblica x.

>> syms x;
>> y=x^8-2*x^6-9*x^4+2*x^2+8;
>> subs(y,x,2)
ans = 0
>> subs(y,x,-0.5)
ans = 7.9102

Valores que se asignan a los parmetros a, b y c para resolver una


determinada ecuacin de segundo grado. Una tabla de valores de la
funcin y=x2-x-6.

>> syms a b c x;
>> y=a*x^2+b*x+c;
7 - 65

>> yy=subs(y,{a,b,c},{1 -1 -6})


yy =x^2 - x - 6
>> subs(yy,[-2:0.5:2])
ans =
0 -2.2500 -4.0000 -5.2500 -6.0000 -6.2500 -6.0000
-5.2500 -4.0000

Hay que tener cuidado con la funcin subs, ya que nos puede pasar de un
objeto simblico a una variable MATLAB. Los objetos simblicos aparecen
claramente diferenciados de las variables en la ventana Wokspace, tal
como vemos en la figura:

>> syms a x;
>> y=sqrt(a*(x-2))
y =(a*(x - 2))^(1/2)
>> yy=subs(y,a,5)
yy =(5*x - 10)^(1/2)
>> z=subs(yy,x,3)
z = 2.2361

Hemos declarado dos variables simblicas a y x en la primera lnea. En la


segunda, y es una nueva variable simblica que depende de a y x. A la
variable a le damos el valor 3. En la tercera, yy depende de la variable
simblica x. Sin embargo, en la cuarta lnea, asignamos a x un valor 3 y la
nueva variable z deja de ser simblica, tal como vemos en la ventana
Workspace y guarda el nmero decimal 2.2361 que es una aproximacin
decimal de la raz cuadrada de 5.

8 - 65

Si queremos que z siga siendo simblica, tenemos que escribir

>> z=subs(yy,x,sym('3'))
z =5^(1/2)

La respuesta exacta es raz cuadrada de cinco. Por tanto, tenemos que


manejar con cuidado la funcin subs y fijarnos en la ventana Wokspace de
las variables.

Una variable simblica puede ser sustituida por otra variable simblica. Por
ejemplo, la variable x se sustituye poru+v y la variable y se sustituye por
u-v.

>> syms x y;
>> z=x^2-y^2;
>> syms u v;
>> z=subs(z,{x,y},{u+v,u-v})
z =(u + v)^2 - (u - v)^2
>> simplify(z)
ans =4*u*v
solve
Resuelve una ecuacin o un sistema de ecuaciones. Por ejemplo, calcular
las races de la ecuacin

x2+x/61/3=0

>> syms x;
>> solve(x^2+x/6-1/3)
ans =
1/2
-2/3
9 - 65

Por defecto, solve iguala la expresin simblica a cero


Una forma equivalente de hacer lo mismo es la siguiente:

>> eq='x^2+x/6-1/3=0';
>> solve(eq)
ans =
1/2
-2/3

Vamos a resolver la conocida ecuacin de segundo grado

ax2+bx+c=0

>> syms a b c x;
>> eq='a*x^2+b*x+c=0';
>> solve(eq,x)
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)

Hemos aadido un segundo argumento a solve para indicarle que deber


resolver la ecuacin de segundo grado respecto de la variable simblica x,
que previamente hemos declarado con syms.

Resolver el sistema de dos ecuaciones con dos incgnitas:

3x+2y=1
xy=2
10 - 65

>> syms x y;
>> eq1='3*x+2*y=-1';
>> eq2='x-y=2';
>> [x1 y1]=solve(eq1,eq2,x,y)
x1 =3/5
y1 =-7/5

Lmites

>> sym x a;
>> y=(x^2+2*x-1)/(x^2+1);
>> limit(y,x,1)
ans =1
>> limit(sin(a*x)/x,x,0) % alternativamente, limit(sin(a*x)/x)
ans =a
>> limit((1+a/x)^x,x,inf) %alternativamente, limit((1+a/x)^x,inf)
ans =exp(a)
>> y=1/(sin(x)^2)-1/x^2;
>> limit(y,x,0)
ans =1/3
>> y=cos(2*x)^(3/x^2);
>> limit(y,x,0)
ans =1/exp(6)
inf representa en MATLAB el infinito, x representa la variable respecto de la
cual se calcula el lmite. La funcin limit requiere tres parmetros pero
asume valores por defecto, como puede probarse en los comentarios al
cdigo.
La derivada de una funcin f(x) es el lmite

La derivada de y=sin(x) es y'=cos(x)


>> syms x h;
>> limit((sin(x+h)-sin(x))/h,h,0)
ans =cos(x)

11 - 65

De forma alternativa, podemos calcular las derivadas definiendo la


funcin f(x) como funcin annima y aplicando la definicin de derivada.
>> syms x h;
>> f=@(x) sin(x)
>> limit((f(x+h)-f(x))/h,h,0)
ans =cos(x)
Lmites por la izquierda y por la derecha
>>syms x;
>> limit(x/abs(x),x,0,'left')
ans =-1
>> limit(x/abs(x),x,0,'right')
ans =1
Derivada de una funcin
La funcin diff calcula la derivada de una funcin respecto a una
variable x. Por defecto, calcula la derivada primera, pero tambin puede
calcular la derivada segunda, tercera, etc., indicndoselo en su segundo
argumento.
>> syms x;
>> y=(sin(x))^2;
>> yp=diff(y)
yp =2*cos(x)*sin(x)
>> ypp=diff(yp)
ypp =2*cos(x)^2 - 2*sin(x)^2
>> diff(y,2)
ans =2*cos(x)^2 - 2*sin(x)^2
Derivadas parciales (respecto de una variable)
>> syms x y;
>> diff(x*sin(x*y),x)
ans =sin(x*y) + x*y*cos(x*y)
>> diff(x*sin(x*y),y)
ans =x^2*cos(x*y)
Representacin grfica
ezplot('f(x)',[xmin xmax ymin ymax])
funcin f(x) en el intervalo especificado.
Representamos la funcin:
12 - 65

representa

grficamente

una

en el intervalo [0 5 -1 1]
>> syms x;
>> ezplot('exp(-0.3*x)*cos(4*x)',[0 5*pi -1 1])

Estudio de una funcin


Sea la funcin:

La representamos grficamente:
>> syms x;
>> y=x^2/(x^2-x-6);
>> ezplot(y,[-10 10])

13 - 65

Puntos de corte con el eje X


son las races de la ecuacin:

El nico punto de corte es (0,0)


>> solve(y)
ans =
0
0
Asntotas
La asntota horizontal se calcula tomando el lmite de f(x) cuando x se
aproxima al infinito positivo
>> limit(y,inf)
ans =1
14 - 65

La asntota horizontal es la recta de ecuacin y=1


Las asntotas verticales se encuentran buscando
denominador, es decir resolviendo la ecuacin x2-x-6=0

las

races

del

>> solve(x^2-x-6)
ans =
3
-2
Las asntotas verticales son las rectas de ecuacin x=3, x=-2.
Mximos, mnimos y puntos de inflexin
Los extremos de un funcin se calculan haciendo la derivada de la funcin
igual a cero.

>> yp=diff(y)
yp =- (2*x)/(- x^2 + x + 6) - (x^2*(2*x - 1))/(- x^2 + x + 6)^2
>> solve(yp)
ans =
0
-12
Para determinar si es un mximo o un mnimo, calculamos la derivada
segunda y determinamos su signo para x=0 y x=-12.

Para determinar los puntos de inflexin igualamos la derivada segunda a


cero y obtenemos las races
>> ypp=diff(y,2)
ypp =
- 2/(- x^2 + x + 6) - (2*x^2)/(- x^2 + x + 6)^2 - (2*x^2*(2*x - 1)^2)...
/(- x^2 + x + 6)^3 - (4*x*(2*x - 1))/(- x^2 + x + 6)^2
>> simplify(ypp)
ans =18/(5*(x - 3)^3) - 8/(5*(x + 2)^3)
>> subs(ypp,x,0)
ans = -0.3333
15 - 65

>> subs(ypp,x,-12)
ans = 5.3333e-004
>> solve(ypp) %puntos de inflexin
ans =
- 6/7 + (6*6^(1/2)*i)/7
- 6/7 - (6*6^(1/2)*i)/7

Para x=0, y''<0 hay un mximo


Para x=-12, y''>0 hay un mnimo
La curva no tiene puntos de inflexin, la ecuacin y''=0, no tiene races
reales.
Creamos el script func_estudio, para dibujar la funcin, los ejes y las
asntotas.
syms x;
y=x^2/(x^2-x-6);
hold on
ezplot(y,[-15 10])
asint=limit(y,inf);
raices=solve('x^2-x-6');
line([-15 10],[0 0]) %eje horizontal
line([0 0],[-5 10]) %eje vertical
plot([-15 10],[asint asint],'g') %asntota horizontal
plot(raices(1)*[1 1],[-5 10],'r') %asntotas verticales
plot(raices(2)*[1 1],[-5 10],'r')
hold off
grid on

16 - 65

Series

La funcin symsum(f,a,b) suma la expresin f a medida que la variable


simblica vara de a hasta b.

>> symsum(k^2,1,5)
ans =55

17 - 65

>> syms k N;
>> symsum(k,0,N)
ans =(N*(N + 1))/2
>> symsum(k^2,0,N)
ans =(N*(2*N + 1)*(N + 1))/6

>> syms x k
>> symsum(x^k/sym('k!'),k,0,inf)
ans =exp(x)

Dado que hay dos variables simblicas x y k, especificamos en el segundo


parmetro de la funcin sysmsum que la suma se refiere a k

>> syms k x;
>> f=(-1)^k*x^(2*k+1)/sym('(2*k+1)!');
>> symsum(f,k,0,inf)
ans =sin(x)

Desarrollo en serie de Taylor

La frmula general del desarrollo en serie de la funcin f(x) alrededor


de x=a es:
18 - 65

donde el numerador es la derivada k-sima de f(x) evaluada en x=a.

taylor(f,n+1,a), proporciona los primeros n trminos del desarrollo en serie


de Taylor de la funcin f alrededor del punto x=a. Si se omite a se toma x=0,
por defecto

>> syms x;
>> taylor(exp(x),4)
ans =x^3/6 + x^2/2 + x + 1
>> taylor(log(1+x),7)
ans =- x^6/6 + x^5/5 - x^4/4 + x^3/3 - x^2/2 + x
>> taylor(log(x),x,5,1)
ans =x - (x - 1)^2/2 + (x - 1)^3/3 - (x - 1)^4/4 - 1
En el ltimo caso, se muestran 5 trminos del desarollo es serie de log(x)
alrededor de a=1.

Representamos grficamente la funcin exp(-2x2) en color rojo y los


primeros trminos de su desarrollo en serie en color azul. Escribimos el
script des_serie.

syms x;
y=exp(-2*x^2);
y1=taylor(y,x,6) %desarrollo en serie
hold on
19 - 65

g1=ezplot(y,[-1 1]);
set(g1,'color','red')
g2=ezplot(y1,[-1 1]);
set(g2,'color','blue')
legend('exp(-2*x^2)','desarrollo en serie','Location','South')
title('Serie de Taylor')
hold off
grid on

Corremos el script des_serie en la ventana de comandos

y1 =2*x^4 - 2*x^2 + 1

Integral de una funcin

20 - 65

El comando int(f,x,a,b) calcula la integral de la expresin f, respecto de la


variable x, en el intervalo [a,b] donde ay b pueden ser cantidades numricas
o variables simblicas.

Integrales indefinidas

Si no ponemos lmites a la integral, obtenemos la integral indefinida, la


funcin cuya derivada es el integrando.

>> syms x;
>> y=sin(x)^2;
>> z=int(y)
z =x/2 - sin(2*x)/4
>> y=diff(z)
y =1/2 - cos(2*x)/2
>> simplify(y)
ans =sin(x)^2

Calculamos la derivada con diff, simplificamos la expresin obtenida


con simplify y obtenemos el integrando.

Integales definidas

Para calcular la integral

21 - 65

>> syms x;
>> y=sin(x)^2;
>> int(y,0,pi)
ans =pi/2

En este ejemplo,

la integral no se puede calcular salvo que el parmetro a se declare positivo

>> syms x a;
>> y=exp(-a*x^2);
>> int(y,x,-inf,inf)
Warning: Explicit integral could not be found.
>> clear
>> syms x;
>> syms a positive;
>> y=exp(-a*x^2);
>> int(y,x,-inf,inf)
ans =pi^(1/2)/a^(1/2)
>> yy=subs(y,a,sym('1/2'))
yy =1/exp(x^2/2)
>> ezplot(yy)
>> grid on

22 - 65

En este ejemplo, uno o los dos lmites de integracin respecto de la variable


por defecto son simblicos.
Un cuerpo se mueve a lo largo de una lnea recta de acuerdo a la ley v=t34t2 +5 m/s. Si en el instante t0=2 s est situado a x0=4 m del origen. Calcular
la posicin x del mvil en cualquier instante.

>> syms t;
>> v=t^3-4*t^2+5;
23 - 65

>> x=int(v,2,t)+4
x =t*(t^2*(t/4 - 4/3) + 5) + 2/3
>> expand(x)
ans =t^4/4 - (4*t^3)/3 + 5*t + 2/3

Series de Fourier

Las ondas armnicas continuas no existen realmente, ya que todos los


movimientos ondulatorios estn limitados tanto espacial como
temporalmente. Utilizando el anlisis de Fourier y la transformada de
Fourier se pueden describir formas de ondas ms complejas como las que
producen los instrumentos musicales.

El anlisis de Fourier surgi a partir del intento de ste matemtico francs


por hallar la solucin a un problema prctico, la conduccin del calor en un
anillo de hierro. Demostr que se puede obtener una funcin discontinua a
partir de la suma de funciones continuas. Esta tesis fue defendida por
Fourier ante la Academia Francesa, lo que motiv severas objeciones de
los matemticos ms importantes de su poca como Lagrange, Laplace,
etc.

Funciones armnicas

En primer lugar, vamos a distinguir entre las magnitudes: amplitud A,


frecuencia f y fase en la funcin armnica

x=Asin(2ft+).

Dos amplitudes distintas, A=10 y A=5 y la misma frecuencia f=100 Hz, (el
tiempo se mide en milisegundos, ms).

24 - 65

subplot(2,1,1)
t=0:0.1:50;
x=10*sin(2*pi*0.1*t); %amplitud 10
plot(t,x,'r')
xlabel('t(ms)')
ylabel('x')
title('Distinta amplitud')
ylim([-11,11])
grid on
subplot(2,1,2)
x=5*sin(2*pi*0.1*t); %amplitud 5
plot(t,x,'r')
ylim([-10,10])
xlabel('t(ms)')
ylabel('x')
ylim([-11,11])
grid on

25 - 65

La misma amplitud A=10, dos frecuencias distintas f=100 y f=200 Hz

subplot(2,1,1)
t=0:0.1:50;
x=10*sin(2*pi*0.1*t); %frecuencia, 100 Hz
plot(t,x,'r')
xlabel('t(ms)')
ylabel('x')
title('Distinta frecuencia')
ylim([-11,11])
grid on
subplot(2,1,2)
x=10*sin(2*pi*0.2*t); %frecuencia, 200 Hz
plot(t,x,'r')
xlabel('t(ms)')
ylabel('x')
ylim([-11,11])
grid on

26 - 65

Fases iniciales distintas: 0, /2, ,3/2, misma frecuencia f=100 Hz y


misma amplitud A=10

subplot(4,1,1)
t=0:0.1:50;
x=10*sin(2*pi*0.1*t);
plot(t,x,'r')
xlabel('t(ms)')
ylabel('x')
title('Distinta fase inicial')
ylim([-11,11])
grid on
subplot(4,1,2)
x=10*sin(2*pi*0.1*t+pi/2);
plot(t,x,'r')
xlabel('t(ms)')
ylabel('x')
ylim([-11,11])
grid on
subplot(4,1,3)
x=10*sin(2*pi*0.1*t+pi);
plot(t,x,'r')
xlabel('t(ms)')
ylabel('x')
ylim([-11,11])
grid on
subplot(4,1,4)
x=10*sin(2*pi*0.1*t+3*pi/2);
plot(t,x,'r')
xlabel('t(ms)')
ylabel('x')
ylim([-11,11])
grid on

27 - 65

Una funcin peridica resultado de la superposicin de tres funciones


armnicas con distintas frecuencias, amplitudes y fases iniciales

x=200sin(2f100+/2)+100sin(2f200+)+100sin(2f400+3/2)

f=[100,200,400]; %frecuencias
A=[200,100,100]; %amplitudes
phi=[90,180,270]; %fases
subplot(2,2,1)
stem(f,A)
axis([0,500,0,210])
xlabel('Frecuencia')
ylabel('Amplitud')
subplot(2,2,2)
stem(f,phi)
axis([0,500,0,360])
xlabel('Frecuencia')
set(gca,'YTick',0:90:360)
set(gca,'YTickLabel',{'0',90','180','270','360'})
ylabel('Fase')
subplot(2,2,3:4) %resultante
t=(0:0.1:30)/1000; %milisegundos
x=zeros(1,length(t));
for i=1:length(f)
28 - 65

x=x+A(i)*sin(2*pi*f(i)*t+phi(i)*pi/180);
end
plot(t,x,'r')
xlabel('t(ms)')
ylabel('x')
title('Resultante')
ylim([-410,410])
set(gca,'XTick',(0:5:30)/1000)
set(gca,'XTickLabel',{'0','5','10','15','20','25','30'})
grid on

Funcin peridica

Una funcin es peridica de periodo P si hay un nmero P>0 tal


que f(t+P)=f(t).
Cualquier
mltiplo n entero
de P
es
tambin
periodo f(t+nP)=f(t).
29 - 65

La funcin f(t)=cos(2t)+cos(4t)/2, es la suma de dos funciones peridicas


de periodos 1 y 0.5, respectivamente. Como podemos ver en la grfica f(t)
es peridica con periodo P=1.

Las funciones cos(t) y cos(2t) son peridicas de periodo 2


y 2/2 respectivamente, pero la suma f(t)=cos(t)+cos(2t) no es
peridica.

t=0:0.05:10;
x=cos(2*pi*t)+cos(4*pi*t)/2;
subplot(2,1,1)
plot(t,x);
xlabel('t')
ylabel('x')
subplot(2,1,2)
x=cos(2*pi*t)+cos(2*pi*sqrt(2)*t);
plot(t,x);
xlabel('t')
ylabel('x')

30 - 65

Serie de Fourier

A primera vista, parece que el problema de analizar formas de ondas


complejas representa una tarea formidable. Sin embargo, si la forma de la
onda es peridica, se puede representar con una precisin arbitraria,
mediante la superposicin de un nmero suficientemente grande de ondas
senoidales que forman una serie armnica.

Toda funcin f(t) peridica de periodo 2P, se puede representar en forma de


una suma infinita de funciones armnicas, es decir,

31 - 65

donde a0 a1 ...ak ... y b1 b2 .... bk .... son los denominados coeficientes de


Fourier.

Teniendo en cuenta los resultados de las integrales

>> syms t m n;
>> evalin(symengine,'assume(n,Type::Integer)');
>> evalin(symengine,'assume(m,Type::Integer)');
>> int('sin(m*t)*cos(n*t)',t,-pi,pi)
ans =0

>> y=int('cos(m*t)*cos(n*t)',t,-pi,pi)
y=(2*(m*cos(pi*n)*sin(pi*m) - n*cos(pi*m)*sin(pi*n)))/(m^2 - n^2)
>> limit(y,m,n)
ans =pi*cos(pi*n)^2

Como n es entero, la respuesta es pi ()

32 - 65

>> y=int('sin(m*t)*sin(n*t)',t,-pi,pi)
y =-(2*(m*cos(pi*m)*sin(pi*n) - n*cos(pi*n)*sin(pi*m)))/(m^2 - n^2)
>> limit(y,m,n)
ans =pi*cos(pi*n)^2

Los coeficientes del desarrollo en serie valen

La suma parcial de las series de Fourier es

Si la funcin f(t) tiene simetra, algunos de los coeficientes resultan nulos.

Si f(t) es una funcin par,f(t)=f(-t), los trminos bk son nulos


Si f(t) es impar f(t)=-f(-t), los coeficientes ak son nulos
33 - 65

Funcin par
Por ejemplo, para el pulso rectangular simtrico de anchura 1, y periodo 2
se obtienen los siguientes coeficientes.

Vamos a reconstruir la funcin f(t) a partir del desarrollo en serie de Fourier.

Elaborar el script fourier_par en el que:

Se establezca mediante el comando input el nmero n de trminos del


desarrollo en serie, sin contar el primero a0/2.
34 - 65

Dibuje la funcin f(t) entre -1 y +1 en color azul y con ancho de lnea 2.


Dibuje la aproximacin a la funcin sumando n trminos del desarrollo en
serie en color rojo de anchura de lnea 1.

n=input('Nmero de trminos: ');


hold on
x=[-1 -0.5 -0.5 0.5 0.5 1];
y=[0 0 1 1 0 0];
plot(x,y,'b')
x=linspace(-1,1,100);
y=zeros(length(x),1);
for i=1:length(x)
y(i)=1/2;
for k=1:2:n
y(i)=y(i)+(-1)^((k-1)/2)*2*cos(k*pi*x(i))/(k*pi);
end
end
plot(x,y, 'r');
title(sprintf('Aproximacin de Fourier: %i trminos',n))
xlabel('t'); ylabel('f(t)')
hold off
grid on
Funcin impar
35 - 65

Sea ahora la funcin

Es una funcin impar, los coeficientes ak son nulos

El desarrollo en serie es:

Escribir el script fourier_impar en el que:

Se establezca mediante el comando input el nmero n de trminos del


desarrollo en serie.
Dibuje la funcin f(t) entre -1 y +1 en color azul y con ancho de lnea 2.
Dibuje la aproximacin a la funcin sumando n trminos del desarrollo en
serie en color rojo de anchura de lnea 1.

n=input('Nmero de trminos: ');


hold on
x=[-1 -1 0 0 1 1];
36 - 65

y=[0 1 1 -1 -1 0];
plot(x,y,'b','linewidth',2)
x=linspace(-1,1,100);
y=zeros(length(x),1);
for i=1:length(x)
y(i)=0;
for k=1:2:n
y(i)=y(i)-4*sin(k*pi*x(i))/(k*pi);
end
end
plot(x,y, 'r');
title(sprintf('Aproximacin de Fourier: %i trminos',n))
xlabel('t'); ylabel('f(t)')
hold off
grid on

Desarrollo en serie de Fourier con MATLAB

En MATLAB la funcin heaviside(t) se define del siguiente modo:

Vamos a elaborar un script que nos permita obtener el desarrollo en serie


de Fourier de una funcin f(t) peridica de periodo 2P.

Definimos primero, la funcin escaln


37 - 65

Describimos la funcin
funcin heaviside(t-a)

escaln

mediante

la

llamada

la

La funcin pulso rectangular del primer ejemplo,

la definimos en MATLAB como heaviside(t+a)-heaviside(t-a), tal como


vemos en la figura

38 - 65

La funcin f(t) cualesquiera que toma valores distintos de cero en el


intervalo [a,b] se escribe:

syms t k P n;
evalin(symengine,'assume(k,Type::Integer)');
a=@(f,t,k,P) int(f*cos(k*pi*t/P),x,-P,P)/P;
b=@(f,t,k,P) int(f*sin(k*pi*t/P),x,-P,P)/P;
fs=@(f,t,n,P)
a(f,t,0,P)/2+symsum(a(f,t,k,P)*cos(k*pi*t/P)
+b(f,t,k,P)*sin(k*pi*t/P),k,1,n);
f=heaviside(t+0.5)-heaviside(t-0.5);
P=1; %semiperiodo
pretty(fs(f,t,10,P))
En la ventana de comandos vemos el desarrollo en serie de Fourier de esta
funcin peridica para n=10 trminos:

Para obtener el desarrollo en serie del segunda funcin solamente tenemos


que cambiar la definicin de la funcin f(t) y del semiperiodo P.

39 - 65

Esta funcin se escribe en MATLAB como, heaviside(t+1)-heaviside(t)heaviside(t)+heaviside(t-1)=heaviside(t+1)-2heaviside(t)+heaviside(t-1)

....
f=heaviside(t+1)-2*heaviside(t)+heaviside(t-1);
P=1; %semiperiodo
pretty(fs(f,x,10,P))

En la ventana de comandos vemos el desarrollo en serie de Fourier de esta


funcin peridica para n=10 trminos

Sea la funcin peridica f(t)=t entre -1 y 1, vamos a dibujar la funcin y sus


distintas aproximaciones.
syms t k P n;
evalin(symengine,'assume(k,Type::Integer)');
a = @(f,t,k,P) int(f*cos(k*pi*t/P),t,-P,P)/P;
b = @(f,t,k,P) int(f*sin(k*pi*t/P),t,-P,P)/P;
fs=@(f,t,n,P)
a(f,t,0,P)/2+symsum(a(f,t,k,P)*cos(k*pi*t/P)
+b(f,t,k,P)*sin(k*pi*t/P),k,1,n);
%definicin de la fuerza y su semiperiodo P
%f=heaviside(t+0.5)-heaviside(t-0.5);
%f=heaviside(t+1)-2*heaviside(t)+heaviside(t-1);
f=t;
P=1;
40 - 65

N=6; %trminos del desarrollo en serie


pretty(fs(f,t,N,P))
hold on
ezplot(f,[-P P])
hg=ezplot(fs(f,t,N,P),[-P P]);
set(hg,'color','r')
hold off
xlabel('t')
ylabel('f(t)')
title('Serie de Fourier')
%armnicos
figure
k=1:N;
ak=a(f,t,k,P);
bk=b(f,t,k,P);
subplot(2,1,1)
stem(ak)
xlabel('k');
ylabel('a(k)')
subplot(2,1,2)
stem(bk)
xlabel('k');
ylabel('b(k)')

Para estudiar otra funcin peridica basta cambiar la definicin de la


funcin f y el valor de su semiperiodo P. Cambiando el valor de N se
muestran ms o menos trminos del desarrollo en serie.

41 - 65

En la grfica se representa la contribucin de los N=6 primeros armnicos


cada uno de los armnicos, en la parte superior los coeficientes ak, y en la
parte inferior los coeficientes bk. Por ser f(t)=t una funcin impar, ak=0,

42 - 65

Transformada de Fourier
Para una funcin no peridica P-->

La primera integral que obtiene F() se denomina transformada de Fourier


de f(t), y la segunda se denomina transformada inversa de Fourier.

El cuadrado f2(t) nos da una idea de cmo la energa contenida en la onda


se distribuye en el tiempo, mientas queF2() nos da una idea de como la
energa se distribuye en el espectro de frecuencias. Naturalmente,

43 - 65

Pulso rectangular

Sea un pulso rectangular tal que f(t) es cero excepto en el intervalo [-a,a]
que vale A, tal como se muestra en la figura:

La transformada de Fourier de f(t) vale

>> syms a t w;
>> int('exp(-i*w*t)',t,-a,a)
ans =(2*sin(a*w))/w

Alternativamente, utilizamos la funcin fourier de MATLAB

syms a t;
44 - 65

ft=heaviside(t+a)-heaviside(t-a);
Fw=fourier(ft)
Fw=simplify(Fw)
ft=subs(ft,a,1);
subplot(2,1,1)
ezplot(ft,[-2,2]);
ylim([-0.2 1.2])
xlabel('t');
ylabel('f(t)')
title('Pulso rectangular')
Fw=subs(Fw,a,1);
subplot(2,1,2)
hg=ezplot(Fw,[-10,10]);
set(hg,'color','r')
ylim([-1 2.2])
xlabel('\omega');
ylabel('F(\omega)')
title('Transformada de Fourier')
grid on
En la figura vemos un pulso rectangular de semianchura a=1 y su
transformada de Fourier

45 - 65

Polinomios y fracciones polinmicas


Las funciones polinmicas son unas de las ms importantes en
Matemticas, MATLAB dispone de varias funciones que tratan con
polinomios, algunas de las cuales ya hemos estudiado en la seccin
Procedimientos numricos.

Un polinomio de grado n de coeficientes a1,a2...,an,an+1 es la expresin

a1xn+a2xn-1+...+anx+an+1

en MATLAB se representa por el vector fila p=[a1,a2...,an,an+1]

46 - 65

El polinomio p=x3-2x2+x-2 se representa por el vector p=[1 -2 1 -2]

Los polinomios se pueden representar de forma simblica mediante la


funcin poly2sym.

>> p=[1 -2 1 -2];


>> poly2sym(p)
ans =x^3 - 2*x^2 + x - 2

A su vez un polinomio en forma simblica se puede convertir en el vector


formado por sus coeficientes mediantesym2poly

>> syms x;
>> sym2poly(x^3-2*x-4)
ans = 1 0 -2 -4
Valor de un polinomio
Calculamos el valor de polinomio cuando se conoce el valor la variable x.

Sea p= x5- 3.5x4 + 2.75x3 + 2.125x2 - 3.875x + 1.25

Cuando se expresa un polinomio de forma simblica se utiliza la


funcin subs

>> syms x;
>> p=x^5-3.5*x^4+2.75*x^3+2.125*x^2-3.875*x+1.25;
>> subs(p,x,1.5)
ans = -0.6250

47 - 65

La funcin polyval nos proporciona este valor cuando se expresa el


polinomio en forma de vector formado por los coeficientes.

>> p=[1 -3.5 2.75 2.125 -3.875 1.25];


>> polyval(p,1.5)
ans = -0.6250
Suma de polinomios
Queremos sumar los polinomios p1=x3-2x-4 y p2=x2+3x+4 de
simblica

forma

>> syms x;
>> p1=x^3-2*x-4;
>> p2=x^2+3*x+4;
>> p1+p2
ans =x^3 + x^2 + x

Para sumar dos polinomios en forma de vectores, los vectores tienen que
tener las mismas dimensiones

>> p1=[1 0 -2 -4];


>> p2=[2 3 4];
>> p1+p2
??? Error using ==> plus
Matrix dimensions must agree.
>> p2=[0 2 3 4];
>> p1+p2
ans = 1 2 1 0
Producto de dos polinomios
Queremos multiplicar los polinomios p1=x3-2x-4 y p2=x2+3x+4 de forma
simblica

48 - 65

>> clear
>> syms x;
>> p1=x^3-2*x-4;
>> p2=x^2+3*x+4;
>> p=p1*p2
p =-(x^2 + 3*x + 4)*(- x^3 + 2*x + 4)
>> expand(p)
ans =x^5 + 3*x^4 + 2*x^3 - 10*x^2 - 20*x - 16

Producto de dos polinomios mediante la funcin conv

>> p1=[1 0 -2 -4];


>> p2=[1 3 4];
>> p=conv(p1,p2)
p = 1 3 2 -10 -20 -16
Cociente

De forma simblica

>> syms x;
>> p1=x^3+5*x^2+11*x+13;
>> p2=x^2+2*x+4;
>> p=p1/p2
p =(x^3 + 5*x^2 + 11*x + 13)/(x^2 + 2*x + 4)
>> simplify(p)
ans =x + (x + 1)/(x^2 + 2*x + 4) + 3
La funcin deconv nos proporciona el cociente y el resto de la divisin
entre dos polinomios.
49 - 65

>> p1=[1 5 11 13];


>> p2=[1 2 4];
>> [q r]=deconv(p1,p2)
q= 1 3
r= 0 0 1 1
Derivada
La regla de derivacin de cada trmino de un polinomio es

Mediante la funcin diff(p,n) calculamos la derivada n del polinomio p de


forma simblica

>> syms x;
>> p=x^3+4*x^2-3*x-2;
>> diff(p)
ans =3*x^2 + 8*x - 3
>> diff(p,2)
ans =6*x + 8

La funcin polyder calcula la derivada de un polinomio expresado en forma


de vector formado por los coeficientes.

>> p=[1 4 -3 -2];


>> polyder(p)
ans = 3 8 -3

50 - 65

Tambin calcula la derivada del producto de dos polinomios o del cociente


de dos polinomios

>> p1=[1 1];


>> p2=[1 -3];
>> polyder(p1,p2)
ans = 2 -2
>> [q d]=polyder(p1,p2)
q = -4
d = 1 -6 9
Integral

La funcin int calcula la integral de forma analtica, suponiendo que la


constante de integracin vale 0

>> syms x;
>> p=4*x^3+4*x^2-2*x-2;
>> int(p)
ans =x^4 + (4*x^3)/3 - x^2 - 2*x
51 - 65

La funcin polyint calcula la integral cuando se expresa un polinomio como


vector formado por los coeficientes

>> p=[4 4 -2 2];


>> polyint(p)
ans = 1.0000 1.3333 -1.0000

2.0000

Races de un polinomio
Cuando se expresa un polinomio de forma simblica se utiliza la
funcin solve

>> syms x;
>> p=x^5-3.5*x^4+2.75*x^3+2.125*x^2-3.875*x+1.25;
>> solve(p)
ans =
2
-1
1/2
i/2 + 1
1 - i/2

Cuando se expresa un polinomio como vector formado por los coeficientes,


se emplea la funcin roots.

>> p=[1 -3.5 2.75 2.125 -3.875 1.25];


>> roots(p)
ans =
2.0000
-1.0000
1.0000 + 0.5000i
1.0000 - 0.5000i
0.5000

52 - 65

Conocidas las races del polinomio podemos calcular el vector que guarda
los coeficientes mediante poly

>> r=[2 -1 1+0.5i 1-0.5i 0.5]; %races del polinomio


>> poly(r)
ans = 1.0000 -3.5000 2.7500 2.1250 -3.8750

1.2500

Obtenemos el polinomio p a partir de sus races

Factorizacin
La funcin factor convierte un polinomio expresado en forma simblica en
factores

>> syms x;
>> p=x^3-6*x^2+11*x-6;
>> factor(p)
ans =(x - 3)*(x - 1)*(x - 2)
Expansin
La funcin expand realiza operaciones con polinomios, por ejemplo,
devuelve el polinomio p a partir de sus factores

>> syms x;
>> p=(x - 3)*(x - 1)*(x - 2);
>> expand(p)
ans =x^3 - 6*x^2 + 11*x - 6
>> p=(x-1)^3+2*(x+3)^2+x^2-2*x-2;
>> expand(p)
ans =x^3 + 13*x + 15
Transformada de Laplace
53 - 65

Sea f(t) una funcin definida en el intervalo [0, ). La transformada de


Laplace F(s) de f(t) se define:

Transformada de Laplace de algunas funciones

1.- Transformada de Laplace de f(t)=1

>> ft=sym('1');
>> Fs=laplace(ft)
Fs =1/s

2.- Transformada de Laplace de f(t)=exp(at)

> syms a t;
>> ft=exp(a*t);
>> Fs=laplace(ft)
Fs =-1/(a - s)

54 - 65

Vamos a comprobar la propiedad de linealidad de la transformada de


Laplace

G(s) es la transformada de Laplace de g(t). F1(s) y F2(s) son las


transformdas de Laplace de f1(t) y f2(t) respectivamente. Calculamos la
transformada de Laplace de cosh(at)

>> syms a t;
>> ft=cosh(a*t);
>> Fs=laplace(ft)
Fs =-s/(a^2 - s^2)
>> ft=sinh(a*t);
>> Fs=laplace(ft)
Fs =-a/(a^2 - s^2)

3. Transformada de Laplace de f(t)=exp(it)

55 - 65

>> syms t w;
>> ft=cos(w*t);
>> Fs=laplace(ft)
Fs =s/(s^2 + w^2)
>> ft=sin(w*t);
>> Fs=laplace(ft)
Fs =w/(s^2 + w^2)

4. Transformada de Laplace de f(t)=exp(at)exp(it)=exp((a+i)t)

>> clear
>> syms a w t;
>> ft=exp(a*t)*sin(w*t);
>> Fs=laplace(ft)
Fs =w/(w^2 + (a - s)^2)
>> ft=exp(a*t)*cos(w*t);
>> Fs=laplace(ft)
Fs =-(a - s)/(w^2 + (a - s)^2)

56 - 65

5. Transformada de Laplace de f(t)=tn

>> syms t n;
>> ft=t^n;
>> Fs=laplace(ft)
Fs =piecewise([-1 < Re(n), gamma(n + 1)/s^(n + 1)])
>> ft=t^6;
>> Fs=laplace(ft)
Fs =720/s^7

6. Transformada de Laplace de f(t)=tnexp(at)

Como se puede fcilmente comprobar

>> syms t a;
>> ft=exp(a*t)*t^6;
>> Fs=laplace(ft)
Fs =-720/(a - s)^7

57 - 65

En general, tendremos que:

Transformada inversa de Laplace


Las transformadas de Laplace de las funciones que hemos estudiado en
esta pgina se resumen en la tabla siguiente:

58 - 65

Como vimos en la pgina Fracciones polinmicas, la funcin residue nos


permite descomponer una fraccin polinmica en suma de fracciones ms
simples. Modificaremos cada fraccin para buscar en la tabla la funcinf(t),
es decir su correspondiente transformada inversa de Laplace,
comprobaremos el resultado hecho a mano con la llamada a la
funcin ilaplace.
59 - 65

1. Races reales distintas

Expresamos la primera fraccin en trminos de la variable s en vez de x, y


sustituimos los decimales peridicos por las fracciones equivalentes.

Como vemos en la tabla, la transformada inversa de Laplace se escribe

Obtenemos una expresin similar empleando la funcin MATLAB ilaplace

>> syms s;
>> fs=(s-2)/(s^3-s^2-6*s);
>> ft=ilaplace(fs)
ft =exp(3*t)/15 - 2/(5*exp(2*t)) + 1/3

2. Races complejas distintas

60 - 65

Como vemos en la tabla, la transformada inversa de Laplace se escribe

No es necesario sumar las dos fracciones con las races conjugadas para
convertirla en una nica fraccin racional

si creamos una nueva entrada en la tabla de las transformadas inversas de


Laplace. Sea:

Como vemos en la tabla, la transformada inversa de Laplace se escribe:

61 - 65

>> syms s;
>> fs=(s^2-2*s+1)/(s^3+3*s^2+4*s+2);
>> ft=ilaplace(fs)
ft =4/exp(t) - (3*(cos(t) + (4*sin(t))/3))/exp(t)
>> simplify(ft)
ans =-(3*cos(t) + 4*sin(t) - 4)/exp(t)

3. Races repetidas

Como vemos en la tabla, la transformada inversa de Laplace se escribe

>> syms s;
>> fs=(5*s-1)/(s^3-3*s-2);
>> ft=ilaplace(fs)
ft =exp(2*t) - 1/exp(t) + (2*t)/exp(t)

4. Fracciones impropias

Como vemos en la tabla, la transformada inversa de Laplace se escribe

>> syms s;
>> fs=(s^2+2*s+3)/(s^2+s-6);
>> ft=ilaplace(fs)
62 - 65

ft =(11*exp(2*t))/5 - 6/(5*exp(3*t)) + dirac(t)

V.

APLICACIN
Graficar una funcin hasta su tercera derivada (x 2, x, 1, 0) en un solo
grfico Ej: (seno, coseno, ex, etc.)
Cdigo

syms x;
f = input('Ingrese la funcion f(x): ');
xmin = input('Ingrese el limite inferior: ');
xmax = input('Ingrese el limite superior: ');
pf=ezplot(f)
set(pf,'color','black')
hold on
yp = diff(f,x)
pyp=ezplot(yp,[xmin xmax])
set(pyp,'color','r')
hold on
ypp = diff(yp,x)
pypp=ezplot(ypp,[xmin xmax])
set(pypp,'color','blue')
hold on
yppp = diff(ypp,x)
pyppp=ezplot(yppp,[xmin xmax])
set(pyppp,'color','green')
title ('DERIVADAS');
xlabel ('Corriente [mA]');
ylabel ('Voltaje [v]');
grid on

Grfica

63 - 65

Correlacin de Funciones. Nos debe devolver la Funcin de Correlacin.


Cdigo
n = 0:99;
x = cos(2*pi*n*(50/1000));
y = cos(2*pi*n*(50/1000)+(pi/2));
%Determinacin de la correlacin cruzada
[z lag1] = xcorr(x, 'coeff');
%Autocorrelacin
[zz lag2] = xcorr(x,y,'coeff');
%Correlacin cruzada
%Representacin de las seales
subplot(3,1,3), plot(lag2, zz, 'color', 'black')
grid on
title('Correlacin XY')
hold on
subplot(3,1,1),plot(n,x, 'color', 'blue')
hold on
grid on
subplot(3,1,2),plot(n,y, 'color', 'red' )
hold on
grid on

Grfica

64 - 65

65 - 65

You might also like