departamento de matemÁtica aplicada y estadÍstica

29
DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA GRADO EN INGENIERÍA MECÁNICA MATEMÁTICAS I CUADERNO DE PRÁCTICAS DE ORDENADOR CURSO 2016/17

Upload: others

Post on 25-Jun-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

GRADO EN INGENIERÍA MECÁNICA

MATEMÁTICAS I

CUADERNO DE PRÁCTICAS DE ORDENADOR

CURSO 2016/17

Page 2: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

2

Parte 1: Manejo del programa Maxima El programa Maxima es una herramienta muy útil para realizar cálculos matemáticos. Puede utilizarse como calculadora científica. Es capaz de manipular números enteros, racionales, reales y complejos, realizando numerosas operaciones con ellos. Además permite definir funciones, realizar operaciones con símbolos, trabajar con matrices y vectores, resolver ecuaciones, calcular derivadas e integrales, representar funciones, etc. wxMaxima es una interfaz gráfica de Maxima, que permite el manejo de muchos de los comandos de Maxima con el uso del ratón. El código fuente y los manuales de Maxima son de libre acceso desde la página web http://maxima.sourceforge.net . La descarga de la interfaz gráfica wxMaxima puede realizarse desde la página web http://wxmaxima.sourceforge.net/wiki/index.php/Main_Page . Cuando queremos evaluar una expresión con wxMaxima, una vez escrita hay que pulsar la tecla INTRO del teclado numérico (en la parte inferior derecha del teclado), o bien la combinación simultánea de las teclas SHIFT+ENTER (se mantiene pulsada la tecla SHIFT y después se pulsa ENTER). Entonces el programa ejecuta la expresión y le pone un contador de entradas de la forma % i (que precederá a la expresión), y si tiene que mostrar el resultado de la evaluación éste va precedido por un contador de salidas de la forma % o. Así, para la primera evaluación pondrá ( % i 1 ) y ( % o 1 ) en los datos de entrada y salida, respectivamente; para la segunda evaluación pondrá ( % i 2 ) y ( % o 2 ), y así sucesivamente. Todos estos datos de entrada o salida wxMaxima los guardará en la memoria durante toda la sesión, incluso aunque sean borrados de la pantalla. Ejemplo 0.1 Ejecutar las siguientes sentencias (en el primer cálculo wxMaxima necesita cargar el núcleo del programa, con lo que tardará unos segundos) 4 − 6 4 ∗ 8 5 + 18 Nota 0.2: Las sentencias pueden ser ejecutadas de una en una (cada vez que se escriba una se ejecuta) o todas de una vez en una misma línea separadas por punto y coma, o en distintas líneas acabando cada una de ellas en punto y coma y separando las líneas por Enter. Para modificar en pantalla una expresión, en primer lugar necesitamos situarnos en el lugar adecuado, para lo cual se puede utilizar el ratón o las flechas del teclado. Después pueden eliminarse algunos caracteres usando las teclas SUPR o ”←”. Incluso pueden ser aprovechadas expresiones ya escritas para no tener que volver a copiarlas si vamos a utilizar otra similar. Esto puede hacerse marcando en negrita la

Page 3: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

3

expresión que queramos copiar, mediante el ratón (pinchando a un lado de la expresión y manteniendo pulsado el botón izquierdo del ratón hasta llegar al otro lado de la expresión, donde soltaremos el botón) o mediante la tecla SHIFT (poniendo el cursor a un lado de la expresión, teniendo pulsada la tecla SHIFT, se lleva el cursor, bien con el ratón o con las teclas de dirección, al otro lado de la expresión); después se hace una copia de la expresión con las teclas CONTROL+C, o bien con el botón derecho del ratón seleccionando la opción COPY (o con la opción COPY del menú EDIT de la parte superior de la ventana). Una vez hecha una copia de esto se coloca el cursor en el lugar donde se quiere poner lo que se ha copiado y se pulsa CONTROL+V, o bien con la opción PASTE del botón derecho del ratón o del menú EDIT. Existen otras formas de realizar lo anterior y otras variantes, que pueden adquirirse con la práctica, pero no es nuestro propósito adquirir dominio en esta faceta. 1 Operaciones aritméticas elementales Los operadores aritméticos son + − ∗ / ˆ Es conveniente que se tengan bien localizadas las teclas en las están cada uno de estos símbolos; todos, excepto ˆ se pueden encontrar también en el teclado numérico, que está en la parte derecha del teclado. Algunos de ellos precisan de la tecla SHIFT para su pulsación (esto no ocurre cuando se utiliza el teclado numérico): ∗ / ˆ Además, hay que tener presente que ˆ no aparece en la pantalla hasta escribir otro carácter. Las operaciones que representan son: x + y suma x − y resta x*y producto x/y división xˆy potencia Para combinar estos operadores han de tenerse en cuenta los criterios de prioridad en matemáticas: En un primer nivel de prioridad está la potencia; en un segundo nivel están el producto y el cociente; finalmente aparecen la suma y la resta. Si dos operadores tienen la misma prioridad se evalúa primero el que figura a la izquierda y después el de la derecha. Para cambiar el orden de ejecución de las operaciones pueden utilizarse paréntesis. Ejemplo 1.1 Ejecutar las siguientes sentencias: 1) 2*4+3 2) 2*(4+3) 3) (2*4)+3 4) 6/3−2 5) 6/(3−2) 6) (6/3)−2 7) 2*3ˆ2 8) (2*3)ˆ2 9) 2*(3ˆ2) 10) b/c+aˆd−e 11) b/(c+a)ˆd−e 12) b/(c+a)ˆ(d−e) 13) (b/c+a)ˆd−e 14) b/(c+aˆd−e) 15) (b/c+a)ˆ(d−e)

Page 4: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

4

Ejercicio 1.2 Realizar las siguientes operaciones (expresadas medianta nuestra notación habitual) con wxMaxima:

a) 83)21( b) 324

8

c)

3243

2433

2

d)

44

2

35

)7

673(

)2571(

Observación 1.3 1) En general, cuando se ponga Ejemplo deberán escribirse literalmente las expresiones que figuran. Cuando se ponga Ejercicio las expresiones figurarán escritas del modo habitual matemático, y el alumno deberá pasarlas al lenguaje de wxMaxima. 2) Para aprovechar sentencias anteriores y no tener que volver a escribirlas enteramente puede utilizarse también el recurso que vamos a ver a continuación. Como ya hemos comentado anteriormente wxMmaxima guarda en la memoria todas las entradas y salidas en una misma sesión. Pues bien, podemos referirnos a éstas gracias al símbolo %. Este símbolo hace referencia a la última salida. Así por ejemplo, si ponemos %+8 el resultado será el inmediatamente anterior más 8. Si queremos hacer referencia a la entrada etiquetada con 23, escribiremos %i23. Ejemplo 1.4 Ejecutar las siguientes sentencias: 1) 4-7 2) 5*3 3) 9/3 4) % Ahora pinchar en el menú “Reinicia maxima” de la barra de menús denominada “Maxima” 5) %i2 6) %*5 Ejercicio 1.5 1) Realizar la operación 3)511( · a 2) Multiplicar la expresión anterior por 4.

3) Realizar la operación a16)12

9(a)

10

15

4

30( 24

4) Sumar ahora las expresiones de los apartados 1) y 3). 5) Escribir la expresión 3*x-2*y+5*x*y 6) Escribir ahora la expresión 2*x+3*y-4*y*x 7) Sumar ambas expresiones. Observación 1.6 (Abortar un cálculo) Es posible que Maxima tarde demasiado en hacer algún cálculo. No es lo habitual, pero en alguna ocasión puede suceder que la operación sea extremadamente compleja, o incluso que nos hayamos equivocado al escribirla y casualmente se transforme en algo que le haga al programa dar demasiadas vueltas. Cuando queremos detener alguno de estos cálculos bastará con seleccionar la opción Reiniciar Maxima del Menú Maxima, de la parte superior de la pantalla. A continuación en el menú

Page 5: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

5

Celda se deberá seleccionar la opción evaluar celda o evaluar todas las celdas para continuar las operaciones que hayan quedado pendientes.

2. Números wxMaxima puede operar con números: Racionales: Si se hacen operaciones con fracciones el resultado suele venir en forma de fracción. Comprobarlo en el siguiente ejemplo (2/3-3/5)*5/2 Irracionales: El programa trabaja con sus expresiones. Comprobarlo en el siguiente ejemplo 2ˆ(1/2) . Aproximación: En la mayoría de las ocasiones interesa tener una aproximación decimal del resultado. Tenemos varias formas de conseguirlo:

a) Escribiendo float(número) b) Escribiendo número,numer c) Escribiendo bfloat(número), que nos dará una expresión decimal larga de número.

También podemos en el menú Numérico utilizar la opción A real o la opción Conmutar salida numérica, que deberemos cambiar si queremos continuar con el cálculo simbólico. Para conseguir una aproximación con un determinado número de decimales, se ha de escribir bfloat(número) y antes de ejecutar el resultado se indica el número de decimales en la opción Establecer precisión del menú Numérico. Cuando se pretende obtener un gran número de cifras en el resultado, y que aparezcan todas en pantalla, debemos en el menú de Maxima pinchar en “cambiar pantalla 2D” y elegir ascii . En este modo de pantalla la apariencia de ciertas operaciones (raíces, etc.) no es buena. Para recuperarla se debe volver al modo xml. Ejemplo 2.1 Ejecutar las siguientes sentencias: a) (2/3-3/5)*5/2 b) float((2/3-3/5)*5/2) c) (2/3-3/5)*5/2,numer d) 2ˆ150 e) bfloat(2ˆ150) f) float(2ˆ150) Observación 2.2 Si en un resultado pone, por ejemplo, 1.34b45 significa 1,34 multiplicado por 10 elevado a 45. Ejercicio 2.3 Obtener los siguientes números:

a) 2 con 47 cifras significativas b) 8

3 con 60 cifras significativas

c) 3 35 con 80 cifras significativas d) 2003 con todos los dígitos.

Page 6: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

6

3 Notación y símbolos. Insertar texto. wxMaxima, como la mayoría de los programas informáticos, es muy estricto con las sentencias que se le dice que ejecute. Un pequeño cambio en una expresión y el resultado puede ser muy distinto, o bien, el programa puede no entender la sentencia. He aquí unas situaciones en las que conviene hacer hincapié. a) Mayúsculas y minúsculas: el programa distingue unos caracteres de otros. Los comandos propios del programa empiezan por minúsculas. b) Espacios en blanco: Si un comando o una expresión esta compuesto por varias palabras, o por una palabra de varias letras, no hay que dejar espacios en blanco entre ellas. c) Paréntesis y corchetes: los corchetes definen listas de elementos, vectores y las matrices se definen utilizando un paréntesis que encierra varios corchetes (vectores) con listas de la misma longitud. Los paréntesis también agrupan e indican prioridad de operaciones. Además los paréntesis delimitan argumentos de las funciones. . Estos dos tipos de objetos pueden ponerse las veces que sean necesarias, pero nunca pueden cambiarse unos por otros. Los corchetes (al igual que las llaves), se obtienen manteniendo pulsada la tecla AltGr y pulsando después la correspondiente tecla [] {}. d) Para insertar texto, seleccionar en el menú “celda” la opción “nueva celda de texto”, o “nueva celda de título” , etc., según lo que se necesite.

4 Algunas constantes y funciones propias de wxMaxima El programa lleva incorporadas numerosas constantes y funciones propias. 4.1 Constantes Algunas constantes de wxMaxima son: %pi Es el número habitualmente designado por π, y cuyo valor aproximado es 3.1416 %e Es el número habitualmente designado por e, y cuyo valor aproximado es 2.71

%i Es la raíz imaginaria de 1 , habitualmente designada por i infinity También denotado por inf. Habitualmente denotado por ∞ . pinf (plusinfinity) + ∞ . minf (minusinfinity) -∞ . Nota: Hay que tener en cuenta que las funciones trigonométricas usuales trabajan por defecto con el argumento en radianes. Si α es la medida en grados sexagesimales de un ángulo, para hallar sus razones trigonométricas habremos de utilizar como argumento a (π/180)*α. Ver Observación 4.2 y el Ejemplo 4.3. Ejemplo 4.1 Ejecutar las siguientes sentencias : a) %eˆ(1/2) b) float(%eˆ(1/2)) c) bfloat(%eˆ(1/2)) con 35 dígitos.

Page 7: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

7

d) float(3*%pi^2 ) e) bfloat(3*%pi^2) con 80 dígitos. f) (%i-3)*(%i^3)-8*%i g) ratsimp((%i-3)*(%i^3)-8*%i) 4.2 Funciones A continuación ponemos algunas de las funciones más importantes que wxMaxima lleva incorporadas (a la izquierda figura la función en el lenguaje del wxMaxima y a la derecha tal y como nosotros la escribimos habitualmente):

log(x) = ln x exp(x) = xe sqrt(x) = x sin(x) = senx cos(x) =cos x tan(x) = tan x asin(x) = arcsenx acos(x) = arccosx atan(x)=arctanx abs(x) = Valor absoluto o módulo de x (según sea el número x real o complejo) entier(x) = parte entera ifactors(n) = factores primos del número natural n realpart(z) = Parte real de z imagpart(z) = Parte imaginaria de z conjugate(z)= Conjugado de z carg(z) = argumento de z Observación 4.2 Pueden hallarse el valor de las funciones trigonométricas tanto en radianes como en grados. Por ejemplo, para hallar el seno de π radianes pondríamos sin(%pi) y si lo hacemos en grados (que serían 180) deberíamos poner sin(180*(π/180)) . Maxima no tiene funciones específicas para los logaritmos en bases distintas a e. Para hallar el logaritmo en base a de x debemos escribir log(x)/log(a) . Ejemplo 4.3 Escribir las siguientes sentencias en Mathematica: a) log(2) b) bfloat(%) c) abs(-3) d) exp(7) e) float(exp(7)) f) ifactors(999) g) z:6-8*%i h) realpart(z) i) imagpart(z) j) conjugate(z) k) carg(z) Ejemplo 4.4 Escribir las siguientes sentencias en Mathematica: a) sin(%pi/2) b) sin(90*(%pi/180)) c) sin(%pi/4) d) sin(45*(%pi/180)) e) float(sin(45*(%pi/180)) f) cos(5*%pi/6) g) cos(150*(%pi/180)) h) float(cos(150*(%pi/180))) i) cos(135*(%pi/180)) j) float(cos(135*(%pi/180))) k) cos(135) l) float(cos(135)) Observación 4.5 Observemos los 4 últimos apartados. En el i) y el j) se está calculando el coseno de 135 grados, de modo exacto o con decimales. En el k) y el l) se está calculando el coseno de 135 radianes, en primera instancia el programa lo deja indicado, pues no es exacto y al final lo calcula con decimales.

Page 8: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

8

Ejercicio 4.6 Realizar las siguientes operaciones en Maxima. Debemos tener en cuenta que para que aparezcan todas las cifras decimales del apartado 9), tenemos en el menú “ Maxima” que pinchar en “cambiar pantalla 2D” y elegir ascii.

1) cos π/3 2) 256log2 3) 48 4) xe 3 5) sen 30 6) sen30º 7) |3 - 4i| 8) ln 0

9) Calcular e con 100 cifras decimales y 5 con 1000 10) Descomponer en factores primos 98609, 8760960 y 235970. 11) Dado el complejo (3+i)·(-4+6i) calcular la parte real, la imaginaria, el módulo y el argumento.

5 Variables y funciones

Estos objetos nos van a permitir definir nuevas variables y funciones que podremos utilizar de la misma forma que las propias de Maxima. A este tipo de objetos hay que asignarle un nombre, que normalmente será una letra minúscula , o una letra seguida de un número, o dos o más letras seguidas. Es importante destacar que algo como xy será identificado por el programa como un solo objeto, una sola expresión. Si lo que pretendemos es expresar el producto del objeto x con el objeto y deberíamos poner x*y . Ejemplo 5.1 Ejecutar estos ejemplos, observando el resultado: a) 5*xy-6*yx+8*x*y-6*y*x+3*x*y-45*y*x b) 3*xyˆ2-x*yˆ2+yxˆ2-2*y*xˆ2-2*xyˆ2+3*x*yˆ2-2*yxˆ2-y*xˆ2 c) x*y*xy*x^3*y^2*xyˆ2*xy*yx*x^4*yx^3*y^2 Ejercicio 5.2 Transcribir al lenguaje de Maxima las siguientes expresiones: 1) 5345 23 xxx 2) xyxyxxyyx 64 3232

3) 1

344546

22

22322

yx

zyxzyxzxyzyx

5.1 Variables Si ponemos x: 0 habremos definido la variable x con valor 0 (observar la utilización de los dos puntos). Si a continuación escribimos x: 4 le habremos cambiado el valor a la variable x que ahora pasará a valer 4. Si ponemos la sentencia y : x +1 estamos definiendo una variable y a la que le estamos asignando el valor que tiene x más 1. Una situación similar sería la sentencia x: x +1 que no representa una ecuación, sino que significa que a x le asignamos el valor que tiene en este momento más 1. En este caso, después de esta operación, el nuevo valor de x es 5.

Page 9: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

9

Si queremos borrar el valor de una variable o función es suficiente que escribamos remvalue (nombre). También podemos en el menú “Maxima” utilizar las opciones “mostrar variables” y “borrar variables”. Ejemplo 5.3 Ejecutar las siguientes sentencias: a) x: 2 b) y:3 c) z: x+3 d) x1: x-y e) x:x+10 f) x 5.2 Funciones Si ponemos f(x):= 2*x+1 habremos definido la variable función f(x) con valor 2x+1. Para definir una función que dependa de n variables debe utilizarse el siguiente esquema . Nombrefuncion(variable1,variable2,,...,variablen): =[expr1, expr2, .. , exprm] en función de las variables Una forma alternativa para definir una función es mediante el procedimiento define(fun., expr.) . Por ejemplo: Al escribir define (g(x), 5*x), habríamos definido la función g(x)=5x. Nota: De las dos maneras se consiguen casi idénticos objetivos. Un detalle diferente a tener en cuenta es cuando queremos definir funciones que son derivadas de otras. Si además queremos evaluar estas funciones entonces es más conveniente usar el último modo. Esto lo apreciaremos en la parte correspondiente a derivadas. Ejemplo 5.4 Ejecutar las siguientes sentencias: a) f(x): = xˆ3 - 4; g(x,y): =sin(x*y); h(v): =log(v-4)/v^2; b) F(p,q,r): =cos(2*p-q)*exp(q-r^2) Para obtener el valor de la función en un punto basta con sustituir las variables por las coordenadas del punto, Así pondremos, para una función f de una variable f(4) para hallar el valor de esa función en el punto 4;ó g(-1,a) si queremos hallar el valor de una función g de dos variables al evaluarla en el punto (-1,a) Hay que llevar precaución para usar las funciones y evaluar expresiones en ellas. Así por ejemplo si tenemos definida la función de una variable f y ponemos f(x) el resultado será la expresión de f evaluada en el valor x Si x no tiene ningún valor asignado previamente la expresión quedará de forma genérica en función del valor del ”parámetro” x. Ahora bien si x ya tiene algún valor asignado la expresión f(x) no quedará de forma genérica. Por ello, cuando queremos que la expresión quede en forma genérica debemos asegurarnos que los nombres que empleamos para los parámetros no han sido empleados anteriormente, o, en su

Page 10: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

10

defecto, debemos eliminar el valor que hayan tenido antes con el comando remvalue, o desde el menú Maxima con borrar variables remfunction(func1, func2,… ) borra las funciones que indiquemos. También podemos mostrar las funciones definidas y borrar las que no interesen desde el menú Maxima en las opciones correspondientes. fundef(fun.) devuelve la definición de la función que está entre paréntesis. Ejemplo 5.5 Ejecutar las siguientes sentencias: a) g1(x): =xˆ3-x+1 b) g1(1) c) g1(4) d) g1(xx) e) g2(y): =3*y+6/y f) g2(7) g) g2(z) h) define(g3(x),x^3) i) g3(5) j) fundef(g3) Ejemplo 5.6 Ejecutar las siguientes sentencias: a) f3(variable): =variableˆ3 b) f3(parametro) c) c1: 3 d) f3(c1) e) f4(cc): =3*cc f) f4(parametro2) g) remfunction(f4) h) f5(x5):=3*x5-cos(x5) i) f5(t) j) f5(0) k) f5(%pi) l) f6(x,y): =5*x^2-2*y^3 m) f6(x,y) n) f6(0,-1) ñ) f6(1,2) Ejercicio 5.7 Definir con Maxima las siguientes funciones:

f5(x)=3

cos

x

x f6(x,y)= senyxe yx ·cos)( 22 f7(x,y,z)=xyzcos(x+y+z)

y obtener los siguientes valores:

a) f5(π) b) f6(0, π) c) f6(π/4, -π/4) d) f7(-1, 1, 0) e) f5( 3 ) Ejercicio 5.8 Crear las funciones g1(x)= xxx 74 23 , g2(x)= 436 24 xxx y

g3(x)=)(2

)(1

xg

xg y evaluarlas en un parámetro (sin valor asignado) llamado a. Después

borrarlas de la memoria. Observación 5.8 Cuando vayamos a definir un nuevo objeto es conveniente asegurarnos de que no hay ninguno anterior con ese mismo nombre, eligiendo un nombre no utilizado anteriormente. En caso contrario, el programa podría no dejarnos asignarle el mismo nombre a otro objeto, o podría eliminar el valor anterior. Por otro lado, aunque guardemos información en un archivo en el que se hayan definido una serie de funciones o variables, éstas sólo permanecerán en memoria hasta que cerremos el programa. Esto quiere decir que cuando arranquemos de nuevo el programa y abramos el archivo, aunque estén escritas esas definiciones hasta que no volvamos a ejecutar las sentencias correspondientes Maxima no tendrá guardadas en la memoria dichas funciones o variables.

Page 11: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

11

Parte 2: Vectores, matrices y sistemas de ecuaciones lineales

1. Definición de vectores y matrices Los vectores en Maxima se escriben entre corchetes y no con paréntesis. Así para escribir el vector (-1,2,0) pondremos [-1,2,0] Las matrices en Maxima hay que definirlas mediante el comando matrix como un vector de vectores. También se pueden definir desde el menú Maxima , “Álgebra”, introducir matriz. Al poner matrix([1,2],[-3,0],[4,6]) estaremos definiendo en Maxima la matriz que tiene por filas los vectores anteriores, es decir, la matriz que nosotros usualmente

escribimos así

64

03

21

Si asignamos un nombre a esta matriz, poniendo por ejemplo A: matrix([1,2],[-3,0],[4,6]) podemos referirnos a sus coeficientes o a sus filas, o incluso cambiarlos. Poniendo A[3,1] nos debe dar como salida el elemento de la matriz anterior que ocupa la tercera fila y la primera columna, es decir, 4. Si ponemos A[3,1]: -2 le habremos cambiado el valor que tenía, 4, valiendo ahora -2. Si ponemos ahora A[3], o también row(A,3) nos debe dar como salida la tercera fila de la matriz anterior. Si escribimos A[3]: [5,8] habremos cambiado la tercera fila de A por la fila [5,8] . Al poner diagmatrix(n,x) nos devuelve una matriz diagonal de orden n, en la que todos los términos de la diagonal principal son iguales a a x. Mediante diag_matrix(a1, a2, … , an) obtendremos una matriz diagonal con los números a1, a2, … , an en la diagonal principal. Si escribimos ident(n) obtenemos la matriz identidad de orden n. Ejemplo 1.1 Teclear y ejecutar las siguientes sentencias: a) u:[0,1,-2,6] b) u[4] c) u[4]:3 d) u e) sin([0,%pi,a]) f) A: matrix([1,2],[-3,0],[4,6]) g) A[2,1]:-2 h) A[3]:[5,8] i) A Ejercicio 1.2 1. Definir la matriz identidad de orden 11, la matriz diagonal de orden 5 cuyos elementos de la diagonal principal son todos iguales a -4, y la matriz cuyas filas son los vectores (-1,3,4,5,6), (2,4,-1,0,456), (5,-1,-9,55,0) y (0,0,0,3,-2). 2. Definir la matriz diagonal de orden 4 cuyos elementos de la diagonal principal son -1, 2, 5, 3.

Page 12: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

12

2. Operaciones con vectores y matrices La suma o resta de dos vectores o dos matrices se realiza, igual que para los números, mediante los símbolos + y - El producto de dos matrices se realiza mediante un punto . Ojo: No se realiza con* El punto . utilizado sobre vectores, sirve para realizar el producto escalar. Para multiplicar un escalar por un vector o por una matriz puede utilizarse el símbolo de multiplicación usual entre números, esto es, *. Ejemplo 2.1 Teclear y ejecutar las siguientes sentencias a) u1:[a1,b1,c1];u2: [a2,b2,c2]; b) u1+u2 c) u1-u2 d) 3*u1-5*u2 e) -5*u1+2*u2 f) m1:matrix([1,2],[-3,0],[4,6]);m2:matrix ([-1,0],[2,1],[6,4]); g) m3:matrix ([-1,1,0],[6,5,4],[4,5,-2]) h) m1+m2 i) m1-m2 j) a* m1-3*m2 k) 6*m1-m3.m2 l) u1.u2 m) u1.u1 n) u1.u2 La sentencia transpose(m) nos da la traspuesta de una matriz m Si la matriz m es cuadrada para hallar el determinante bastará teclear determinant(m) Si la matriz m es invertible, la inversa de m se puede hallar poniendo invert(m) Ejemplo 2.2 Teclear y ejecutar las siguientes sentencias

a) matriz1:matrix([0,-2],[3,5],[3,5]) b) transpose(matriz1) c) matriz2:matrix([0,2,5],[3,5,4],[2,3,5]) d) determinant(matriz2) e) invert(matriz2)

Ejercicio 2.3 Dada la matriz m1=

351

130

321

hallar su traspuesta (a la que llamaremos m2) y su determinante. Comprobar si m1 es invertible y en caso afirmativo, hallar la inversa de m1 (a la que llamaremos m3), la traspuesta de m3 (a la que llamaremos m4) y la inversa de m2 (a la que llamaremos m5). Finalmente comprobar que m4 y m5 coinciden.

Ejercicio 2.4 Dada la matriz m =

63

21 hallar 3m

a) Realizar esta operación poniendo m.m.m b) Teclear también m^3 y m*m*m y observar el resultado. c) Notar que m^3 coincide con m*m*m pero no con m.m.m = 3m . d) Hallar m^-1 y comprobar que no coincide con la inversa de m, calculada como invert(m) .

Page 13: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

13

3. Rango Dada una matriz m puede obtenerse (realizando transformaciones elementales-fila) una escalonación de la matriz inicial tecleando triangularize(m) Ésta última tiene por tanto el mismo rango que m y sus filas no nulas constituyen una base del subespacio generado por las filas de m. También puede hallarse el rango de la matriz m mediante el comando rank(m) . Ejemplo 3.1 Teclear y ejecutar las siguientes sentencias

a) matrizb1:matrix([1,2,3],[0,5,-1],[1,3,2]) b) rank(matrizb1) c) triangularize(matrizb1)

Ejercicio 3.2 Hallar el rango de las siguientes matrices (de tres formas: escalonando la matriz por filas, escalonando la matriz por columnas (aplicar el procedimiento anterior a la matriz transpuesta), y mediante el cálculo directo con rank :

2681

2322

0121

3410

2052

0231

2221

Ejemplo 3.3 Hallar una base del subespacio U=<(1,2,3,4),(0,2,1,2),(0,1,3,-1),(1,5,7,5)> de R5. Para ello tecleamos triangularize(matrix([1,2,3,4],[0,2,1,2],[0,1,3,-1],[1,5,7,5]))

Entonces obtenemos

0000

4500

2120

4321

es decir una base del mencionado subespacio es

{(1,2,3,4),(0,2,1,2),(0,0,5,-4)} Ejercicio 3.4 Hallar una base y la dimensión de los siguientes subespacios de R4: 1. El subespacio generado por los vectores (-1, 3, 2, 4), (1, -3, -2, -4), (1, 0, -2, 1) y (0, 3, 0, 5). 2. El subespacio generado por los vectores (0, 0, 0, 4), (0, 0, -2, -4), (1, 0, -2, 1), (4, 0, 2, 3) y (1, 0, 0, 5).

4. Sistemas de ecuaciones lineales

Page 14: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

14

Para resolver sistemas de ecuaciones lineales con Mathematica se puede usar linsolve y nullspace , el primero para sistemas en general, y el segundo para sistemas homogéneos. La escritura es como sigue : linsolve([ecuaciones],[incógnitas]) . Ejemplo: Para el sistema 2x+3y = 2, 5x-2y = 7 , escribiremos: linsolve([2*x+3*y=2,5*x-2*y = 7], [x,y] ) o también: p: [ 2*x+3*y=2,5*x-2*y = 7] y linsolve(p, [x,y] ) . Cuando el sistema sea incompatible la respuesta será [ ] . Si es compatible indeterminado las soluciones vendrán expresadas en función de parámetros representados por %r1 , %r2 , .. en lugar de los símbolos t, lambda , que usamos habitualmente. Dado un sistema homogéneo que tiene a m como matriz de coeficientes, nullspace(m) da como resultado un sistema de generadores del subespacio de soluciones de dicho sistema. Es decir nullspace(m) da un sistema generador del núcleo de la matriz m. Ejemplo 4.1 Discutir y resolver, en su caso, los siguientes sistemas de ecuaciones lineales:

1.

222

332

yx

yx

Tecleando linsolve([2*x-3*y=-3,2*x+2*y=2],[x,y]) determinamos la solución (0, 1) del sistema por lo que vemos el sistema es compatible determinado.

2.

242

0

132

zyx

zyx

zyx

Para determinar una solución del sistema tecleamos linsolve([x-2*y-3*z=1,-x-y+z=0,2*x-y-4*z=2],[x,y,z]) y observamos que el programa devuelve [ ], con lo que nos responde que no tiene solución. Por tanto es un SI.

3.

22

32

tzyx

tzyx

Tecleando linsolve([x-y+2*z-t=3,2*x+y+z+t=-2],[x,y,z,t]) obtenemos la respuesta: [x = -(3*%r4-1)/3,y = -(-3*%r4+3*%r3+8)/3,z = %r4,t = %r3] que nos da las soluciones en función de los parámetros representados por %r3 y %r4 correspondientes a las incógnitas z y t . El sistema es compatible indeterminado con dos grados de libertad.

Page 15: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

15

Ejercicio 4.2 Discutir y resolver los siguientes sistemas lineales:

a)

23

1223

2

zyx

zyx

zyx

b)

5222

16

63

02

tzyx

utyx

utyx

utzyx

c)

4573

1011042

484

4532

tzyx

tzyx

tzyx

tzyx

Saber resolver sistemas lineales nos permite hacer algunas cosas más relacionadas con vectores. Así por ejemplo, para saber si un vector se pone o no como combinación lineal de otros, y, en su caso, hallar los escalares que permiten hacer esto, lo que tenemos que hacer es precisamente resolver un sistema lineal. Un caso particular de esta situación se presenta cuando queremos hallar las coordenadas de un vector en una base, o, incluso, cuando queremos hallar la matriz cambio de base de dos bases de un espacio vectorial. Aunque esto último, podemos realizarlo más fácilmente, multiplicando una matriz por la inversa de otra, operaciones con matrices que ya hemos visto como pueden hacerse con Maxima. Ejercicio 4.3 Responder a las siguientes preguntas: 1. Comprobar si el vector (1, -1, 0, 2) es combinación lineal de los vectores (0, -2, 3, 1) y (1, 0, 0, 1), y en caso afirmativo, hallar los escalares que permiten dicha combinación lineal. 2. Hallar las coordenadas del vector (1, -1, 0) en la base {(1, 2, 3), (1, 3, 0), (3, 2, 3)} de 3R . 3. Dadas las bases B1 = {(1, 0, 1), (1, 1, 0), (0, 1, 1)} y B2 = {(1, 2, 3), (1, 3, 0), (3, 2, 3)} de 3R hallar las matrices cambio de base 21 BBM y 12 BBM .

Factorización LU Para resolver sistemas de ecuaciones de gran tamaño el método convencional no es factible. Por ello se buscan alternativas para reducir el número de operaciones. Una de ellas es factorizar la matriz. Una de las factorizaciones más conocida para matrices cuadradas es la llamada factorización LU. Cuando ésta es posible (tienen que darse una serie de condiciones: lo más importante es que sea cuadrada e invertible; en tal caso existe una reordenación de las filas de la matriz que la transforman en una matriz que sí tiene dicha factorización) sucede que la matriz de coeficientes del sistema se pone como producto de una matriz L triangular inferior con diagonal principal igual a 1 y otra matriz U triangular superior. Maxima es capaz de calcular esta factorización con el comando lu_factor(M,generalring), donde M es la matriz que queremos factorizar. Ejemplos.- 1) Consideramos la matriz M definida en Maxima por: M:matrix([1,-2,1],[2,-13,-13],[5,-16,-2]) Escribimos:

Page 16: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

16

lu_factor(M,generalring) y obtenemos: [matrix([1,-2,1],[2,-9,-15],[5,2/3,3]),[1,2,3],generalring] que nos proporciona la matriz L tomando la parte triangular inferior del resultado sustituyendo por 1 los términos de la diagonal principal, y la matriz U, como la matriz triangular superior del resultado. Es decir: L:matrix([1,0,0],[2,1,0],[5,2/3,1]) y U:matrix([1,-2,1],[0,-9,-15],[0,0,3]) [1,2,3] se refiere al orden en el que deben ser consideradas las filas de la matriz resultado, en donde están empaquetadas las dos matrices L y U en la forma que acabamos de ver. 2) Consideramos la matriz M definida en Maxima por: M:matrix([3,-1,0,1,0,1],[-6,4,1,-2,0,-1],[3,-1,1,1,1,0],[6,2,2,3,1,4],[-3,3,1,-1,1,-1],[9,-5,1,3,2,3]); Escribimos: lu_factor(M,generalring) y obtenemos: [matrix([3,-1,0,1,0,1],[-2,2,1,0,0,1],[1,0,1,0,1,-1],[2,2,0,1,1,0],[-1,1,0,0,1,-1],[3,-1,2,0,0,3]),[1,2,3,4,5,6],generalring] que nos proporciona la matriz L tomando la parte triangular inferior del resultado sustituyendo por 1 los términos de la diagonal principal, y la matriz U, como la matriz triangular superior del resultado. Es decir: L:matrix([1,0,0,0,0,0],[-2,1,0,0,0,0],[1,0,1,0,0,0],[2,2,0,1,0,0],[-1,1,0,0,1,0],[3,-1,2,0,0,1]) U:matrix([3,-1,0,1,0,1],[0,2,1,0,0,1],[0,0,1,0,1,-1],[0,0,0,1,1,0],[0,0,0,0,1,-1],[0,0,0,0,0,3]) [1,2,3,4,5,6] se refiere al orden en el que deben ser consideradas las filas de la matriz resultado, en donde están empaquetadas las dos matrices L y U en la forma que acabamos de ver.

5. Resolución de ecuaciones no lineales

Page 17: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

17

Para resolver una ecuación o un sistema de ecuaciones, Maxima dispone de varios comandos: a) solve(ecuación,variable) o solve([ necececec ,.....,, 321 ],[ nvar,.....var,var,var 321 ])

Con estas sentencias el programa intenta resolver, si existe solución, la ecuación o el sistema de ecuaciones, para las variables dadas. El algoritmo que emplea el programa responde bien si el grado de las ecuaciones es menor o igual que 4. b) algsys([ necececec ,.....,, 321 ],[ nvar,.....var,var,var 321 ])

Como solve, pero cuando no encuentra soluciones exactas intenta encontrar soluciones aproximadas. Notar que en este comando, aunque sólo haya una ecuación , o sólo una incógnita, deben ir entre corchetes. c) Si solamente nos interesan las soluciones numéricas reales, antes de utilizar algsys, debemos activar la opción realonly, escribiendo: realonly:true. Para desactivarla escribiremos: realonly:false .

d) El comando find_root halla una raíz (mediante aproximación numérica) de una

ecuación f(x) = 0, de una variable, dándole como ayuda inicial una localización a partir del Teorema de Bolzano, mediante dos valores de x próximos, en los que la función f(x) experimente un cambio de signo.

find_root(f(x),x,a,b) resuelve f(x) = 0 en el intervalo (a,b) . ( Si f(a).f(b) < 0 )

Con los otros comandos Maxima intenta hallar las soluciones del sistema de ecuaciones más o menos despejando y sustituyendo, utilizando funciones inversas, y eso no es siempre posible. Por ello no será capaz de resolver muchos sistemas de ecuaciones. Ahora bien, a veces nos puede interesar hallar una solución concreta de una ecuación (bien porque las otras no nos sean de interés, o bien porque sepamos que es única). Puede aplicarse el método de Newton para hallarla. No vamos a ver aquí detalles de este método, pero sí diremos que funciona en numerosas situaciones y que proporciona una solución de una ecuación si damos un valor inicial próximo a la solución. La utilización del método de Newton con Maxima es como sigue:

1) Escribimos load(newton1) 2) Si deseamos hallar una raíz de f(x) próxima al valor a, y realizar el proceso hasta

que abs(f(x)) < e, escribiremos: newton(f(x), x, a, e) .

NOTA 5.1 .- Aunque debemos ayudarnos con gráficos para elegir un intervalo en find_root o un punto inicial con el comando newton, estos gráficos deberán estar cerrados para la correcta ejecución de los mismos.

Ejemplo 5.2

Page 18: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

18

1. Vamos a hallar las raíces del polinomio 234 23 yyy Para ello escribimos la sentencia solve(yˆ4-3*yˆ3+2*yˆ2 = 0,y) 2. Vamos a intersectar las circunferencias x²+y²=1 y x²+(y-1)²=1 Para ello escribimos la sentencia solve([xˆ2+yˆ2=1,xˆ2+(y-1)ˆ2=1], [x, y]) 3. Sabiendo que la función xe - 3x cambia de signo en el intervalo (0, 1) escribiendo find_root(%eˆx -3*x, x, 0,1) puede aproximarse el valor numérico de una raíz de la ecuación f(x) = 0 en el intervalo (0, 1) . Ejercicio 5.3 1. Resolver las siguientes ecuaciones, para la variable x a) 06555 234 xxxx b) ax²+bx+c=0 c) ax+b=c 2. Resolver el siguiente sistema en las variables x e y

x ²+y ²=1 x+y=a

obteniendo los valores del parámetro para los que tiene solución. . 3. Hallar una raíz de la ecuación cos x = 3 senx próxima a 0. Considerar para ello la función f(x) = cos x – 3 sen x, en el intervalo (0, π/4) .

Parte 3: Aplicaciones lineales y diagonalización de matrices. Producto escalar. Programación lineal.

1. Aplicaciones lineales Ejemplo 1.1 Consideremos la aplicación f: 4R → 3R , definida por f(x, y, z, t) = (x-z, 0, y-2z + t). Responder a las siguientes cuestiones: 1. Hallar bases del núcleo y de la imagen de f. 2. Clasificar f. 3. Hallar la matriz asociada a f respecto de las bases canónicas de 4R y 3R . 4. Hallar la matriz asociada a f respecto de las bases C4 (=base canónica de R4) y B = {(1, 1, 0), (1, 1, 1), (1, 0, 0)}.

Page 19: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

19

Ejecutando remfunction(f); remvalue(x,y,z,t); f(x, y, z, t): = [x-z,0,y-2*z+t] tenemos definida la función. Definamos las matrices n:matrix(f(1,0,0,0),f(0,1,0,0),f(0,0,1,0),f(0,0,0,1)) , y m:transpose(n) . En este caso la matriz m es

1210

0000

0101

y es la matriz que se pide en el apartado 3. Para el núcleo la línea nullspace(m) nos da una base de él. Para la imagen, la sentencia triangularize(transpose(m)) nos da un SG de la imagen ya escalonado, y quitando los vectores nulos tendremos una base de la imagen. La matriz asociada a f respecto de las bases canónicas es precisamente la propia m. Para la otra matriz asociada construimos en primer lugar la matriz cambio de base de B a C3 la cual es p: transpose(q) siendo q: matrix([1,1,0],[1,1,1],[1,0,0]). Seguidamente obtenemos nuestra matriz sin más que hacer el producto invert(p).m Ejercicio 1.2 Consideremos la aplicación f: 3R → 2R , definida por f(x, y, z)=(x-y-z, x-y-z). Responder a las siguientes cuestiones: 1. Hallar bases del núcleo y de la imagen de f. 2. Clasificar f. 3. Hallar la matriz asociada a f respecto de las bases canónicas de R3 y R2. 4. Hallar la matriz asociada a f respecto de las bases B1 = {(1, 1, 0), (1, 1, 1), (1, 0, 0)} y B2 = {(2, -1), (3, 1)}. 5. Si consideramos otra aplicación lineal g: 3R → 2R , definida g(x, y, z)=(x-y+z, 2x+y-z), hallar la expresión analítica de f +2g.

2. Diagonalización de matrices

Supongamos que m es una matriz cuadrada de orden n. Para hallar el polinomio característico de m escribiremos charpoly(m,x). Para hallar los valores propios de m deberemos ejecutar la sentencia eigenvalues(m) ( o su abreviatura eivals(m) que dará dos listas, la primera formada por los valores propios, y la segunda formada por las multiplicidades respectivas.

eigenvectors(m) (o eivects(m)), calcula los vectores propios de la matriz m. El resultado que nos dará es una lista con dos términos. El primero consta de dos listas, la primera con los valores propios de m y la segunda con sus respectivas multiplicidades. El segundo término es una lista de listas de vectores propios, una lista por cada valor propio, pudiendo

Page 20: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

20

haber uno o más vectores propios en cada lista. Para saber si una matriz m es diagonalizable tenemos que ver que todos los valores propios son reales y que existe una base del espacio formada por vectores propios. Esto último puede hacerse directamente viendo si el número total de vectores propios que el programa nos da después de ejecutar la sentencia eigenvectors(m) es igual al tamaño de la matriz.

Ejemplo 2.1 Ejecutando las siguientes sentencias: m:matrix([3, 0, 0], [0, 2, 0], [0, 0, 2]) eigenvalues(m) eigenvectors(m) vemos que la matriz es diagonalizable, pues todos los valores propios son reales y los vectores que salen son tantos como el orden de la matriz m . Ejemplo 2.2 Ejecutando las siguientes sentencias: n : matriz([1, -1, 3], [0, -2, 3], [0, 0, 2]) eigenvalues(n) eigenvectors(n) vemos que la matriz es diagonalizable, pues todos los valores propios son reales y los vectores propios son en total 3. Con los resultados obtenidos podemos elaborar una matriz de paso y una matriz diagonal semejante. Ejemplo 2.3 Ejecutando las siguientes sentencias: a:matrix([1,0,0,0,0,0],[1,1,0,0,0,0],[0,1,1,0,0,0],[0,0,0,2,0,0],[0,0,0,1,2,0],[0,0,0,0,0,-1]) eigenvalues(a) eigenvectors(a) vemos que la matriz es no diagonalizable, pues aunque todos los valores propios son reales, el número total de vectores propios que resultan, es menor que seis. Ejercicio 2.4 Para las siguientes matrices, hallar los valores propios, una base de cada subespacio propio, comprobar si son diagonalizables, y, en caso afirmativo, hallar las matrices cambio de base correspondientes P y 1P y las matrices diagonales correspondientes D (observar cuáles son los elementos de la diagonal de D):

M1=

110

131

021

M2=

102

030

405

M3=

101

011

111

3. Producto escalar

Page 21: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

21

Con Maxima hemos visto que el producto escalar de dos vectores u y v se realiza escribiendo u.v . También se consigue con las sentencias innerproduct(u,v) o inprod(u,v) . Ejemplo 3.1 Consideramos los vectores u(-1,2,6), y v(3,4,-2) . Los definimos con Maxima escribiendo: u: [-1,2,6] v:[3,4,-2] a) Para el producto escalar de u por v escribiremos u.v b) Para la norma de u, sqrt(u.u) c) Para el ángulo formado por u y v: acos((u.v)/(sqrt(u.u)*sqrt(v.v))) Ejercicio 3.2 Dados los vectores u = (1,-1, 0, 2) y v = (3, 4, 1, 2) . a) Realizar el producto escalar de u por v . b) Deducir si u y v son ortogonales. c) Hallar las normas de u y v. d) Deducir si alguno de los vectores es unitario. e) Hallar el ángulo que forman u y v.

Método de Gram Schmidt Para cargar esta función es necesario primero escribir load(eigen) para cargar en memoria ese paquete. El resultado que arroja es el que se obtiene con el proceso de ortogonalización de Gram Schmidt. Veamos un ejemplo: Ejemplo 3.3 Vamos a aplicar Gramschmidt a la base que escribimos como filas de una matriz x. Escribiremos: load(eigen) x:matrix([1,2,1],[-1,1,3],[2,-4,0]) gramschmidt(x) En el resultado es posible que aparezcan números enteros factorizados. Se puede trabajar con otro producto escalar distinto del producto escalar canónico de Rn si se ha definido previamente. (Para más detalles ver ayuda de Maxima). Los vectores que se obtienen son ortogonales pero no son unitarios en general.

Ejemplo 3.4.- Consideramos la matriz A =

511

151

115

. Al hallar los valores propios ,

eigenvalues nos da 7 de multiplicidad 1 y 4 de multiplicidad 2. La matriz A por ser simétrica es diagonalizable y admite una matriz de paso T ortogonal (T -1.= T t ) . eigenvectors nos da V7 =< (1,1,1) > y V4 = < (1,0,-1), (0,1,-1) > . V7 y V4 son subespacios ortogonales. Para conseguir una base ortogonal bastará aplicar Gram Schmidt a la base de V4 . Escribiremos :

Page 22: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

22

load(eigen) a:matrix([1,0,-1], [0,1,-1]) g:gramschmidt(a) u:[1,1,1] v:g[1] w:g[2] Ahora normalizamos los tres vectores para conseguir una base ortonormal (el que una matriz sea ortogonal equivale a que sus filas formen una base ortonormal, lo que a su vez equivale a que las columnas formen una base orotonormal): u1:(1/sqrt(u.u))*u v1:(1/sqrt(v.v))*v w1:(1/sqrt(w.w))*w m:matrix(u1,v1,w1) T:transpose(m) D:matrix([7,0,0],[0,4,0],[0,0,4]) Siendo D matriz diagonal semejante a la matriz A, y T una matriz de paso ortogonal. Ejercicio 3.5 Hallar una matriz diagonal semejante y una matriz de paso T ortogonal para

la matriz A =

131

3 20

1 02

.

4. Programación Lineal Comenzamos cargando el paquete simplex, introduciendo load (simplex) . Para los problemas de máximo de la función objetivo se emplea el comando: maximize_lp(obj., [cond.], [pos]) donde obj. representa a la función objetivo, cond. al conjunto de las restricciones del problema, en las que las desigualdades se deben escribir <= o >= , y [pos] es un argumento opcional, formado por la lista de las variables nonegativas del problema. Si el problema no tiene soluciones factibles nos dará como respuesta : “Problem not feasible ”. Si el problema carece de solución óptima por no estar acotado nos responderá : “Problem not bounded” . Análogamente para los problemas de mínimo. Ejemplo 4.1 Hallar el mínimo de la función yx 43 , con las restricciones:

0 ,1243 ,5 ,0 yyxyxx load(simplex) minimize_lp(3*x+4*y,[ x+y>=5,3*x+4*y>=12],[x,y]);

Page 23: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

23

Ejercicio 4.2 Hallar el máximo de la función yx 43 , con las restricciones: 0 ,1243 ,5 ,0 yyxyxx

Ejercicio 4.3 Hallar el máximo de la función 321 xxx , con las restricciones:

952 ,832 ,72 ,52 ,0,0 x,0 321321321321321 xxxxxxxxxxxxxx

Parte 4: Funciones de una variable (límites, representación gráfica, derivadas, polinomios de Taylor e integrales)

1. Límites La sentencia limit(f(x),x,a) proporciona el límite de la función f(x) cuando x tiende hacia a. limit(f(x),x,a,plus) dará el límite lateral por la derecha , y limit(f(x),x,a , minus) el límite lateral por la izquierda. Los límites en + ∞ y en -∞ se obtienen sustituyendo en la primera expresión a por +inf , y por -inf respectivamente . Ejemplo 1.1 Teclear la siguiente sentencia limit((x-1)/(xˆ2-1),x,1) Ejercicio 1.2 Calcular los siguientes límites:

1. 12

12

2

lim

xx

x

x

2. x

xsen

x

5lim

0

3. ,cos1

cos1lim

0 pxsenpx

xsenx

x

donde p es un número real cualquiera.

4. )3).((coslog

12

1)3cos1(

22

4

42

0lim xxx

xx

x

5. senxx

senxx

x

lim

Page 24: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

24

6. xsen

Cosxx

2

1

lim0

7. 2323lim xxxxx

2. Representación de funciones Maxima es capaz de hacer gráficas de funciones de una variable. El comando a utilizar es wxplot2d La forma de usarlo es la siguiente: wxplot2d(funcion,[variable,extremoizquierdo,extremoderecho]) para representar una sola función en un intervalo. Para representar varias funciones en el mismo intervalo y en la misma gráfica: wxplot2d([func1,func2,…],[variable,extr.izdo.,extr.dcho.]) Ejemplo 2.1 Ejecutar las siguientes sentencias (observar lo que ocurre con el ejemplo 9.) 1. wxplot2d(cos(x),[x,-%pi,%pi]) 2. wxplot2d(xˆ3-2*x,[x,-1,1]) 3. wxplot2d(%e^(x),[x,0,4]) 4. wxplot2d(sqrt(1-x^2),[x,-1,1]) 5. wxplot2d(sin(x)*cos(x^2),[x,0,4]) 6. wxplot2d([sin(x),cos(x)],[x,-4,4]) 7. wxplot2d([sin(x),cos(x)],[x,0,2*%pi]) 8. wxplot2d(sin(x)^2*cos(3*x),[x,-%pi,%pi]) 9. wxplot2d(1/x,[x,-1,1]) Ejercicio 2.2 Representar las siguientes funciones: 1. La función e^(-x^2) en el intervalo (-3,3) 2. Los logaritmos en base 2,3,e y 4 en el intervalo (0.3,40) 3. Las funciones sinx, sin(x+2), sin(x-2), sinx+2, y sinx-2 en el intervalo (-10,10) Si lo que queremos es representar una superficie de ecuación z = f(x,y) en el espacio deberemos poner wxplot3D(f,[x,extremoizquierdo1,extremoderecho1],[y,extremoizquierdo2,extremoderecho2]) Ejemplo 2.3 Ejecutar las siguientes sentencias 1. wxplot3d(cos(x*y),[x,-%pi,%pi],[y,-%pi,%pi]) 2. wxplot3d(x^2-y^2,[x,-1,1],[y,-1,1]) 3. wxplot3d(sin(x)*cos(y),[x,-%pi,%pi],[y,-%pi,%pi])

Page 25: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

25

4. wxplot3d(sin(x-y)+cos(x+y),[x,-2*%pi,2*%pi],[y,-2*%pi,2*%pi]) También podemos representar curvas en el plano dadas en forma paramétrica. La escritura es: wxplot2d([parametric, x(t), y(t),[t,a,b],[nticks,100]]) donde a, b son los extremos del intervalo que recorre el parámetro t, x(t) , y(t) son las coordenadas de los puntos de la gráfica en función de t, el número que acompaña a nticks , es el número de puntos que unidos delimitan la “curva” , que es realmente una poligonal. Y superficies en el espacio dadas paramétricamente. La forma de escritura es: wxplot3d([x(s,t), y(s,t), z(s,t)], [s,a,b],[t,c,d], opciones]) donde a, b son los extremos del intervalo que recorre s; c, d los del intervalo que recorre t, y x(s,t), y(s,t), z(s,t) son las coordenadas de los puntos de la gráfica en función de s y t. Ejemplo 2.4 Ejecutar las siguientes sentencias:

1. wxplot2d([parametric,sin(t)+sin(t)*atan(t),cos(t)+sin(t)*atan(t),[t,-20*%pi, 20*%pi] ,[nticks,1000]])

2. wxplot2d([parametric,exp(-t/20)*sin(t),exp(-t/20)*cos(t),[t,0,20*%pi],[nticks,1000]]) 3. wxplot3d([[cos(v),sin(v)*cos(u),sin(v)*sin(u)], [u,0,2*%pi],[v,0,%pi]])

wxplot3d([[t, sin(s), cos(s)], [t, 0, 3], [s, 0, 2*%pi]]) Nota: Tanto el comando wxplot2d como el comando wxplot3d (y otros que se utilizan para gráficos) muestran el gráfico en el mismo la misma ventana de trabajo. Si les quitamos el prefijo “wx” los comandos pasarían ahora a mostrar el gráfico en una ventana separada. Por ésta y otras razones de operatividad creemos más útil, normalmente, hacerlo del modo explicado. Quizá de las pocas excepciones sería al utilizar el comando wxplot3d. En este caso si no se pone el prefijo delante, es decir, al utilizar el comando plot3d, podemos realizar algo que no es posible con el otro comando: girar el gráfico que se obtiene en la ventana separada. Esto puede hacerse al pinchar con el ratón y mover el gráfico. Ejemplo 2.5 (Hallar raíces de funciones) a) Representamos la función f(x): = exp(x)+sin(2*x)+cos(3*x)-tan(x) : wxplot2d(f(x), [x,1,1.5]) b) Vemos que cambia de signo entre 1 y 1.5 y que tiene una raíz cercana a 1. c) Ejecutamos find_root(f(x),x,1,1.5) d) Ejecutamos load(newton1) e) Ejecutamos newton(f(x),x,1,1/100)

Page 26: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

26

3. Derivadas Para derivar funciones de una variable podemos usar el comando diff . Su formulación es la siguiente: diff(función,variable) Para hallar la derivada de orden n de una función f es suficiente con ejecutar la sentencia diff(función,variable,n) Para el cálculo de derivadas parciales de una función se escribe: diff(función,variable1,n1,variable2, n2, … ) donde n1 es el orden de derivación respecto de la variable1 , n2 el orden respecto de la variable2, … etc. Ejemplo 3.1 Ejecutar las siguientes sentencias 1. diff(xˆ3-2*x,x) 2. diff(xˆ3-2*y,y) 3. diff(asin((x-1)/4),x) 4. diff(atan((3*x +1)/2),x) 5. diff(exp(cos(t)ˆ2-tˆ4),t) 6. f(x):= xˆx 7. diff(f(u),u) 8. g(y):= f(3*y) 9. diff(g(u),u) 10. diff(acos(x),x,5) 11. diff(exp(xˆ2),x,3) Ejercicio 3.2 Calcular las derivadas de órdenes 3, 6 y 10 de las funciones que se indican a continuación: 1. )()( 2xsenxf 2. )log(cos)( xxf

3. 21).()( xexsenxf

4. 2

2

1

1)(

xx

xxxf

5. 23

)log)cos1(()( xxxxf

Ejemplo 3.3 Ejecutar las siguientes sentencias y observar cómo se debe definir una función derivada: 1. f(x):=5*x^8 2. define(derivada1(x),diff(5*x^8,x))

Page 27: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

27

3. derivada2(x);=diff(5*x^8,x) 4. derivada1(x) 5. derivada2(x) 6. derivada1(0) 7. derivada2(0)

4. Polinomios de Taylor Si lo que queremos es hallar el polinomio de Taylor de f en el punto a de grado n debemos ejecutar la sentencia taylor(f(x),x,a, n) Ejemplo 4.1 Teclear las siguientes sentencias:

1) taylor(cos(x),x,0,5) 2) taylor(exp(x),x,0,6) 3) taylor(sin(3*x),x,0,4) 4) taylor(log(x),x,1,7) 5) taylor(cos(x)/x,x,%pi,5)

Maxima no guarda de la misma forma un polinomio de Taylor y un polinomio normal. Se puede utilizar la sentencia define para la conversión del polinomio de Taylor en una función polinómica en la que poder evaluar los valores correspondientes a valores de x. Ejemplo 4.2 Teclear las siguientes sentencias:

1) define(f1(x), taylor(cos(x),x,0,5) ) 2) define(f2(x), taylor(exp(x),x,0,6) ) 3) define(f3(x), taylor(sin(3*x),x,0,4) ) 4) define(f4(x), taylor(log(x),x,1,7) ) 5) define(f5(x), taylor(cos(x)/x,x,%pi,5) )

y hallar los valores f1(2), f2(-2), f3(5), f4(3/2), f5(-3) . Ejemplo 4.3.- Teclear las siguientes sentencias:

a) define(t4(x),taylor(cos(x),x,0,4)) b) define(t6(x),taylor(cos(x),x,0,6)) c) define(t8(x),taylor(cos(x),x,0,8)) d) define(t10(x),taylor(cos(x),x,0,10)) e) plot2d([cos(x),t4(x),t6(x),t8(x),t10(x)],[x,-6,6],[y,-2,2])

Ejercicio 4.4 Calcular los polinomios de Taylor de las siguientes funciones en los puntos que se indican, y definir las correspondientes funciones polinómicas: 1. xxexf x arctan·cos)( 1 en el punto 1 de grado 6

Page 28: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

28

2. 2

32

1

)(arccos)(

x

xxg

en el punto 0 de grado 12

8. )116)·log(3

(cos)( 2 xx

xh

en el punto 2 de grado 5

5. Integrales Para calcular integrales de funciones de una variable podemos usar el comando integrate. Su formulación es la siguiente: integrate(funcion,variable) calcula una primitiva de la función indicada integrate(funcion,variable,extremoizquierdo,extremoderecho) calcula la integral definida de la función indicada en el intervalo indicado Ejemplo 5.1 Ejecutar las siguientes sentencias 1. integrate(xˆ3-2*x, x) 2. integrate(cos(x)^8, x) 3. integrate(atan(x), x) 4. integrate(sqrt(3*t-t^2), t) 5. integrate(x/(x^2+1)*(x-2)^3, x) 6. integrate(xˆ3-2*x)/((xˆ2-1)*(x - 2)ˆ2*(xˆ2+2*x+2)),x) 7. integrate(cos(x)ˆ3,x,-%pi,%pi) 8. integrate(s*log(s),s,0.1,1) 9. integrate(sin(2*x-3*y),x) 10. integrate(x/(y+x),y) 11. integrate(x^3*y^4,y,-2,1) 12. integrate(integrate(x-3*y,x,0,1),y,-1,3) Ejercicio 5.2 Calcular las siguientes integrales:

1. dxx)5sin(

Page 29: DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA

29

2. xdxlog

3. dx

x

x

12

3

4. dte t5

5. dxyx )( 2

6. 1

0

5 )3( dxxx

7.

dxx

)3

(cos(

8. 3

2

5 )( dte t

9. 1

0

2 )( dxxyx

10. 0

)(y

yx dxe

11.

R

dxdyyx )1( donde el recinto es R={(x,y):x<y<3x,2<x<5}