clear all;
Symbolic Math Toolbox
Este tutorial utilizará Symbolic Math Toolbox. Este breve tutorial explicará algunas de las funcionalidades básicas que se usarán en futuros tutoriales.
Symbolic Math Toolbox es una herramienta potente para cálculos, ya que nos permite usar variables en lugar de números. Esto puede ser útil para reutilizar matrices o ecuaciones complejas y sustituir valores cuando sea necesario.
Activa "Output inline" en el lado derecho de tu barra de desplazamiento.

Crear una variable simbólica
Para crear una variable simbólica puedes usar el comando syms seguido de las variables deseadas.
syms var
Si solo trabajas con números reales, como será el caso en este tutorial, amplía syms con real para reducir los cálculos simbólicos con números imaginarios.
syms var real
Puedes crear varias variables a la vez; si la amplías con un número, se mostrará como índices en la visualización
syms var1 var2 var3 real real
MyVars = [var1 var2 var3]
$$ \displaystyle \left(\begin{array}{ccc} {\textrm{var}}_1 & {\textrm{var}}_2 & {\textrm{var}}_3 \end{array}\right) $$
Cuando escribes letras griegas como variables, se convertirán en sus símbolos en la visualización:
syms alpha beta gamma Delta delta
MyVars = [alpha, beta, gamma, Delta, delta]
$$ \displaystyle \left(\begin{array}{ccccc} \alpha & \beta & \gamma & \Delta & \delta \end{array}\right) $$
Sustituir variables
Usando la función subs() podemos sustituir variables simbólicas por valores, lo que facilita reutilizar, por ejemplo, ecuaciones:
syms alpha beta x y z real
Equation1 = x^2 ;
Equation2 = 2 * x + y;
Value1 = subs(Equation1, x, 3)
Value2 = subs(Equation2, [x, y], [3, 1])
Podemos combinar funciones como:
Equation3 = Equation1 + Equation2
Equation4 = Equation1 * Equation2
Equation5 = subs(Equation4, [x, y], [alpha, beta])
También puedes sustituir vectores por variables, lo que da como resultado una salida vectorial donde cada fila corresponde a la fila de entrada correspondiente.
timevec= linspace(0,10,5)' %esto crea un vector columna igualmente espaciado de 0 a 10 en 5 pasos.
timevec = 5x1
0
2.5000
5.0000
7.5000
10.0000
EquationVector = subs(Equation4,x,timevec)
$$ \displaystyle \left(\begin{array}{c} 0\newline \frac{25\,y}{4}+\frac{125}{4}\newline 25\,y+250\newline \frac{225\,y}{4}+\frac{3375}{4}\newline 100\,y+2000 \end{array}\right) $$
Convertir variables simbólicas
A veces aparecen mensajes de error al intentar combinar variables numéricas y simbólicas. Evítalo convirtiendo una de ellas:
Después de sustituir, la variable del Workspace sigue considerándose una variable simbólica. Aunque tu nueva variable solo contenga números, MATLAB la considerará una variable simbólica, lo que puede causar dificultades. Puedes convertirla a numérica con:
ValueDouble = double(Value2)
ValueDouble = 7
Si intentas insertar variables simbólicas en variables numéricas, necesitas convertir la matriz numérica en una matriz simbólica:
Matrix_1 = ones(3)
Matrix_1 = 3x3
1 1 1
1 1 1
1 1 1
Matrix_symb = [alpha, beta;
gamma, delta]
$$ \displaystyle \left(\begin{array}{cc} \alpha & \beta \newline \gamma & \delta \end{array}\right) $$
Matrix_combined = sym(Matrix_1)
$$ \displaystyle \left(\begin{array}{ccc} 1 & 1 & 1\newline 1 & 1 & 1\newline 1 & 1 & 1 \end{array}\right) $$
Matrix_combined(1:2,1:2) = Matrix_symb
$$ \displaystyle \left(\begin{array}{ccc} \alpha & \beta & 1\newline \gamma & \delta & 1\newline 1 & 1 & 1 \end{array}\right) $$
Trabajar con variables simbólicas
Symbolic Math Toolbox nos ofrece algunas herramientas potentes al hacer cálculo.
Derivar con variables simbólicas
Podemos derivar una expresión como:
Equation = x^2 + x * y^2 + y^3 + 5
diff_Eq1 = diff(Equation, x)
También puedes derivar respecto a varias variables a la vez:
diff_Eq2 = diff(Equation, x, y)
diff_Eq3 = diff(Equation, x, x)
diff_Eq4 = diff(Equation, y, y)
Esto también puede usarse en una matriz, donde cada elemento
MatrixEquation = [x^2, x*y, x*y*z;
x*y, y^2, y*z ;
x*y*z, y*z, z^2 ]
$$ \displaystyle \left(\begin{array}{ccc} x^2 & x\,y & x\,y\,z\newline x\,y & y^2 & y\,z\newline x\,y\,z & y\,z & z^2 \end{array}\right) $$
diff_Matrix1 = diff(MatrixEquation, x)
$$ \displaystyle \left(\begin{array}{ccc} 2\,x & y & y\,z\newline y & 0 & 0\newline y\,z & 0 & 0 \end{array}\right) $$
diff_Matrix2 = diff(MatrixEquation, x,y)
$$ \displaystyle \left(\begin{array}{ccc} 0 & 1 & z\newline 1 & 0 & 0\newline z & 0 & 0 \end{array}\right) $$
diff_Matrix3 = diff(MatrixEquation, x,y,z)
$$ \displaystyle \left(\begin{array}{ccc} 0 & 0 & 1\newline 0 & 0 & 0\newline 1 & 0 & 0 \end{array}\right) $$
Reescribir ecuaciones
Podemos reescribir expresiones usando la toolbox simbólica:
Eq = (x + 1) * (x + y)
La función collect() devolverá una ecuación donde todas las expresiones se agrupan según la variable deseada y sus potencias idénticas
Eq_collect_x = collect(Eq, x)
La función simplify() nos permite factorizar una expresión y aplicar reglas de cancelación
Simple_Eq = simplify(Eq_collect_x)
Resolver ecuaciones
La toolbox simbólica también nos permite resolver variables:
syms a b real
Eq1 = a * 5 + b == 0
Eq2 = a * 15 + b == 4
solutions = solve([Eq1, Eq2], [a, b])
solutions = struct with fields:
a: 2/5
b: -2
También podemos hacer que resuelva una variable que depende de otras:
parameter_solution_a = solve(Eq1, a)