Sei sulla pagina 1di 7

Introduccin

Matemtica Simblica.
El toolbox de matemtica simblica es una coleccin de herramientas para MATLAB que se usan para manipular y resolver expresiones simblicas. Las expresiones simblicas son cadenas de caracteres, o arreglos de cadenas de caracteres que representan nmeros, funciones, operadores y variables. Algunos ejemplos de expresiones simblicas son:
f1 = '1/(2*x^2n)' f2 = '1/sqrt(2*x)' f3 = 'cos(x^2) - sen(2*x)' M = sym('[a, b; c, d]') f = int('x^3/sqrt(1-x)', 'a', 'b')

Para efectuar la derivada de una funcin utilizamos el comando diff.


diff('cos(x)')

como resultado tenemos


ans = -sin(x)

Nota: Las expresiones simblicas debern ser escritas sin espacios. Para definir matrices hacemos:
M = sym('[a, b; c, d]')

Y el clculo del determinante lo hacemos :


determ(M)

Despus de la ejecucin tenemos...


M = [ a, b] [ c, d] ans = a*d-b*c

Las expresiones simblicas sin variables son llamadas constantes simblicas. Cuando se visualizan constantes simblicas, a menudo son difciles de distinguir de los enteros.
f = symop('(3*4-2)/5+1') numeric(f)

Variables simblicas. El comando symvar, se utiliza para averiguar la variable simblica en la expresin.
symvar('a*x+y') symvar('a*t+s/(u+3)') symvar('sin(omega)') symvar('3*i+4*j') symvar('y+3*s', 't')

Muchos comandos dan la opcin, si se desea, de especificar las variables independientes:


http://lc.fie.umich.mx/~calderon/Matlab/matematica.html[27/11/2012 09:40:38 p.m.]

Introduccin

diff('x^n') diff('x^n', 'x') diff('x^n', 'n') ans = x^n*n/x ans = x^n*n/x ans = x^n*log(x)

Extraccin de numeradores y denominadores. El comando numden() se utiliza para determinar el denominador y numerador de expresiones racionales.
clear; a = sym('a'); b = sym('b'); x = sym('x'); f = a*x^2/(b-x) [n m] = numden(f)

Otro ejemplo es:


clear; x = sym('x'); f = 3/2*x^2+2/3*x-3/5 [n m] = numden(f)

Operaciones algebraicas estndar. Las cuatro operaciones de suma, resta, multiplicacin y divisin se realizan de manera similar, como ejemplo consideremos:
clear; x = sym('x'); f = 2*x^2+3*x-5 g = x^2-x+7 display('suma'); f+g display('resta');f-g display('multiplicacion');f*g display('division'); f/g

La respuesta que produce es:


suma 3*x^2+2*x+2 resta x^2+4*x-12 multiplicacion (2*x^2+3*x-5)*(x^2-x+7) division (2*x^2+3*x-5)/(x^2-x+7)

Sustitucin de variables. Para remplazar el valor de una variable por otra variable o nmero utilizamos el comando subs()
a = sym('a'); b = sym('b'); c = sym('c');

http://lc.fie.umich.mx/~calderon/Matlab/matematica.html[27/11/2012 09:40:38 p.m.]

Introduccin

x = sym('x'); f = a*x^2+b*x+ c subs(f, 's', 'x') subs(f, 'A', 'a')

Ejemplo 1. Resolver x cos(x) =0 utilizando matemtica simblica y el mtodo de Newton.


clear ; p= 2.5; x = sym('x'); fx = x- cos(x); h = fx/diff(fx); while abs(numeric(subs(fx, num2str (p), 'x'))) > 0.001 p = p - numeric(subs(h, num2str (p), 'x')) end; z = p;

Ejemplo 2. Calcular los ceros del conjunto de funciones f1(x,y) = x2 - 2x y + 0.5 f2(x,y) = x2 + 4y2 - 4 Utilice el mtodo de Newton Raphson y considere como punto inicial p=[1,1]

La implementacin en MATLAB queda:


p = [1; 1] x = sym('x'); y = sym('y'); f = [x^2-2*x-y+0.5; x^2+4*y^2-4] ezplot(f(1),[-3,3]); hold on; ezplot(f(2),[-3,3]); grid on; J = [diff(f(1),x), diff(f(1), y); diff(f(2),x), diff(f(2), y)] for k=1:100 k Ji = subs(subs(J, x, num2str(p(1))), y, num2str(p(2))) fi = subs(subs(f, x, num2str(p(1))), y, num2str(p(2))) p = p - numeric(inv(Ji)*fi) pause if(max(abs(numeric(fi))) < 0.001) break; end; end;

Integracin. La funcin de integracin int(f), donde f es una funcin simblica, intenta obtener otra expresin simblica F tal que diff(F) = f. Cuando MATLAB no puede encontrar la antiderivada, devuelve el comando sin evaluar. Por ejemplo
int('log(x)/exp(x^2)')

http://lc.fie.umich.mx/~calderon/Matlab/matematica.html[27/11/2012 09:40:38 p.m.]

Introduccin

Regresa.
Warning: Explicit integral could not be found. > In C:\MATLABR11\toolbox\symbolic\@sym\int.m at line 58 In C:\MATLABR11\toolbox\symbolic\@char\int.m at line 9 In C:\MATLABR11\work\eje133.m at line 1 ans = int(log(x)/exp(x^2),x)

Cuando se realiza la derivada podemos decir respecto a que variable deseamos hacer la integracin, en el caso de no expresarlo, por default se har con respecto a x.
x = sym('x'); s = sym('s'); f = sin(s + 2*x) int(f) int(f,s)

Regresara.
f = sin(s+2*x) ans = -1/2*cos(s+2*x) ans = -cos(s+2*x)

Ejemplo 3. Bart ha salido de excursin con su clase a la cima del edificio Skiley en el centro de Springfield. Coge un tomate maduro de la bolsa de comida, se apoya en el borde del tejado, y lo lanza hacia arriba. El tomate sale recto, con una velocidad inicial de v0 = 64 pies por segundo. El tejado esta a y0 = 96 pies por encima del suelo. Dnde est el tomate t segundos ms tarde?. Cundo alcaza su mxima altura?. Qu altura mxima sobre el suelo alcanza el tomate?. Cundo golpea el tomate el suelo?. Suponer que no hay resistencia del aire y que la aceleracin debida a la gravedad es una constante g = -32 pies por segundo por segundo en Springfield.
clear; g = sym('g') t = sym('t') g = -32 v = int(g, t) v = symadd(v, 64) y = int(v, t) % aceleracion de la gravedad. % calcula la velocida como funcin del tiempo % en t=0 la velocidad en 64 %integra la velocidad respecto a t para calcular el desplazamiento

fprintf('El valor de desplazamiento en funcion de t es \n'); y = symadd(y, 96) % en t=0 la altura es 96 pies

fprintf('La pelota alcnza la altura mxima cuando\n'); t_max = solve(v) % calcula v(t) = 0

fprintf('La altura mxima es \n'); y_max = subs(y, t_max) fprintf('El tiempo para que el tomate golpe el suelo es\n') t_fin = solve(y)

http://lc.fie.umich.mx/~calderon/Matlab/matematica.html[27/11/2012 09:40:38 p.m.]

Introduccin

La solucin que entrega MATLAB es:


g = -32

v = -32*t v = -32*t+64 y = -16*t^2+64*t El valor de desplazamiento en funcion de t es y = -16*t^2+64*t+96 La pelota alcnza la altura mxima cuando t_max = 2 La altura mxima es y_max = 160 El tiempo para que el tomate golpe el suelo es t_fin = [ 2+10^(1/2)]

Para tener una idea ms clara de lo que le paso al tomate, vamos a dibujar el resultado del lanzamiento del tomate. Para ello utilizamos el comando ezplot(y)

Simplificacin de expresiones.
Las expresiones simblicas pueden ser presentadas de muchas formas equivalentes. En situaciones diferentes algunas formas pueden ser preferibles a otras. MATLAB usa un nmero de comandos para simplificar la forma de las expresiones simblicas.
f = sym('(x^2-1)*(x-2)*(x-3)') f = (x^2-1)*(x-2)*(x-3) collect(f) ans = x^4-5*x^3+5*x^2+5*x-6 horner(ans) ans = -6+(5+(5+(-5+x)*x)*x)*x factor(ans) ans = (x-1)*(x-2)*(x-3)*(x+1) expand(f) ans = x^4-5*x^3+5*x^2+5*x-6

simplify es una herramienta potente, de propsito general, que intenta simplificar una expresin mediante la aplicacin de muchas clases diferentes de identidades algebraicas involucrando sumas, integrales y potencias fraccionales, as como trigonometra, frmulas exponenciales, funciones logartmicas, etc. Algunos de ejemplos de uso de este comando son
x = sym('x')

http://lc.fie.umich.mx/~calderon/Matlab/matematica.html[27/11/2012 09:40:38 p.m.]

Introduccin

y = sym('y') f = log(2*x/y) simplify(f)

La respuesta a estos comandos es:


f = log(2*x/y) ans = log(2)+log(x/y)

Otro ejemplo es
x = sym('x') g = sin(x)^2+3*x+cos(x)^2-5 simplify(g)

La respuesta en este caso es:


g = sin(x)^2+3*x+cos(x)^2-5 ans = -4+3*x

Otro es
x = sym('x') h = (1/x^3+6/x^2+12/x+8)^(1/3) simplify(h)

Solucin de ecuaciones algebraicas simples. Para calcular la solucin de una ecuacin algebraica simple se utiliza el comando solve()
solve('a*x^2+b*x+c') solve('x=cos(x)') solve('exp(x)=tan(x)')

La respuesta a estos comandos es:


ans = [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))] ans = .73908513321516064165531208767387 ans = 1.3063269404230792361743566584407

Solucin de ecuaciones diferenciales. En la solucin de ecuaciones diferenciales utilizamos el comando dsolve as por ejemplo

http://lc.fie.umich.mx/~calderon/Matlab/matematica.html[27/11/2012 09:40:38 p.m.]

Introduccin

se soluciona haciendo
dsolve('Dy=1+y^2') ans = tan(t+C1)

Vamos a probar una ecuacin diferencial de segundo orden.

y = dsolve('D2y=cos(2*x)-y', 'Dy(0)=0', 'y(0)=1')

Tambin el comando dsolve puede resolver sistemas de dos ecuaciones diferenciales simultaneas.
[f, g] = dsolve('Df=3*f+4*g', 'Dg=-4*f+3*g')

Regresar.

http://lc.fie.umich.mx/~calderon/Matlab/matematica.html[27/11/2012 09:40:38 p.m.]

Potrebbero piacerti anche