Cuaderno 1 de prácticas - Departamento de Matemática Aplicada y

Anuncio
DEPARTAMENTO DE MATEMÁTICA APLICADA Y ESTADÍSTICA
GRADO EN INGENIERÍA MECÁNICA (GRUPOS 2 y 3)
MATEMÁTICAS I
CUADERNO DE PRÁCTICAS DE ORDENADOR
CURSO 2014/15
Profesores:
Pedro Luis Gómez Sánchez
José Juan Aparicio Pedreño
PRÁCTICA 1: Manejo del programa wxMaxima
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 ”←”.
2
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
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)
3
Ejercicio 1.2 Realizar las siguientes operaciones (expresadas medianta nuestra notación
habitual) con wxMaxima:
3
a) (1  2)
3 8
b)
8
42 3
c)
(1  7  5  2 5 ) 2
d)
3 4  67 4
(
)
7
3 42
3  4  23  3
2
Observación 1.3 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.
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 Mathematica 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, y si escribimos %o7, estaremos haciendo referencia a la salida con
etiqueta 7.
Ejemplo 1.4 Ejecutar las siguientes sentencias:
1)
6)
4-7
%o3
2)
7)
5*3
3)
%i4 +%o6
9/3
4)
%
5)
%i4
Ejemplo 1.5 Ejecutar las siguientes sentencias:
1)
6)
2*4+3 2)
5*b – 2*%
%*5
7)
3) 6/3–2
30-%i4
4)
6/(%-2)
5)
11*a
Ejercicio 1.6
1) Realizar la operación (3.4  5) 5 · a
2) Multiplicar la expresión anterior por 4.
30 15
9
3) Realizar la operación (  ) 4  a  ( ) 2  16a
4 10
12
4) Sumar ahora las dos últimas expresiones.
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.7 (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
4
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ú
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 tres 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 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
e)
bfloat(2ˆ150)
b) float((2/3-3/5)*5/2)
precisión de 40 dígitos.
f)
c)
(2/3-3/5)*5/2,numer
float(2ˆ150)
h) (2/3-3/5)*5/2
g)
i)
bfloat(2ˆ150) con
float(%)
Observación 2.2 Si en un resultado pone, por ejemplo,
multiplicado por 10 elevado a 45.
d) 2ˆ150
j) bfloat(%i5)
1.34b45 significa 1,34
5
Ejercicio 2.3
Obtener los siguientes números:
a)
2 con 47 cifras significativas
c)
3
b)
3
8
con 60 cifras significativas
35 con 80 cifras significativas
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
6
á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)
d)
f)
%eˆ(1/2)
float(3*%pi^2 )
b)
float(%eˆ(1/2))
e)
bfloat(3*%pi^2) con 80 dígitos.
(%i-3)*(%i^3)-8*%i
g)
c)
bfloat(%eˆ(1/2)) con 35 dígitos.
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) = e x
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)
e)
h)
k)
sin(%pi/2)
b)
sin(90*(%pi/180)) c) sin(%pi/4)
float(sin(45*(%pi/180))
f)
cos(5*%pi/6)
g)
float(cos(150*(%pi/180))) i) cos(135*(%pi/180))
j)
cos(135)
l) float(cos(135))
d)
sin(45*(%pi/180))
cos(150*(%pi/180))
float(cos(135*(%pi/180)))
Observación 4.4 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.
7
Ejercicio 4.5 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.
2) log 2 256
3)
5) sen 30
4) e 3 x
1) cos π/3
48
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)
b)
c)
d)
e)
5*x +4*x+4*x-7*x-8*x+x3-5*x3+x2-6*x2
2*x-3*y+5*xy-6*yx+8*x*y-6*y*x+3*x*y-45*y*x
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
6*%
f)
xyˆ2*xy
Ejercicio 5.2 Transcribir al lenguaje de Maxima las siguientes expresiones:
1)
3)
x 3  45 x 2  3x  5
6 x 2 y 2 z 3  4 xy  5 xz  44 y 2 z 
2)
x 2 y 3  4 xy 2  x 3 y  6 x  xy
x 2 y  3z
x2 y 2 1
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.
8
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 (de
nuevo los dos puntos). 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
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
defecto, debemos eliminar el valor que hayan tenido antes con el comando remvalue, o
desde el menú Maxima con borrar 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) .
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.
9
Ejemplo 5.5 Ejecutar las siguientes sentencias:
a)
d)
h)
j)
g1(x): =xˆ3-x+1
b) g1(1)
c) g1(4)
g1(xx)
e) g24(y): =3*y+6/y
f) g2(7) g) g2(z)
g3(fernandoalonso):=4*fernandoalonso
g3(t)
g3(vettel) k) g3(hamilton) l) g3(rosberg)
Ejemplo 5.6 Ejecutar las siguientes sentencias:
a)
d)
h)
l)
o)
f3(variable): =variableˆ3
b) f3(parametro)
c) c1: 3
f3(c1)
e) f4(cc): =3*cc
f) f4(parametro2) g) remfunction(f4)
f5(x5):=3*x5-cos(x5)
i) f5(t)
j) f5(0)
k) f5(%pi)
f6(x,y): =5*x^2-2*y^3
m)
f6(x,y)
n) f6(0,-1)
ñ) f6(1,2)
define(g(x),x^3)
p) g(5)
q) fundef(g)
Ejercicio 5.7 Definir con Maxima las siguientes funciones:
f5(x)=
cos x
f6(x,y)= e  ( x
x 3
y obtener los siguientes valores:
a) f5(π)
b) f5( 3 ) c)
2
 y2 )
cos x·seny
f6(0, π)
d)
f7(x,y,z)=xyzcos(x+y+z)
f6(π/4, -π/4)
e)
f7(-1, 1, 0)
Ejercicio 5.8 Crear las funciones g1(x)=  4 x 3  x 2  7 x , g2(x)= x 4  6 x 2  3x  4 y
g1( x)
y evaluarlas en un parámetro (sin valor asignado) llamado a. Después
g3(x)=
g 2( x)
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.
PRÁCTICA 2: Vectores, matrices y sistemas de
ecuaciones lineales
10
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]. Los vectores también pueden utilizarse en Maxima para
evaluar una función en varios puntos. Así si f es una función de una variable, y escribimos
f([0,%pi,a]) estaremos aplicando f a los puntos 0, pi y a, respectivamente, y el resultado
será un vector cuyas coordenadas son f(0), f(%pi) y f(a).
Ejemplo 1.1 Teclear y ejecutar las siguientes sentencias:
a) funcion(x ):= cos(x)
b) funcion ([0,%pi,a])
c) sin([0,%pi,a])
Supongamos que queremos definir la función f: R³→ R dada por f(x,y,z)=xyz² . Para
escribir esto en Maxima debemos poner f(x,y,z):=x*y*zˆ2 . La función habrá que evaluarla
en tres números (por ejemplo f(1,2,0) .
Se le pueden dar nombres a los vectores. Así, escribiendo u: [2,-1,0,3] estaremos
definiendo el vector u que vale (2,-1,0,3). Si ponemos u[1] estaremos refiriéndonos a la
primera coordenada del vector u, es decir, a 2; y así ocurre con el resto de coordenadas u[2],
u[3] y u[4]. Éstas pueden ser modificadas, pues basta poner u[2]: 5 para que la segunda
coordenada deje de ser -1 y valga ahora 5.
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
1 2 


escribimos así   3 0 
 4 6 


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.
Ejercicio 1.2
1
1. Definir la matriz m = 
0
1
3
2

5 
11
Cambiar el primer vector-fila por el vector (0,3,4), y asignarle al coeficiente a22 el valor -4.
2. 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).
3. Definir la matriz diagonal de orden 4 cuyos elementos de la diagonal principal son -1, 2 ,
5, 3 .
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)
1 2 3 


Ejercicio 2.2 Dada la matriz m1=  0 3  1
1 5 3 


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.
 1 2 
 hallar m 3
Ejercicio 2.3 Dada la matriz m = 
 3 6
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 = m3 .
d) Hallar m^-1 y comprobar que no coincide con la inversa de m, calculada como invert(m) .
12
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) .
Ejercicio 3.1 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 :
 1 2 1 0 


2 
2  2 3
1 8  6  2


1

1
2

0

2 2  2

3 2 0 
5 0  2

1  4 3 
Ejercicio 3.2 Hallar una base 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
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.
13
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:
2 x  3 y  3
1. 

2 x  2 y  2 
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.
 x  2 y  3z  1 


2.  x  y  z  0 
2 x  y  4 z  2 


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.
x  y  2z  t  3 
3. 

 2 x  y  z  t  2 
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.
Ejercicio 4.2 Discutir y resolver los siguientes sistemas lineales:
a)
x  y  z  2 


3 x  2 y  2 z  1
 x  3 y  z  2 


x  2 y  z  t  u  0 
3 x  y  t  u  6



b) 

6 x  y  t  u  1

 x  2 y  2 z  2t  5
c)
 x  2 y  z  3t  45 
 x  y  z  4t  48





2 x  y  4 z  10t  101
 x  3 y  7 z  5t  4 
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
14
ú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 R 3 .
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 R 3 hallar las matrices cambio de base M B1 B 2 y M B 2 B1 .
Nota:
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 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.
5. Resolución de ecuaciones no lineales
Para resolver una ecuación o un sistema de ecuaciones, Maxima dispone de varios
comandos:
a) solve(ecuación,variable) o solve([ ec1 , ec 2 , ec3 ,.....ecn ],[ var1 , var2 , var3 ,..... varn ])
Con estas sentencias el programa resuelve, 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([ ec1 , ec 2 , ec3 ,.....ecn ],[ var1 , var2 , var3 ,..... varn ])
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
15
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
1. Vamos a hallar las raíces del polinomio
sentencia solve(yˆ4-3*yˆ3+2*yˆ2 = 0,y)
y 4  3y3  2 y 2
Para ello escribimos la
2. Vamos a intersectar las circunferencias x²+y²=1 y x²+(y-1)²=1
la sentencia solve([xˆ2+yˆ2=1,xˆ2+(y-1)ˆ2=1], [x, y])
Para ello escribimos
3. Sabiendo que la función e x - 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)
x 4  5x 3  5x 2  5x  6  0
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
16
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) .
PRACTICA 3: Aplicaciones lineales y diagonalización de
matrices. Producto escalar.
1. Aplicaciones lineales
Ejemplo 1.1 Consideremos la aplicación f: R 4 → R 3 , 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 R 4 y R 3 .
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)}.
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))
m:transpose(n) . En este caso la matriz m es
,
y
 1 0 1 0


0 0 0 0
0 1  2 1


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 las otras matrices asociadas 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
17
Ejercicio 1.2 Consideremos la aplicación f: R 3 → R 2 , 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: R 3 → R 2 , 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
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.
18
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 P 1 y las matrices diagonales
correspondientes D (observar cuáles son los elementos de la diagonal de D):
 1 2 0


M1=   1 3 1 
 0 1 1


 5 0  4


M2=  0 3 0 
2 0 1


 1  1  1


M3= 1  1 0 
 1 0  1


3. Producto escalar
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.
4. Método de Gram Schmidt
19
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 4.1 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.
5 1 1


Ejemplo 4.2.- Consideramos la matriz A =  1 5 1  . Al hallar los valores propios ,
1 1 5


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 :
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.
20
Ejercicio 4.3 Hallar una matriz diagonal semejante y una matriz de paso T ortogonal para
2 0 1 


la matriz A =  0 2 3  .
 1 3 1


5. Programación Lineal
Comenzamos cargando el paquete simplex, introduciendo load (simplex)
problemas de máximo de la función objetivo se emplea el comando:
. Para los
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.
3 x  4 y , con las restricciones:
Ejemplo 5.1 Hallar el mínimo de la función
x  0, x  y  5, 3 x  4 y  12, y  0
load(simplex)
minimize_lp(3*x+4*y,[ x+y>=5,3*x+4*y>=12],[x,y]);
Ejercicio 5.2 Hallar el máximo de la función
x  0, x  y  5, 3 x  4 y  12, y  0
Ejercicio 5.3 Hallar el máximo de la función
3 x  4 y , con las restricciones:
x1  x 2  x3 , con las restricciones:
x1  0, x 2  0, x3  0, x1  x 2  2 x3  5, 2 x1  x 2  x3  7, 2 x1  x 2  3 x3  8, x1  2 x 2  5 x3  9
PRÁCTICA 4: Funciones de una variable (límites,
representación gráfica, derivadas, polinomios de Taylor e
integrales)
1. Límites
21
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.
x2 1
lim
2
x   2 x  x  1
2.
lim
x  0
3.
sen5 x
x
1  senx  cos x
lim 1  senpx  cos px ,
donde p es un número real cualquiera.
x  0
4.
5.


x4
(1  cos 2 3x) 4 1 
 1


2


lim
2
2
log (cos x).(3x  x )
x  0
x  senx
lim x  senx
x  
1
6.
lim Cosx 
sen 2 x
x  0
7.
lim
x3  x2  x3  x2
x  
2. Representación de funciones
Maxima es capaz de hacer gráficas de funciones de una variable. El comando a utilizar es
plot2d.
La forma de usarlo es la siguiente:
plot2d(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:
plot2d([func1,func2,…],[variable,extr.izdo.,extr.dcho.])
Ejemplo 2.1 Ejecutar las siguientes sentencias (observar lo que ocurre con el ejemplo 9.)
22
1.
2.
3.
4.
5.
6.
7.
8.
9.
plot2d(cos(x),[x,-%pi,%pi])
plot2d(xˆ3-2x,[x,-1,1])
plot2d(%e^(x),[x,0,4])
plot2d(sqrt(1-x^2),,[x,-1,1])
plot2d(sin(x)*cos(x^2),[x,0,4])
plot2d([sin(x),cos(x)],[x,-4,4])
plot2d([sin(x),cos(x)],[x,0,2*%pi])
plot2d(sin(x)^2*cos(3*x),[x,-%pi,%pi])
plot2d(1/x,[x,-1,1])
Ejercicio 2.2 Representar las siguientes funciones:
1.
2.
3.
La función e^(-x^2) en el intervalo (-3,3)
Los logaritmos en base 2,3,e y 4 en el intervalo (0.3,40)
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
plot3D(f,[x,extremoizquierdo1,extremoderecho1],[y,extremoizquierdo2,extremoderecho2])
Ejemplo 2.3 Ejecutar las siguientes sentencias
1.
2.
3.
4.
plot3d(cos(x*y),[x,-%pi,%pi],[y,-%pi,%pi])
plot3d(x^2-y^2,[x,-1,1],[y,-1,1])
plot3d(sin(x)*cos(y),[x,-%pi,%pi],[y,-%pi,%pi])
plot3d(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:
plot2d([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:
plot3d([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:
23
1. plot2d([parametric,sin(t)+sin(t)*atan(t),cos(t)+sin(t)*atan(t),[t,-20*%pi,
20*%pi] ,[nticks,1000]])
2. plot2d([parametric,exp(-t/20)*sin(t),exp(-t/20)*cos(t),[t,0,20*%pi],[nticks,1000]])
3. plot3d([[cos(v),sin(v)*cos(u),sin(v)*sin(u)], [u,0,2*%pi],[v,0,%pi]])
4. plot3d([[t, sin(s), cos(s)], [t, 0, 3], [s, 0, 2*%pi]])
Ejemplo 2.5
a) Representamos la función f(x): = exp(x)+sin(2*x)+cos(3*x)-tan(x) :
plot2d(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) Cerramos la gráfica (Ver NOTA 5.1 de la práctica 2)
d) Ejecutamos load(newton1)
e) Ejecutamos find_root(f(x),x,1,1.5)
f) Ejecutamos newton(f(x),x,1,1/100)
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.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
diff(xˆ3-2x,x)
diff(xˆ3-2y,y)
diff(asin((x-1)/4),x)
diff(atan((3x +1)/2),x)
diff(exp(cos(t)ˆ2-tˆ4),t)
f(x):= xˆx
diff(f(u),u)
g(y):= f(3*y)
diff(g(u),u)
diff(acos(x),x,5)
diff(exp(xˆ2),x,3)
24
Ejercicio 3.2 Calcular las derivadas de órdenes 3, 6 y 10 de las funciones que se indican a
continuación:
1.
2.
f ( x)  sen( x 2 )
f ( x)  log(cos x)
3.
f ( x)  sen( x ).e1 x
4.
5.
2
1 x  x2
1 x  x2
3
f ( x)  ((1  cos x) log x) x  2
f ( x) 
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)
b)
c)
d)
e)
define(t4(x),taylor(cos(x),x,0,4))
define(t6(x),taylor(cos(x),x,0,6))
define(t8(x),taylor(cos(x),x,0,8))
define(t10(x),taylor(cos(x),x,0,10))
plot2d([cos(x),t4(x),t6(x),t8(x),t10(x)],[x,-6,6],[y,-2,2])
25
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.
f ( x)  e x 1 ·cosx  arctan x en el punto 1 de grado 6
arccos 2 ( x 3 )
2.
g ( x) 
8.
h( x)  cos 2 (
1 x2
x
3
en el punto 0 de grado 12
)·log(6 x  11) 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)
definida de la función indicada en el intervalo indicado
calcula
la
integral
Ejemplo 5.1 Ejecutar las siguientes sentencias
1.
integrate(xˆ3-2x, 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)
26
12. integrate(integrate(x-3*y,x,0,1),y,-1,3)
Ejercicio 5.2 Calcular las siguientes integrales:
1.  sin(5 x)dx

2. log xdx
3.
x3
 x 2  1 dx

4. e 5t dt

5. ( x 2 y )dx
1
6.
 (x
5
 3 x)dx
0

x
 (cos( 3 )dx
7.

3
8.
 (e
5t
)dt
2
1
9.
 (x
2
 xy )dx
0
0

10. (e x  y )dx
y
11.
 (1  x  y)dxdy
donde el recinto es R={(x,y):x<y<3x,2<x<5}
R
27
Descargar