Está en la página 1de 7

4.

CLCULO SIMBLICO CON MATLAB


La toolbox symbolic de MATLAB/SIMULINK incorpora el clculo simblico de MAPLE dentro
del ambiente numrico de Matlab. Facilitando clculos matemticos y graficaciones.
Para obtener ayuda en pantalla de las funciones de la toolbox\symbolic es necesario que escriba
>> help symbolic

% lista todos los comandos de la librera

>> help sym/function


>> help sym/ezplot

4.1. Operaciones bsicas

Para trabajar en forma simblica se definen las variables como variables simblicas. Para
ello se emplean los comandos:
syms x y z t

% definicin de variables simblicas

x=sym('x'); y=sym( 'y'); a=sym('alfa') % definicin de variables simblicas

Para averiguar las variables independientes en una expresin simblica


syms a b x1 y
fun=cos(a)*b*x1 + 14*y
d=findsym(fun,2)
d=
x1,y

% escritura de la funcin

Para mostrar la funcin simblica en forma grfica


pretty(fun)
cos(a) b x1 + 14 y

Ejemplo: definir las variables independientes


syms x y z t alpha
a=sym('alpha');
b=sym('tan(y/5)');
Ejemplo: introduccin de las funciones a estudiar
syms x y t
f1=(x-2)/(x^2-4);
f2=(x^2+x)/(2*x-1);
f3=(4*x+5)/(3*x-2);
f4=1+1/x^2;
f5=exp(x-3);
f6=(t^2+1)^4;
f7=1/sqrt(1+x^2);
za= sqrt((1/4)*(x^2+y^2));
zb=x^2+y^2;
Curso "Introduccin a Matlab/ Simulink"
Ing. Susana Prado Iratchet

100

zc=(x^2+y^2)^(1/4);
zd=sqrt(1-x^2-y^2*(4/9));
ze=x^2-y^2*(1/4);
Ejemplo: introduccin de las matrices a estudiar
syms a11 a12 a13 a21 a22 a23 a31 a32 a33
syms b11 b12 b13 b21 b22 b23 b31 b32 b33
A=[a11 a12 a13; a21 a22 a23; a31 a32 a33];
B=[b11 b12 b13; b21 b22 b23; b31 b32 b33];
Observar que la sintaxis es levemente diferente a la empleada en MATLAB. No se colocan los
puntos en los productos de variables (vectores para MATLAB).

4.2. Funciones de clculo de la librera

Est preparado para aplicar las funciones de la librera de Symbolic:


Ejemplo:
dza=diff(za,x)

dza =1/2/(x^2+y^2)^(1/2)*x
Otras funciones de clculo: diff (differentiate), int (Integrate), limit (Limit), taylor (Taylor
series), jacobian (Jacobian matrix) y symsum (Summation of series).
Ejemplo: Integral- lmite
g1= int(f1,2,6);
disp(limit(f1,2))
1/4
l1=limit(f1,2);
d1=diff(f1);
Otras funciones de lgebra lineal: diag (Create or extract diagonals), triu (Upper triangle), tril
(Lower triangle), inv (Matrix inverse), det (Determinant), rank (Rank), null (Basis for null space),
colspace (Basis for column space), eig (Eigenvalues and eigenvectors), svd (Singular values and
singular vectors), jordan (Jordan canonical (normal) form), poly (Characteristic polynomial),
expm (Matrix exponential).
Ejemplo: operacin con matrices
A1=A*A/A;
disp(A1)
[ a11, a12, a13]
[ a21, a22, a23]
[ a31, a32, a33]
E=diag(A);
Curso "Introduccin a Matlab/ Simulink"
Ing. Susana Prado Iratchet

101

disp(E)
[ a11]
[ a22]
[ a33]
disp(diag(A,1))
[ a12]
[ a23]
disp(A*B)
[ a11*b11+a12*b21+a13*b31, a11*b12+a12*b22+a13*b32,
a11*b13+a12*b23+a13*b33]
[ a21*b11+a22*b21+a23*b31, a21*b12+a22*b22+a23*b32,
a21*b13+a22*b23+a23*b33]
[ a31*b11+a32*b21+a33*b31, a31*b12+a32*b22+a33*b32,
a31*b13+a32*b23+a33*b33]
disp(A.*B)
[ a11*b11, a12*b12, a13*b13]
[ a21*b21, a22*b22, a23*b23]
[ a31*b31, a32*b32, a33*b33]
pretty(A.*B)
[a11 b11
[
[a21 b21
[
[a31 b31

a12 b12
a22 b22
a32 b32

a13 b13]
]
a23 b23]
]
a33 b33]

4.3. Funciones de simplificacin


f=(1/x^3+6/x^2+12/(x+8))^(1/3);
pretty(simplify(f))
/
2
3\1/3
|49 x + 8 + 6 x + 12 x |
|-----------------------|
|
3
|
\
x (x + 8)
/
pretty(simple(f))
/ 1
6
12 \1/3
|---- + ---- + -----|
| 3
2
x + 8|
\ x
x
/
Ejemplo:
fcart=x^2+y^2;
disp(subs(fcart,{x,y},{sym('r*cos(phi)'),sym('r*sin(phi)')}))
r^2*cos(phi)^2+r^2*sin(phi)^2
Curso "Introduccin a Matlab/ Simulink"
Ing. Susana Prado Iratchet

102

Otros comandos de simplificacin: expand (Expand), factor (Factor), collect (Collect), simple
(Search for shortest form), numden (Numerator and denominator), horner (Nested polynomial
representation), subexpr (Rewrite in terms of subexpressions), subs (Symbolic substitution).

4.4. De clculo simblico a clculo en Matlab

Una vez obtenidos los clculos simblicos se puede pasar a modo MATLAB reescribiendo las
funciones con el lenguaje de Matlab o se puede emplear la funcin vectorize
za=vectorize(za)
za =1./2.*(x.^2+y.^2).^(1./2)

Ejemplo. pasaje del modo simblico a modo de clculo en Matlab


syms x y z

%define las variables

f=2*x^2*y+3*x*y*z+exp(x)*sin(y);
f=subs(f,{z},{[1]});
f=vectorize(f);
[x,y]=meshgrid(-5:5);
f=eval(f);

%define la funcin

%reemplaza a la variable z=1


%transforma la funcin simblica en Matlab
%construye una grilla de datos
%evala la funcin en MATLAB

Otras funciones de conversin: double (Convert symbolic matrix to double), poly2sym


(Coefficient vector to symbolic polynomial), sym2poly (Symbolic polynomial to coefficient
vector), char (Convert sym object to string).

4.5. Graficacin

Graficar una funcin simblica es simple porque no es necesario colocar los rangos, el
programa lo hace automticamente.
zb=x^2+y^2;
ezsurfc(zb)

Curso "Introduccin a Matlab/ Simulink"


Ing. Susana Prado Iratchet

103

Ejemplo: para graficar en el plano

ezplot(f1)

% con f1=f(x)

Esta toolbox dispone de una calculadora grfica interactiva que opera y grafica funciones de
una variable. Se activa con la funcin funtool

funtool

Se abren dos ventanas adicionales de grficos; en una de ellas grafica f(x) y en la otra g(x).
Trabaja como una calculadora de bolsillo.

x sen(x )
Ejemplo: graficar una aproximacin de la funcin e
empleando una serie de Taylor
de 7 trminos

taylortool('exp(x*sin(x))')

% abre una ventana de graficacin interactiva.

Taylor Series Approximation


10
5
0
-6

-4

-2

TN(x) =1+x2+1/3 x4+1/120 x6

Curso "Introduccin a Matlab/ Simulink"


Ing. Susana Prado Iratchet

104

Ejemplo: graficacin de una funcin de dos variables.


2
2
2
2
2
2
1
x
f ( x , y ) = 3(1 x ) 2 e x ( y +1) 10( x 3 y 5 )e x y e ( x +1) y
5
3

>>ezcontour(f,[-3,3],49)
2

2 2

3 (1-x) exp(-x -(y+1) )-...-1/3 exp(-(x+1) -y )

4
3
2

1
0
-1
-2
-3
-4

-3

-2

-1

0
x

Ejemplo: a la funcin zb=x+y encontrar el gradiente y dibujar la superficie y su gradiente


syms x y z
zb=x^2+y^2;
[gx,gy,gz]=gradcart(zb); % funcin de usuario
zb=vectorize(zb);
gx=vectorize(gx);
gy=vectorize(gy);
[x,y] = meshgrid(-2:0.25:2,-1:0.2:1);
zb=eval(zb);
[gx,gy,gz]=surfnorm(x,y,zb);
quiver3(x,y,zb,gx,gy,gz,0.5);
hold on
surf(x,y,zb);
colormap hsv
view(-35,45)
axis([-2 2 -1 1 -6 6])
hold off

Si trabaja en el espacio de trabajo podr ir viendo los cambios que se producen en la figura
cuando cambia la funcin:
Curso "Introduccin a Matlab/ Simulink"
Ing. Susana Prado Iratchet

105

6
4
2
0
-2
-4
-6
1
0.5

2
1

0
0

-0.5

-1
-1

-2

Otras funciones que se pueden emplear para graficar son: ezplot3, ezpolar, ezcontour, ezcontourf,
ezmesh, ezsurf, ezmeshc, rsums (Riemann sums), ezpolar (Easy to use polar coordinates plotter).

4.6. Otras funciones de clculo simblico


Resolucin de ecuaciones
Ejemplo: encontrar la solucin de la ecuacin diferencial d 2 ( x ) + d( x ) + 2.x = u t , dada la
nulidad de sus condiciones iniciales .
x=dsolve('D2x+3*Dx+2*x=5*ut','x(0)=0','Dx(0)=0')
x =5/2*ut+5/2*ut*exp(-2*t)-5*ut*exp(-t)
Otras funciones de resolucin de ecuaciones: solve (Symbolic solution of algebraic equations),
finverse (Functional inverse), compose (Functional composition).
Ejemplo: encontrar la antitransformada de Laplace de la funcin de transferencia

F ( s) =

5
s ( s 2 + 3s + 2)

syms s t
ct=ilaplace(5/(s*(s^2+3*s+2)));
pretty (ct)
5/2 - 5 exp(-t) + 5/2 exp(-2 t)
Otros comandos de transformacin de integrales: fourier (Fourier transform), laplace (Laplace
transform), ztrans (Z transform), ifourier (Inverse Fourier transform), iztrans (Inverse Z
transform).

Curso "Introduccin a Matlab/ Simulink"


Ing. Susana Prado Iratchet

106

También podría gustarte