Está en la página 1de 17

Herramientas computacionales para la

matemática
MATLAB: Álgebra Simbólica

Verónica Borja Macías

Junio 2012

1
Matlab
Sustitución de variables simbólicas

 Es posible sustituir un variables simbólicas dentro de otra por


un valor numérico y evaluar con la función 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


simbólicas y se convierten en arreglos de 1x1.

2
Matlab
Sustitución de variables simbólicas

 Es posible sustituir una variable simbólica sin que esta deje de


ser una variable simbólica.
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
Sustitución de variables simbólicas

Ejemplo:
>> subs(f, y, x)
ans =
x^3 + 5*x^(3/2)

%Sustitución 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
Sustitución de variables simbólicas

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
Sustitución de variables simbólicas

 Es posible sustituir una variable simbólica de un polinomio


por un una matriz de la siguiente forma.

Ejemplo:
%Sustitución en matrices: como matrices.

polyvalm(sym2poly(f),A)
ans =
-10 0 0
0 -10 0
0 0 -10

6
Matlab
Sustitución de variables simbólicas

 Es posible sustituir un conjunto de variables simbólicas de


una expresión 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

7
Matlab
Sustitución de variables simbólicas

 Otra función que de algún modo sustituye largas expresiones


por terminos más 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 simbólicas

 MATLAB considera cualquier variable simbólica como variable


compleja a menos que se especifique un tipo distinto.
 Se pueden restringir los valores de una variable simbólica 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 ]

9
Matlab
Restricciones para variables simbólicas

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 simbólicas

 Para que quede un poco mas claro necesitamos saber que


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

 Para saber si una variable tiene alguna restricción usamos:


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

11
Matlab
Restricciones para variables simbólicas

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
Solución de ecuaciones

 Una de las funciones más útiles en la caja de


herramientas simbólica es solve. Se le puede usar para
determinar las raíces de expresiones, para encontrar
respuestas numéricas cuando hay una sola variable y
para resolver simbólicamente una incógnita.
 La función solve también puede resolver sistemas de
ecuaciones tanto lineales como no lineales.
 Cuando se parea con la función sustitución (subs), la
función solve permite al usuario encontrar soluciones
analíticas a una variedad de problemas.

13
Matlab
Solución de ecuaciones

 Cuando se usa con una expresión, la función solve iguala la


expresión a cero y resuelve para las raíces.

Ejemplo:
>> E1=x-3
>> solve (E1)
ans =
3
>> sol ve ( ' x^2 - 9 ' )
ans =
3
-3

14
Matlab
Solución de ecuaciones

 Podemos resolver fácilmente expresiones simbólicas con más


de una variable. MATLAB resuelve preferentemente para x. Si
no hay x en la expresión, MATLAB encuentra la variable más
cercana a x. Si quiere especificar la variable por resolver, sólo
inclúyala 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
Solución de ecuaciones

 Para resolver ecuaciones que no están 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
Solución de ecuaciones

 La función solve también 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