Está en la página 1de 10

AMPLIACIN DE MATEMTICAS

Dpto. de Matemticas. Grado en Ingeniera Aeroespacial


ESCUELA SUPERIOR DE INGENIERA
CURSO 2014/2015

Prctica I: INTRODUCCIN AL SOFTWARE WX-MXIMA.


CAMPOS ESCALARES Y VECTORIALES
En las prcticas de ordenador de la asignatura utilizaremos el programa Maxima. Las siguientes notas nos
servirn como iniciacin al programa.

1.

Instalacin y ejecucin de Maxima

El programa de instalacin de Maxima se puede descargar en la siguiente direccin:


http://sourceforge.net/projects/maxima/files/
Slo hay que pinchar en el enlace de nombre: Download maxima-5.25.1-gcl.exe (30.5 MB); o en otro similar
correspondiente a una versin ms reciente.

2.

Funcionamiento de Maxima y operaciones bsicas

Una vez instalado, al arrancar Maxima, el programa se detendr a la espera de que escribamos una instruccin.
Para ello, escribimos la orden correspondiente y a continuacin pulsamos la tecla Intro. Maxima procesar
la orden y nos devolver una respuesta. Por ejemplo, si escribimos la orden 2 + 2, Maxima nos devolver la
respuesta 4 y en la pantalla observaremos lo siguiente:
2+2;

(%i1)
( %o1)

Como se puede observar, el programa antepone a la orden que hemos escrito (2 + 2) una etiqueta de la forma
( %i1) (indicando la entrada o input nmero 1). Del mismo modo, se antepone a la respuesta 4 una etiqueta de
la forma ( %o1) (indicando la salida o output nmero 1). Las siguientes entradas que tecleemos y sus respectivas
salidas se etiquetarn como ( %i2), ( %o2), etc. En cualquier momento, podemos hacer referencia a una entrada
a anterior o a su correspondiente salida, utilizando etiquetas del tipo %iN u %oN, donde N es el nmero de
entrada/salida al que deseemos acceder. Por ejemplo:
(%i2)
( %o2)
(%i3)
( %o3)
(%i4)

333+222;
555
333-222;
111
%o2+%o3;

( %o4)

666

La etiqueta % siempre hace referencia a la ltima salida. Como fin de lnea, se usa el smbolo ; (aunque si usamos
wxMaxima no es necesario teclearlo, pues es insertado automticamente). Tambin podemos utilizar el smbolo
$ y en este caso no se presenta en pantalla el resultado, como se puede apreciar en ejemplos posteriores.

2.1.

Operaciones bsicas: usando Maxima como una calculadora

Para las operaciones bsicas, se utilizan los operadores +, , , / yb(para expresar potencias). Cuando realizamos
una divisin el resultado nos lo devuelve en forma de fraccin. Por ejemplo:
(%i5)
( %o5)
(%i6)
( %o6)
(%i7)
( %o7)

2-5/3;
1
3
2^10;
1024
15^%o6;
1

22515 3

Como se puede observar, Maxima opera de forma simblica, utilizando aritmtica racional y no realizando aproximaciones numricas, salvo que se especifique lo contrario. Por defecto, simplifica las fracciones y potencias
numricas. Con la orden numer se pueden obtener expresiones numricas con 16 cifras:

(%i8)
( %o8)

1/2, numer;
0,5

Por ltimo, comentar que si introducimos una operacin con nmeros decimales, la respuesta tambin es dada
en nmeros decimales. Veamos la diferencia entre estas dos expresiones:
(%i9)

2/3; 2/3.0;

2
3
( %o10) 0,66666666666667
( %o9)

Maxima tiene una serie de constantes predefinidas, como , e i (la unidad imaginaria, i = (0, 1)). Para estas
constantes se emplean, respectivamente, los smbolos %pi, %e, %i. Por otro lado, existe una gran cantidad de
funciones predeterminadas, como las que se muestran en la siguiente tabla

FUNCIN

DESCRIPCIN

cos(x)

Coseno de x

exp(x)

Funcin exponencial, ex

sin(x)

Seno de x
Raiz cuadrada de x

sqrt(x)

Tangente de x

tan(x)

Ejercicio 1. Realice las siguientes operaciones con nmeros reales y con nmeros complejos:

3.

a) 1 + 3,5

c) 3 1 +

b) 23,5

d) 3

1
3

e) i2
f ) (4 i)/(2i)

Insertar comentarios

No se deben escribir comentarios en una celda de entrada, pues, si ejecutamos dicha celda se producirn errores
que pueden dar lugar al bloqueo del programa. Cuando queramos insertar alguna explicacin o comentario
debemos ir al men Celda y escoger Nueva celda de texto. Esto crea una celda de comentario que no se ejecutar.
Las celdas de comentario son necesarias, por ejemplo, si queremos ejecutar varias celdas a la vez.

4.

La ayuda de Maxima

La ayuda de Maxima suele ser de gran utilidad para ver qu es lo que hace un comando. Hay dos formas de
inspeccionar la ayuda:
Escribiendo en una celda de entrada ? comando.
En el men Ayuda y seleccionando Ayuda de Maxima e ndice.

Ejercicio 2. Busque en la ayuda cules seran los comandos para calcular: el valor absoluto, el factorial y
el arcocoseno de un nmero.

5.

Asignar valores a variables

El operador : se utiliza para asignar a una variable el valor de una expresin (el signo = no se utiliza para
asignacin, sino para ecuaciones). Por ejemplo, si queremos guardar el valor 3 en la variable a escribimos:
(%i11) a:3;
Para borrar el contenido de una variable se usa el comando kill:

(%i12)

kill(a);

( %o12)

done

Se pueden borrar varias variables a la vez separndolas por comas: kill(x,y). Tambin se pueden borrar todas
las variables de una vez con kill(all).

Ejercicio 3. Utilice las variables a1,a2,a3,a4,a5,a6 para almacenar, respectivamente, los valores de la
expresin

6.

1
0!

1
1!

1
2!

+ +

1
n!

para n = 1, . . . , 6.

Ecuaciones y sistemas de ecuaciones

Para resolver sistemas de ecuaciones lineales con Maxima, utilizaremos la orden solve. Cuando usamos esta
orden, introducimos las ecuaciones entre corchetes y separadas por comas, y despus las incgnitas tambin
entre corchetes y separadas por comas. Veamos ejemplos, con un sistema de cada tipo (compatible determinado,
incompatible y compatible indeterminado, respectivamente):
(%i13)

solve([x-2*y-z = 1,x-y=1,2*x+y-3*z=4],[x,y,z]);

( %o13)

[x =

(%i14)

solve([x-2*y-z = 1,x-y=1,2*x+y-3*z=4,x+y+z=1],[x,y,z]);

( %o14)

[]

(%i15)

solve([x-2*y-z = 1,x-y=1,-z-3*y+2*x=2],[x,y,z]);

4
1
1
,y = ,z = ]
3
3
3

solve: dependent equations eliminated: (3)


( %o15)

[x = 1 %r1, y = %r1, z = %r1]

Obsrvese que los parmetros que aparecen en la solucin de sistemas compatibles indeterminados se denotan
en la forma %r1, %r2, . . .
Podemos introducir las ecuaciones de forma rpida usando el men Ecuaciones y seleccionando Resolver sistema
lineal.

Ejercicio 4. Resuelva el siguiente sistema

x + 2y + z 3u + 2v
x + 4y 2z 5u + 2v

3x 2y 3z u + 6v

7.

11

= 2
= 5

Definir y representar funciones en Maxima

Para definir una funcin en Maxima se utiliza la expresin := seguida de la expresin explcita de la funcin

dada. Por ejemplo, si queremos definir la funcin real de dos variables f dada por f (x, y) = x2 + y 2 escribiremos:
(%i16) f(x,y):=x^2+y^2;
y el programa devuelve: ( %o16) f (x, y) := x2 + y 2
De esta forma, si queremos calcular el valor que la funcin toma en el punto (1, 2) escribiremos:
(%i17) f(1,2);
y el programa devuelve: ( %o17) 5
La representacin grfica de una funcin en Maxima depende de si la funcin es de variable real o de varias
variables. Si es una funcin real de variable real, y = f (x), se utilizar la funcin
plot2d(funcion,[variable, valor1,valor2])
para representar la funcin en un intervalo [valor1, valor2]. Por ejemplo, si queremos representar la funcin
f (x) = x2 + 2 cos x, tras definirla, escribiremos:
(%i18) plot2d(f(x),[x,-1,1]);
Si, por otro lado, queremos representar grficamente la funcin anterior de dos variables, f (x, y) = x2 + y 2
escribiremos:
(%i19) plot3d(f(x,y), [x,-1,1], [y,-1,1])$
Si la curva viene dada en forma explcita, es decir, y = f (x), la grfica se obtiene representando la funcin
f . Esto lo hemos visto en la seccin anterior. Sin embargo, si viene dada por sus ecuaciones paramtricas, en
primer lugar, es necesario ejecutar la siguiente instruccin:
(%i20) load(draw);
Ahora, si queremos representar, por ejemplo, la curva dada por las ecuaciones paramtricas (x(t), y(t)) = (2t, t2 ),
necesitamos utilizar la funcin parametric y escribir lo siguiente:
(%i21) draw2d(parametric(x(t),y(t),t,-1,1));
En el caso en el que tengamos una curva definida en R3 , el procedimiento es anlogo sin ms que sustituir
draw2d por draw3d.
Se pueden representar campos bidimensionales con el paquete plotdf. Veamos, por ejemplo, cmo se representa
el campo vectorial F : R2 R2 , dado por F (x, y) = (2x 3y, 2y 3x). En primer lugar, cargamos el paquete:
(%i1)

load(plotdf)$

y despus introducimos el campo y hacemos la representacin grfica:


(%i6)

F(x,y):=[2*x-3*y,2*y-3*x];

( %o6) F (x, y) := [2 x 3 y, 2 y 3 x]
(%i9)

8.

plotdf(F(x,y))$

Clculo diferencial e integral

Para calcular la derivada de una funcin se utiliza la funcin diff. De esta forma,
diff(f(x),x) calcula la derivada de la funcin f respecto de la variable x.
diff(f(x),x,n) calcula la derivada n-sima de la funcin f respecto de la variable x.
diff(f(x,y),x) calcula la derivada parcial de la funcin f respecto de la variable x.
diff(f(x,y),y) calcula la derivada parcial de la funcin f respecto de la variable y.
As, si, por ejemplo, queremos calcular las derivadas parciales de la funcin f anterior, f (x, y) = x2 + y 2 ,
escribiremos para la derivada respecto a x:
(%i22) diff(f(x,y),x);
y para la derivada respecto a y:
(%i23) diff(f(x,y),y);
La instruccin en Maxima para calcular una integral definida es:
integrate(funcion,variable,valor1,valor2);
donde [valor1, valor2] es el intervalo donde se calcula la integral. De esta forma, si queremos calcular la
Rb
f (x)dx escribiremos
a

integral:

integrate(f(x),x,a,b);

9.
9.1.

Gradiente, Divergencia y Rotacional


El vector gradiente

Dado un campo escalar f : R, donde Rn , el gradiente de f es el campo vectorial definido por




f
f
f (x1 , . . . , xn ) =
(x1 , . . . , xn ) , . . . ,
(x1 , . . . , xn )
x1
xn
Para calcular el gradiente con Maxima se usa la orden jacobian. Este comando toma como argumentos la
funcin entre corchetes y las variables entre corchetes, como en el siguiente ejemplo:

Ejemplo 1
Calcule el gradiente de la funcin f : R3 R dada por f (x, y, z) = x2 3 x y + y 2 + z.

Solucin:
(%i22) f(x,y,z):=x^2-3*x*y+y^2+z;
( %o22) f (x, y, z) := x2 3 x y + y 2 + z
(%i23) jacobian([f(x,y,z)],[x,y,z])[1];
( %o23) [2 x 3 y, 2 y 3 x, 1]
Observe que los vectores en Maxima se representan usando corchetes y con sus coordenadas separadas por
comas. Note tambin que al final del comando anterior aparece [1]. Esto es debido a que la orden jacobian
devuelve una matriz fila, y es necesario convertir esa salida en un vector.
Podemos definir el vector gradiente como una funcin escribiendo dos comillas y la orden anterior entre parntesis:
(%i24) gradientef(x,y,z):=(jacobian([f(x,y,z)],[x,y,z])[1]);
( %o24) gradientef (x, y, z) := [2 x 3 y, 2 y 3 x, 1]
Ahora podemos usar esta funcin para calcular el vector gradiente en un punto concreto. Por ejemplo:
(%i25) gradientef(4,2,1);
( %o25) [2, 8, 1]
Ejercicio 5. Calcule el gradiente de la funcin g : R2 R, definida por g(x, y) =

p
x2 + y 2 + 1, en el punto

(1, 4). Represente el campo gradiente g utilizando la orden plotdf.

9.2.

La divergencia y el rotacional

Recordemos que, dado un campo vectorial F = (F1 , F2 , F3 ) : R3 , donde R3 , la divergencia de F es el


campo escalar definido por
div F (x, y, z) =

F1
F2
F3
(x, y, z) +
(x, y, z) +
(x, y, z);
x
y
z

y el rotacional de F es el campo vectorial definido por






i
j
k





rot F (x, y,z) =
=


x
y
z


F1 (x, y, z) F2 (x, y, z) F3 (x, y, z)

=


F2
F1
F3
F2
F1
F3
(x, y, z)
(x, y, z) ,
(x, y, z)
(x, y, z) ,
(x, y, z)
(x, y, z)
y
z
z
x
x
y

Para calcular la divergencia, el rotacional y otros operadores (como el laplaciano,...) en Maxima, podemos cagar
el paquete vect introduciendo
(%i27) load ("vect")$
y usar la instruccin ev(express( ),diff). Adems, para calcular la divergencia se usa la orden div, y para
calcular el rotacional se usa la orden curl. Veamos algunos ejemplos:
Ejemplo 2
Use Maxima para calcular la divergencia y el rotacional del campo vectorial F : R3 R3 definido por

F (x, y, z) = sin(x), cos(y) , x z 2 .

Solucin:
En primer lugar introducimos el campo vectorial:
(%i34) F(x,y,z):=[sin(x),cos(y),x*z^2];
( %o34) F (x, y, z) := [sin (x) , cos (y) , x z 2 ]
Entonces la divergencia viene dada por
(%i36) ev(express(div(F(x,y,z))),diff);
( %o36) 2 x z sin (y) + cos (x)
y el rotacional viene dado por
(%i37) ev(express(curl(F(x,y,z))),diff);
( %o37) [0, z 2 , 0]
Ejercicio 6. Utilice Maxima para calcular la divergencia y el rotacional del campo F : R3 R3 definido

por F (x, y, z) = 6x2 , x y 2 , 0 .

10.

Campos conservativos. Funcin potencial

Recordemos que, dado un subconjunto abierto Rn , un campo vectorial F : Rn es un campo


conservativo si existe una funcin escalar f : R cuyas derivadas parciales existen y son continuas en
tal que f = F . A dicha funcin escalar f se le llama funcin potencial de F .
En la prctica, para saber si un campo es conservativo podemos usar el siguiente resultado:
Teorema 3
Sea un subconjunto abierto de Rn y F = (F1 , . . . , Fn ) : Rn un campo vectorial. Supongamos que F tiene
derivadas parciales (de primer orden) continuas. Entonces F es conservativo si y slo si
Fk
Fj
=
,
xk
xj

j, k {1, . . . , n}, j 6= k.

Obsrvese que:
En el caso n = 2, tendramos que comprobar slo la condicin
o no.

F1
F2
=
para ver si F es conservativo
y
x

En el caso n = 3, tendramos las condiciones


F3
F2
=
,
y
z

F1
F3
=
,
z
x

F2
F1
=
;
x
y

es decir, F es conservativo si y slo si su rotacional vale 0.

Ejemplo 4
Use Maxima para comprobar si el campo vectorial F = (F1 , F2 ) : R2 R2 , definido por

F (x, y) = 2x 3x y 2 + 2y, 2x 3x2 y + 2y , es conservativo. En caso afirmativo, calcule su funcin potencial.

En primer lugar, introducimos en Maxima las funciones coordenadas F1 y F2 de este campo:


(%i38) F1(x,y):=2*x-3*x*y^2+2*y;
( %o38) F1 (x, y) := 2 x 3 x y 2 + 2 y
(%i39) F2(x,y):=2*x-3*x^2*y+2*y;
( %o39) F2 (x, y) := 2 x 3 x2 y + 2 y
Para estudiar si el campo es conservativo, hacemos
(%i28) diff(F1(x,y),y);
( %o28)

2 6xy

(%i29) diff(F2(x,y),x);
( %o29)

2 6xy

Como ambas derivadas parciales coinciden, tenemos que el campo es conservativo, esto es, F = f para cierta
f
funcin escalar f . Para calcular esta funcin potencial f , como
= F1 , integramos F1 con respecto a x:
x
(%i30) integrate(F1(x,y), x);
3 x2 y 2
+ 2 x y + x2
2
Entonces, sabemos que f vendr dada por:
( %o30)

(%i31) f(x,y):=-(3*x^2*y^2)/2+2*x*y+x^2+c(y);
donde c es una funcin que depende de y. Como

f
= F2 , tenemos
y

(%i32)

diff(f(x,y),y)=F2(x,y);

( %o32)

d
c (y) 3 x2 y + 2 x = 3 x2 y + 2 y + 2 x
dy

(%i33)

solve(diff(f(x,y),y)=F2(x,y),diff(c(y),y));

( %o33)

d
c (y) = 2 y]
dy

As, para calcular c debemos integrar respecto de y:


(%i34)

integrate(2*y,y);

( %o34)

y2

Por tanto, f vendr dada por:


(%i35) f(x,y):=-(3*x^2*y^2)/2+2*x*y+x^2+y^2+k;

Ejercicio 7. Compruebe si el campo F : R3 R3 , definido por F (x, y, z) = ez (y, x, x y), es conservativo.


En caso afirmativo, calcule su funcin potencial.