Algebra simbólica II

Anuncio
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
Descargar