You are on page 1of 17

Herramientas computacionales para la

matemtica
MATLAB: lgebra Simblica

Vernica Borja Macas


Junio 2012

Matlab
Sustitucin de variables simblicas

Es posible sustituir un variables simblicas dentro de otra por


un valor numrico y evaluar con la funcin subs.
Ejemplo:
>> syms a b c;
>> S = (a^2 - a*b - a*c + b^2 - b*c + c^2)^(1/2)
>> a = 10; b = 2; c = 10;
>> subs(S)
ans =
8

Pero de este modo las variables a, b y c dejan de ser


simblicas y se convierten en arreglos de 1x1.
2

Matlab
Sustitucin de variables simblicas

Es posible sustituir una variable simblica sin que esta deje de


ser una variable simblica.
Ejemplo:
>> syms x;
>> f = 2*x^2 - 3*x + 1;
>> subs(f, 2)
ans =
3
>> syms x y;
>> f = x^2*y + 5*x*sqrt(y);
>> subs(f, x, 3)
ans =
9*y + 15*y^(1/2)
3

Matlab
Sustitucin de variables simblicas
Ejemplo:
>> subs(f, y, x)
ans =
x^3 + 5*x^(3/2)
%Sustitucin en matrices: elemento a elemento.
>> A = [1 2 3;4 5 6];
>> syms x; f = x^3 - 15*x^2 - 24*x + 350;
>> subs(f,A)
ans =
312 250 170
78 -20 -118
4

Matlab
Sustitucin de variables simblicas
Ejemplo:
>> syms x; f = x^3 - 15*x^2 - 24*x + 350; A = magic(3)
A=
8 1 6
3 5 7
4 9 2
>> b = sym2poly(f)%Obtiene los coeficientes de la variable f
b=
1 -15 -24 350
>> A^3 - 15*A^2 - 24*A + 350*eye(3)
ans =
-10 0 0
0 -10 0
0 0 -10
5

Matlab
Sustitucin de variables simblicas

Es posible sustituir una variable simblica de un polinomio


por un una matriz de la siguiente forma.
Ejemplo:
%Sustitucin en matrices: como matrices.
polyvalm(sym2poly(f),A)
ans =
-10 0 0
0 -10 0
0 0 -10

Matlab
Sustitucin de variables simblicas

Es posible sustituir un conjunto de variables simblicas de


una expresin de manera simultanea de la siguiente forma.
Ejemplo:
>> syms a b c;
>> S = (a^2 - a*b - a*c + b^2 - b*c + c^2)^(1/2)
>>subs(S, {a, b, c}, {10, 2, 10})
ans =
8

Matlab
Sustitucin de variables simblicas

Otra funcin que de algn modo sustituye largas expresiones


por terminos ms simples, esta es subexpr.
Ejemplo:
>> syms a x
>> s = solve(x^3 + a*x + 1)
>> r = subexpr(s)
sigma = (a^3/27 + 1/4)^(1/2) -
r = sigma^(1/3) - a/(3*sigma^(1/3))
a/(6*sigma^(1/3)) - sigma^(1/3)/2 - (3^(1/2)*(a/(3*sigma^(1/3)) +
sigma^(1/3))*i)/2
a/(6*sigma^(1/3)) - sigma^(1/3)/2 + (3^(1/2)*(a/(3*sigma^(1/3))
+ sigma^(1/3))*i)/2
8

Matlab
Restricciones para variables simblicas
MATLAB considera cualquier variable simblica como variable
compleja a menos que se especifique un tipo distinto.
Se pueden restringir los valores de una variable simblica a
reales o positivos, por ejemplo:
Ejemplo:
>> syms x real;
>> solve(x^2+1)
Warning: Explicit solution could not be found.
> In solve at 81
ans =
[ empty sym ]

Matlab
Restricciones para variables simblicas
Ejemplo:
>> y=sym('y','positive');
>> solve(y^2-1)
ans =
1
>> clear y; sym y; solve(y^2-1) % no borro las restricciones
ans =
1
>> syms y clear; % solo borramos las restricciones
>> solve(y^2-1)
ans =
-1
1
10

Matlab
Restricciones para variables simblicas

Para que quede un poco mas claro necesitamos saber que


existe un workspace asociado al motor simblico
(symengine) independiente del workspace de variables
habituales de MATLAB.

Para saber si una variable tiene alguna restriccin usamos:


>> evalin(symengine,'getprop(x)')
11

Matlab
Restricciones para variables simblicas
Ejemplo:
>> syms a
>> evalin(symengine,'getprop(a)')
ans =
C_
>> syms b real
>> evalin(symengine,'getprop(b)')
ans =
R_
>> syms c positive
>> evalin(symengine,'getprop(c)')
ans =
(0, Inf)
>> clear; reset(symengine);
12

Matlab
Solucin de ecuaciones

Una de las funciones ms tiles en la caja de


herramientas simblica es solve. Se le puede usar para
determinar las races de expresiones, para encontrar
respuestas numricas cuando hay una sola variable y
para resolver simblicamente una incgnita.
La funcin solve tambin puede resolver sistemas de
ecuaciones tanto lineales como no lineales.
Cuando se parea con la funcin sustitucin (subs), la
funcin solve permite al usuario encontrar soluciones
analticas a una variedad de problemas.

13

Matlab
Solucin de ecuaciones

Cuando se usa con una expresin, la funcin solve iguala la


expresin a cero y resuelve para las races.
Ejemplo:
>> E1=x-3
>> solve (E1)
ans =
3
>> sol ve ( ' x^2 - 9 ' )
ans =
3
-3
14

Matlab
Solucin de ecuaciones

Podemos resolver fcilmente expresiones simblicas con ms


de una variable. MATLAB resuelve preferentemente para x. Si
no hay x en la expresin, MATLAB encuentra la variable ms
cercana a x. Si quiere especificar la variable por resolver, slo
inclyala en el segundo campo.
Ejemplo:
solve('a*x^2+b*x +c ' )
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
>> solve('a*x^2+b*x +c ', 'a' )
ans =
-(c + b*x)/x^2
15

Matlab
Solucin de ecuaciones

Para resolver ecuaciones que no estn igualadas a cero


debemos colocarlas como cadenas de caracteres.
Ejemplo:
>> E2=sym('5*x^2 + 6*x +3=10' )
>> solve(E2)
ans =
-3/5+2/5* 11^(1/2)
- 3/5-2/5 * 11^( 1/2)
>> E3=sym( 'P=PO*exp(r*t)')
>> solve (E3, 't')
ans =
log (P/PO) /r
16

Matlab
Solucin de ecuaciones

La funcin solve tambin puede resolver sistemas de


ecuaciones.
Ejemplo:
>> uno = sym( ' 3*x + 2*y -z = 10 ' ) ;
>> dos = sym ( ' -x + 3*y + 2 * z = 5');
>> tres = sym ( ' x - y - z = - 1 ' ) ;
>> [x , y , z] =solve (uno , dos, tres)
x=
-2
y=
5
z=
-6
17

You might also like