Herramientas computacionales para la matemática MATLAB: MuPAD. Verónica Borja Macías Junio 2012 1 Matlab MuPAD El Symbolic Math Toolbox está basado en el MuPAD symbolic engine. El MuPAD engine es un proceso que se ejecuta en la computadora de manera separada de MATLAB El MuPAD engine se inicia cuando la función que es llamada en MATLAB requiere del symbolic engine. 2 Matlab MuPAD Para iniciar el MuPAD podemos ir al boton: Start y ahi seleccionar Toolboxes>Symbolic Math>MuPAD. 3 Matlab MuPAD Mediante el comando mupadwelcome desde la linea de comandos también es posible abrir el MuPAD 4 Matlab Libreta de MuPAD 5 Matlab Evaluación de expresiones Para evaluar las expresiones dentro de la libreta existen varias opciones. Teclear enter Seleccionar alguna de las ociones del menu notebook: Evaluate Evaluate from Beginning Evaluate to End Evaluate All. O en la barra de herramientas 6 Matlab Funciones Para evitar errores de sintaxis y para recordar facilmente los comandos MuPAD puede completar automáticamente los comandos que se se empezaron a teclear al oprimir Ctrl+Barra espaciadora. Y por supuesto se puede acceder a las funciones mediante la barra de funciones de la derecha. 7 Matlab Ayuda Si deseamos obtener ayuda de sobre alguna función podemos: Colocar el cursor sobre la función en el input. Dar clic con el boton derecho sobre la función. Teclear en el input : info(fnc) ?fnc 8 Matlab Ayuda Por último tenemos la ventana gráfica de ayuda en la que podemos ver el contenido y buscar información. 9 Matlab Sintaxis Existen bastantes diferencias entre MATLAB y MuPAD en cuanto a sintaxis. 10 Matlab Sintaxis 11 Matlab Aritmética [ [ [ [ [ [ [ [ [ [ [ Aritmética con enteros, racionales y aproximaciones 2 + 2 (1 + (5/2*3))/(1/7 + 7/9)^2 56^(1/2) float(sqrt(56)) DIGITS:=20: float(sqrt(56)) delete DIGITS float(sqrt(56)) (1.0 + (5/2*3))/(1/7 + 7/9)^2 1.0/3*exp(1)*sin(2) float(1.0/3*exp(1)*sin(2)) 1.0/3*exp(1.0)*sin(2.0) 12 Matlab Aritmética Aritmética con complejos [ [ [ [ [ [ [ [ [ sqrt(-1), I^2 (1 + 0.2*I)*(1/2 + I)*(0.1 + I/2)^3 1/(sqrt(2) + I) rectform(1/(sqrt(2) + I)) Re(1/(2^(1/2) + I)) Im(1/(2^(1/2) + I)) conjugate(1/(2^(1/2) + I)) abs(1/(2^(1/2) + I)) arg(1/(2^(1/2) + I)) 13 Matlab Derivadas Derivadas [ f := 4*x + 6*x^2 + 4*x^3 + x^4: diff(f, x) Derivadas parciales [ f := y^2 + 4*x + 6*x^2 + 4*x^3 + x^4: diff(f, y) Derivadas de orden superior [ diff(diff(diff(sin(x), x), x), x) [ diff(sin(x), x, x, x) [ diff(sin(x), x $ 3) Derivadas respecto a varias variables [ diff(diff((x^2*y^2 + 4*x^2*y + 6*x*y^2), y), x) [ diff(x^2*y^2 + 4*x^2*y + 6*x*y^2, y, x) Derivada de una función arbitraria [ D(y)(t); D(y^2)(t) [ y'(t); (y^2)'(t) 14 Matlab Integrales Integrales indefinidas [ int((cos(x))^3, x) Integrales definidas [ int((cos(x))^3, x = 0..PI/4) [ int(sin(x)/x, x = -infinity..infinity) Aproximación numérica [ int(sin(x^2)^2, x=-1..1) [ float(int(sin(x^2)^2,(x=-1..1))) [ numeric::int(sin(x^2)^2, x=-1..1) 15 Matlab Álgebra vectores y metrices Vectores y matrices [ V := matrix([1, 2, 3]) [ A := matrix([[1, 2], [3, 4], [5, 6]]); [ B := matrix([[1, 2, 3], [4, 5, 6]]) [ C := matrix(3, 2, [[-1, -2], [-4, -5], [-7, -8]]); [ W := matrix(1, 3, [1, 2, 3]) [ F := matrix(3, 3, [[1, -1, 0], [2, -2]]) [ matrix(2, 2, [[-1, -2], [-4, -5], [-7, -8]]) [ G := matrix(4, 4, [1, 2, 3, 4], Diagonal) 16 Matlab Álgebra vectores y metrices Operaciones con matrices [ A := matrix([[1, 2], [3, 4], [5, 6]]); [ B := matrix([[1, 2, 3], [4, 5, 6]]); [ A*B CUIDADO:Operaciones entre escalares y matrices [ C := matrix(2, 2, [[-1, -2], [-4, -5]]); [ C + 10 Determinante, inversa [ G := matrix([[1, 2, 0], [2, 1, 2], [0, 2, 1]]); det(G); 1/G Algebra lieneal [ linalg::eigenvalues(G); [ linalg::eigenvalues(F); [ linalg::eigenvalues(A*B) 17 Matlab Solución de ecuaciones [ [ [ [ [ [ [ [ [ [ Con una variable solve(x^5+3*x^4-23*x^3-51*x^2+94*x+120=0,x) Con parámetros solve(a*x^2 + b*x + c = 0, x) solve(a*x^2 + b*x + c = 0, x) assuming a > 0 Sistemas de ecuaciones solve([x^2+x*y+y^2 = 1, x^2-y^2 = 0], [x, y]) solve([x^2 + y^2 = a, x^2 - y^2 = b], [x, y]) Ecuaciones diferenciales o:=ode(x^2*diff(y(x),x,x)+2*x*diff(y(x),x)+x, y(x)): solve(o) Inecuaciones solve(x^4 >= 5, x) assume(x in R_); solve(x^4 >= 5, x) solve(x^4 >= 5, x) assuming x > 0 18 Matlab Manipulación de expresiones [ [ [ [ [ [ [ Polinomios expand((x - 1)*(x + 1)*(x^2 + x + 1)*(x^2 + 1)*(x^2 x + 1)*(x^4 - x^2 + 1)) factor(x^12 - 1) collect((x - a)^4 + a*x^3 + b^2*x + b*x + 10*a^4 + (b + a*x)^2, x) Descomposición en fracciones parciales partfrac((7*x^2 + 7*x + 6)/(x^3 + 2*x^2 + 2*x + 1)) Simplificaciones simplify((x - 1)*(x + 1)*(x^2 + x + 1)*(x^2 + 1)*(x^2 - x + 1)*(x^4 - x^2 + 1)) Simplify((x - 1)*(x + 1)*(x^2 + x + 1)*(x^2 + 1)*(x^2 - x + 1)*(x^4 - x^2 + 1)) f := a* x *(a + 1) + b* y *(y + b* x* y): simplify(f); Simplify(f) 19 Matlab Manipulación de expresiones [ [ [ [ [ Expresiones trigonométricas expand(sin(5*x)) factor(cos(x)^4 + 4*cos(x)^3*sin(x) + 6*cos(x)^2*sin(x)^2 + 4*cos(x)*sin(x)^3 + sin(x)^4) simplify(cos(x)^2 + sin(x)^2) simplify(cos(x)^4 + sin(x)^4 + sin(x)*cos(x)) Simplify(cos(x)^4 + sin(x)^4 + sin(x)*cos(x)) Simplificación de partes específicas de la expresión [ simplify(ln(x)+ln(3)-ln(3*x)+(exp(x)-1)/(exp(x/2)+1)) [ simplify(ln(x)+ln(3)-ln(3*x)+(exp(x)-1)/(exp(x/2)+1), ln) 20 Matlab Restricciones [ [ [ [ Las variables solve(x^(5/2) solve(x^(5/2) solve(x^4 - 1 solve(x^4 - a por default son complejas = 1, x) = 1, x) assuming x in R_ = 0, x) assuming x>0 = 0, x) assuming a = 16 and x in R_ Restricciones sobre integrales [ int(1/abs(x^2 - 1), x) [ int(1/abs(x^2 - 1), x) assuming x > 1 Simplificacionde expresiones con restricciones [ simplify(sqrt(x^2+2*x+1)+sqrt(x^2-2*x+1)+sqrt(x^2+ 4*x+4)+sqrt(x^2-4*x+4)) [ simplify(sqrt(x^2+2*x+1)+sqrt(x^2-2*x+1)+sqrt(x^2+ 4*x+4)+sqrt(x^2-4*x+4)) assuming x > 2 21 Matlab Gráficas [ [ [ [ [ [ [ [ [ [ Gráficas 2D plot(sin(x)*cos(3*x)) Gráficas 3D plot(sin(x)*sin(y), #3D) Graficar varias funciones a la vez plot(sin(x), cos(x), tan(x), cot(x)) plot(sin(k*x) $ k = 1..3) plot(-sqrt(r^2 - x^2 - y^2) $ r = 1..5, #3D) Especificar rangos plot(sin(x^3)*exp(x), x = 3..5) plot(sin(x)*sin(y), x = 0..3, y = 1..3, #3D) plot(sin(k*x) $ k = 1..5, x = 0..2*PI) plot({sin(k*x), k*t^2} $k=1..5, x=0..2*PI, t=-1..1) Graficar por partes plot(piecewise([x < - 2, - 1], [-1 < x and x < 0, x^2], [0 < x and x < 1, -x^2], [x > 1, 1])) 22