to get the file - OCW UPM - Universidad Politécnica de Madrid

Anuncio
UNIVERSIDAD POLITÉCNICA DE MADRID
ESCUELA TÉCNICA SUPERIOR DE
INGENIEROS DE MINAS
DEPARTAMENTO DE MATEMÁTICA APLICADA Y
MÉTODOS INFORMÁTICOS
TITULACIÓN: INGENIERÍA DE MINAS
ASIGNATURA: PROGRAMACIÓN Y MÉTODOS NUMÉRICOS
PRÁCTICA Nº 1: INTRODUCCIÓN A MAPLE
CURSO 2006-07
PRÁCTICA ELABORADA POR:
Prof. Carlos Conde Lázaro
Prof. Arturo Hidalgo López
Prof. Alfredo López Benito
Depto. de Matemática Aplicada y Métodos Informáticos
Escuela Técnica Superior de Ingenieros de Minas
Universidad Politécnica de Madrid
Mayo 2007
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
OBJETIVOS DE LA PRÁCTICA
1º. Conocer y utilizar los comandos básicos de MAPLE para realizar
operaciones aritméticas.
2º. Representar gráficas de funciones de una variable.
3º. Conocer y utilizar los comandos básicos de MAPLE para las operaciones
con matrices y vectores.
FORMA DE DESARROLLAR ESTA PRÁCTICA.
La realización de la práctica se divide en dos partes. En la primera de ellas el
profesor explicará el funcionamiento de los comandos de MAPLE necesarios
mediante el desarrollo de los ejemplos contenidos en el epígrafe de
EJEMPLOS.
En la segunda parte los alumnos deberán resolver individualmente los
ejercicios propuestos que se incluyen en el epígrafe de EJERCICIOS pudiendo
consultar al profesor cuantas dudas tengan sobre los mismos.
La semana siguiente a aquella en la que se realice la práctica, los alumnos
podrán solicitar una versión de la misma en la que se incluirán los ejercicios
que se proponen debidamente resueltos.
DURACIÓN ESTIMADA DE ESTA PRÁCTICA
El tiempo estimado para la realización de esta práctica es de 2 horas.
BIBLIOGRAFÍA
La principal referencia en la que se sustenta esta práctica la constituyen los
módulos de ayuda de MAPLE (accesibles en la opción Help de la barra de
herramientas)
EJEMPLOS
Introducción al programa MAPLE 10
MAPLE 10 es un Sistema de Computación Matemática que permite realizar
cálculos numéricos, manipular expresiones simbólicas, crear nuevos
procedimientos, (entendiendo por éstos una secuencia de instrucciones,
sentencias y comandos cuyo objetivo es resolver o realizar una determinada
aplicación o algoritmo) y elaborar maplets. En este sentido MAPLE 10 posibilita
el uso de aproximadamente 3000 funciones predefinidas junto con todas
aquellas que puede definir el usuario.
En MAPLE existen dos tipos básicos de input:
*) el input matemático, caracterizado por el prompt "[>", y
*) el input de texto, "[" utilizado para hacer comentarios, explicar fórmulas y
ordenar el documento (hoja de trabajo o worksheet).
> #input matemático
input de texto
Existe también un menú de ayuda a disposición del usuario al cual se puede
acceder pulsando la palabra Help que se encuentra en la barra de menús de la
cabecera de la hoja de trabajo.
Otras forma de acceso al menú de ayuda se verán más adelante.
1
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
Al terminar cada instrucción se pulsa la tecla Entrar (o Intro) para que esta se
ejecute.
Operaciones elementales y sintaxis de Maple V
Operadores aritméticos elementales
Las operaciones aritméticas elementales (suma, resta, producto y división) se
representan en MAPLE por los operadores + , - , * y / .
Uso del operador punto y coma
Todos los comandos en Maple V deben terminar en ; (punto y coma) o en :
(dos puntos). Si la expresión MAPLE se termina de esta forma, se puede
ejecutar dicha expresión sin más que pulsar la tecla "ENTER" () o la tecla
"INTRO" .
Ejemplo: Veamos cómo deberíamos proceder para multiplicar dos números
tales como 32547 y 33756.
> 32547*33756;
1098656532
Si se desea sumar los números 42 y 33 se procedería como sigue:
> 42+33;
75
Uso del operador dos puntos
Veamos qué ocurre si sustituímos el punto y coma por dos puntos:
> 32547*33756:
No se presenta ningún resultado, sin embargo, el cálculo se ha realizado.
¿Qué ocurre si omitimos el operador punto y coma o el operador dos puntos?
La siguiente línea muestra que si se omite el punto y coma tras una operación
no se ejecuta la instrucción, lo que produce un mensaje de error de sintaxis:
> 32547*33756
>
Warning, premature end of input
> 42+33
>
Warning, premature end of input
Si en la evaluación anterior añadimos el símbolo ; detrás de la expresión
32547*33756 , y de 42+33 la dos operaciones se realizarán correctamente.
> 32547*33756;
1098656532
> 42+33;
75
En resumen:
La ejecución de expresiones en MAPLE debe finalizarse con ; o con : .
Si se finaliza con ; se muestra en pantalla el resultado de la expresión.
Si se finaliza con : la expresión se ejecuta pero el resultado no se
muestra en pantalla.
2
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
Uso del operador %
Maple permite moverse por todo el documento (worksheet), volviendo a realizar
cálculos anteriores o modificar expresiones o comandos, de manera que si se
comete un error de sintaxis podamos corregirlo y ejecutar de nuevo este
comando u otros anteriores.
Cuando queramos emplear el resultado de la última operación o cálculo
realizado (que no tiene por qué coincidir con el último escrito) en una nueva
operación utilizaremos el operador %:
Ejemplo: Si queremos multiplicar 2 por la suma de 42+33 (la última operación
realizada) podemos escribir:
> 2*%;
150
De esta manera obtenemos el resultado esperado de la operación
2 *(42+33)=150.
Si queremos referirnos al resultado del cálculo u operación penúltima,
escribiremos dos veces el operador %, es decir, %%.
Ejemplo: Si deseamos dividir 97 entre el resultado de 42+33 realizado en la
penúltima operación escribiremos:
> 97/%%;
97
75
que es igual a realizar la operación 97/(42+33)(como cabía esperar).
Y así sucesivamente con 3 símbolos %%% 4 símbolos %%%% o más.
Podemos sumar fracciones:
> 1/2+1/3;
5
6
> fin;
fin
Nota: la linea anterior "fin;" es una instrucción en la que sólo se escribe la
palabra "fin" sin realizarse ningún cálculo ni ninguna otra operación. Su utilidad
radica en el hecho que al realizar la última operación indicada, MAPLE suele
pasar directamente al comando siguiente sin dejar visible el resultado de la
misma operación. Para obviar este inconveniente se escribe la instrucción fin
(cualquier otra palabra sería igualmente válida, por ejemplo: pausa, etc.)
obligando así a MAPLE a detenerse en ella.
Comando evalf( )
> restart:
Otra operación que se puede realizar fácilmente con MAPLE es la
potenciaición. Para ello MAPLE utiliza el símbolo ^ o ** (potenciación)
Así para elevar el número 31 a la potencia 6 se escribe:
3
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
> 31^6;
887503681
> 31**6;
887503681
Por defecto, Maple utiliza aritmética exacta.
Ejemplo: si dividimos dos números enteros, Maple presenta un resultado
exacto:
> 4/2;325/778;
2
325
778
Mediante el comando evalf podemos evaluar el resultado en aritmética de
coma flotante, lo que permite obtener un resultado decimal de "n" dígitos:
> evalf(%);
0.4177377892
Por defecto, el número de dígitos utilizados en coma flotante es diez. El mismo
comando evalf permite especificar el número de dígitos con el que queremos
obtener un resultado en forma numérica. Veamos cómo obtener la proximación
de 25 dígitos decimales de la fracción 325/778.
> evalf(%%,25);
0.4177377892030848329048843
Otra forma de forzar la aritmética de coma flotante consiste en escribir el punto
(decimal) al final de alguno de los números que intervienen en la operación. Por
ejemplo:
> 325./778.;
0.4177377892
En resumen, la aritmética de coma flotante se activa automáticamente al
trabajar con números decimales:
> 3./8; 3/8;
0.3750000000
3
8
> fin;
fin
Asignación de valores "a un nombre" (variables).
En primer lugar, debemos incidir en que MAPLE diferencia entre mayúsculas y
minúsculas.
Por lo tanto, a es distinto de A. Para asignar un valor (numérico o el resultado
de una operación) a un nombre, se utiliza el símbolo de asignación que en
MAPLE es representado por ":=". Este mismo símbolo de asignación se
utilizará para asignar a un nombre expresiones, funciones, matrices, vectores,
etc.... Por tanto el uso de este símbolo será muy frecuente al trabajar con
MAPLE. En el ejemplo siguiente, al nombre "a" se le asigna el valor 13 y al
nombre "A" se le asigna el valor 14:
4
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
> restart;
> a:=13; A:=14;
a := 13
A := 14
El valor que tenga asignado un nombre puede obtenerse sin más que escribir
dicho nombre acabado en ;. Por ejemplo a y A tienen los valores:
> a;A;
13
14
El valor asignado a un nombre (a partir de ahora al nombre correspondiente lo
llamaremos variable) permanece sin alterarse hasta que o bien se le asigne a
dicho nombre un nuevo valor o bien se ejecute el comando restart (con el
que se "limpian" todos los valores asignados hasta entonces a las variables).
Las variables también pueden combinarse mediante los operadores aritméticos
antes señalados. Por ejemplo:
> A-a;
1
A una variable también puedes asignarle un valor formado por una cadena de
caracteres (sin espacios en blanco entre palabras):
> pepito:=hola_soy_el_valor_dado_a_la_variable_pepito;
pepito := hola_soy_el_valor_dado_a_la_variable_pepito
> pepito;
hola_soy_el_valor_dado_a_la_variable_pepito
Nótese que la asignación de un valor a una variable se ha realizado utilizando
el operador :=. La sintaxis "natural" a través del símbolo "=" no funciona pues
MAPLE distingue entre el operador de asignación (:=) y la igualdad
matemática (=). Esta última veremos más adelante que se uitiliza para definir
ecuaciones, para comparar, ....
Ejemplo:
> B=13; b=14;
B = 13
b = 14
> B-b;
B−b
Como no hemos utilizado desde hace un rato el comando restart, podemos
preguntar el valor que tienen las variables hasta ahora usadas. Para ello, como
ya dijimos anteriormente, basta con escribir su nombre seguido de ;:
> a;A;b;B;pepito;
13
14
b
B
hola_soy_el_valor_dado_a_la_variable_pepito
MAPLE incorpora muchas de las constantes comunes en matemáticas. Las
constantes matemáticas e (base de los logarítmos neperianos), π (relacion
5
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
entre la longitud de una circunferencia y su diámetro) se representan como
exp(1) y como Pi respectivamente.
> exp(1); Pi;
e
π
Si se desea obtener el valor numérico aproximado con 10 dígitos de las
constantes anteriores puede utilizarse el comando evalf como sigue
> evalf(%%);evalf(%%);
2.718281828
3.141592654
La unidad imaginaria se representa por la letra mayúscula I.
> I;
I
El número de decimales de las expresiones, constantes y variables que se
evalúen puede aumentarse o disminuirse indicando en el propio comando evalf
el número de dígitos que se desea utilizar. Un ejemplo de ello se muestra a
continuación:
> evalf(exp(1),21);
2.71828182845904523536
Otra forma de trabajar permanentemente con el número de dígitos que se
desee es utilizar el comando Digits como se ilustra a continuación:
> Digits:=15;
Digits := 15
> evalf(exp(1));
2.71828182845905
> Pi;
π
> evalf(%);
3.14159265358979
> evalf(%%,45);
3.14159265358979323846264338327950288419716940
> fin;
fin
Funciones trigonométricas, logarítmicas y raíces.
> restart;
Las funciones seno, coseno, logaritmo neperiano, logaritmo en base n, y
raíz cuadrada se expresan utilizando la siguiente sintaxis:
sin( ) , cos( ), log( ) o ln( ), log[n]( ), sqrt( )
En las funciones trigonométricas los argumentos se consideran dados en
radianes (y no en grados):
El seno de un ángulo de x radianes se obtiene mediante sin(x)
> sin(Pi/8);
π
sin⎛⎜⎜ ⎟⎟⎞
⎝8⎠
> evalf(%);
0.3826834325
6
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
El coseno de un ángulo de x radianes se obtiene mediante cos(x)
> cos(Pi/4);
2
2
> evalf(%);
0.7071067810
La tangente de un ángulo de x radianes se obtiene mediante tan(x)
> tan(Pi/3);
3
> tan(Pi/6);
3
3
> evalf(%);
0.5773502693
La secante se calcula como sec(x), la cosecante como csc(x) y la cotangente
como cot(x):
> sec(2.254);csc(Pi/2);cot(1.);
-1.584080920
1
0.6420926159
Las funciones trigonométricas inversas (arcoseno, arcocoseno,
arcotangente, ....) se utilizan con la misma sintaxis pero precediendo el
comando del prefijo arc. El valor que devuelven se proporciona en radianes.
Por ejemplo:
> arcsin(1/2);
arcsin(-1/sqrt(2));
arccos(1/sqrt(2));
arccos(-1);
arctan(-infinity);
π
6
π
−
4
π
4
π
π
−
2
Observa que, al igual que sucede en las calculadoras de bolsillo, los
argumentos reales en las funciones trigonométricas inversas implementadas en
MAPLE conducen a resultados que se encuentran sólo en 2 cuadrantes de
referencia. Más concretamente los argumentos devueltos por las funciones
arcsin y arctan se encuentran siempre en el intervalo [- Pi/2, Pi/2] y por la
función arccos entre [0 y Pi]. Pero hay infinitos ángulos más que tienen esos
valores del seno, coseno o tangente.
7
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
Si el argumento de una función trigonométrica inversa es superior a 1, MAPLE
tabién evalúa la función pero, en ese caso,, devuelve un valor en el campo de
los complejos.
> arccos(2.);
1.316957897 I
Obsérvese que el último valor es un numero imaginario.
El logaritmo neperiano se expresa en MAPLE como:
> ln(2);
ln( 2 )
> evalf(%);
0.6931471806
Alternativamente se puede usar la forma
> log(2);
ln( 2 )
> evalf(%);
0.6931471806
Para calcular el logaritmo en base n utilizaremos el comando log[n].
Por ejemplo, para expresar el logaritmo en base 2 escribiremos:
> log[2](8);
3
> evalf(%);
3.
El logaritmo decimal puede usarse en MAPLE como caso particular del
comando anterior, o podemos escribiendo log10( ):
> log10(10000);
4
> evalf(%);
4.
La raíz cuadrada se expresa mediante el comando sqrt( ):
> sqrt(5);
5
> evalf(%);
2.236067977
Observa distintas maneras de obtener la raíz cuadrada y la diferencia en la
forma de expresar los resultados:
> sqrt(36);
sqrt(37);
sqrt(37.);
37**(0.5);
37**(1/2);
6
37
6.082762530
6.082762530
37
8
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
Conviene indicar que las distintas funciones e instrucciones de MAPLE se
pueden concatenar unas con otras, ejecutándose primero las más internas. Por
ejemplo es equivalente el proceso:
> sin(Pi/3);
3
2
> 2*%;
3
> log(%);
1
ln( 3 )
2
> sqrt(%);
1
2 ln( 3 )
2
> evalf(%);
0.7411519035
que escribir en una sola línea:
> evalf(sqrt(log(2*sin(Pi/3))));
0.7411519035
> fin;
fin
Variables y funciones.
Para asignar un valor o una expresión a una variable, como ya hemos visto
anteriormente, se emplea el símbolo :=.
> A:=35;
A := 35
Para examinar el valor que tiene asignado una variable, solo hay que escribir
su nombre:
> A;
35
A la variable A se le ha asignado el valor 35, valor con el que permanecerá a lo
largo de la sesión a menos que se le asigne otro valor o se le "desasigne".
> 5*A+18;
193
Si se pregunta por el valor de una variable a la que no se le ha asignado valor,
MAPLE nos devuelve el nombre de dicha variable:
> B;
B
> B:=1.765;
B := 1.765
> B;
1.765
Para desasignar a una variable el valor que tenga asignado, escribiremos su
nombre entre comillas simples:
9
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
> A:='A';
A := A
> A;
A
Debe advertirse que algunos nombres no pueden asignarse a nombres de
variables (pues dichos nombres ya están utilizados en el programa MAPLE
para ciertas funciones predefinidas). Es el caso de los nombres sin, cos, exp,
...:
> cos:=17.;
Error, attempting to assign to `cos` which is protected
> exp:=12*x;
Error, attempting to assign to `exp` which is protected
o de otros nombres tales como I, D, Pi, ....
> I:=7.5;
Error, illegal use of an object as a name
> D:=12.5*cos(x);
Error, attempting to assign to `D` which is protected
> Pi:=exp(x);
Error, attempting to assign to `Pi` which is protected
Sería largo dar una lista de todos los nombres que MAPLE "reserva" para su
uso. De todas formas no debes preocuparte por ello pues si intentas usarlos
MAPLE te responderá con un mensaje (como los aparecidos en los ejemplos
anteriores) indicando que ese nombre no puede utilizarse pues está
"protegido".
Pero pasemos ya a examinar cómo pueden definirse funciones en MAPLE.
Esencialmente existen tres formas de usar funciones.
A) La primera forma es definir la función como si de una variable se tratase
escribiendo la fórmula que la define a la derecha del símbolo de asignación :=.
Propiamente, de esta forma no se define una función sino que
simplemente se asigna un nombre a la expresión que tiene la función.
Supongamos que queremos analizar la función dada por f(x)=x^3. Podemos
proceder de la siguiente forma:
> f:= x^3;
f := x3
El comando anterior define la expresión y podemos comprobar que la
representa si escribimos:
> f;
x3
Con el comando subs podemos evaluar esta expresión para un valor
determinado. La sintaxis a utilizar es: subs(variable = valor, función
que contiene a la variable.). Por ejemplo:
> subs(x=6,f);
216
10
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
Habiendo definido f de la forma anterior (como una fórmula), no tienen sentido
las expresiones f(x)o f(6), tal como la representamos usualmente; por ello,
Maple no la entiende. Veamos lo que resulta:
> f(x);
x( x ) 3
> f(6);
x( 6 ) 3
No obstante, cuando tenemos una expresión podemos convertirla en función
podemos
usar
el
comando
de
Maple
unapply(expresión,
variables_independientes). Supongamos que queremos convertir la
expresión f en función; para ello podemos hacer lo siguiente:
> f:=unapply(f,x);
f := x → x3
Ahora ya podemos usar f como una función, evaluándola en la abscisa que
deseemos:
> f(6.3);
250.047
B) La primera forma Si queremos utilizar la notación matemática estándar,
haremos uso del operador -> (símbolo “menos” seguido del símbolo “mayor
que”) combinado con el operador de asignación para ponerle un nombre a la
función. Por ejemplo:
> f := x -> x^3;
f := x → x3
es decir: f es la función que asocia a la variable independiente x el valor x^3.
Esta notación es la que emplearemos usualmente para definir funciones.
Ahora sí es entendida por Maple:
> f(x);
x3
Ahora tenemos
> f;
f
> f(6);
216
es decir 6 elevado al cubo.
Esta forma de definir funciones se generaliza al caso de varias variavles
fácilmente. Por ejemplo podemos definir la siguienye función de dos variables
(x e y):
> g:=(x,y)->x*y-3.45*sin(x+y);
g := ( x, y ) → x y − 3.45 sin( x + y )
que puede evaluarse para x=1.25 e y = -3.33 mediante:
> g(1.25,3.33);
7.582310330
C) Existe una tercera forma de definir una función. Esta consiste en elaborar
un procedimiento. Estudiaremos más adelante cómo definir procedimientos en
11
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
general, pero de forma simplificada podemos avanzar que un procedimiento, es
un pequeño programa cuya estructura es:
NOMBRE:= proc(variables de entrada, variables de salida)
Instrucciones en las que se especifica
cómo dar valor a las variables de salida
utilizando para ello las variables de entrada
así como otras variables locales
end proc;
En prácticas posteriores aprenderás a realizar procedimientos utilizando
estructuras algorítmicas. De momento nos contentaremos con mostrarlos
utilizando instrucciones muy simples. Por ejemplo para definir la función
f(x) =x*cos(x) puedes hacerlo como sigue:
> f:=proc(x)
x*cos(x)
end proc;
f := proc(x) x×cos( x ) end proc
> f(x);
x cos( x )
> f(2);
2 cos( 2 )
Cualquiera de las formas anteriormente expuestas son utilizadas para definir
funciones.
> fin;
fin
Manipulación de expresiones algebraicas.
> restart;
Funciones básicas de Álgebra Lineal y uso de ( ), [ ] y { }
En Maple los paréntesis ( ) son utilizados para:
a) encerrar entre ellos los valores de las variables de una función, o
b) encerrar entre ellos operaciones o las expresiones sobre las que
actúa una determinada instrucción.
Por ejemplo, la instrucción exp evalua la exponencial de lo que le sigue
encerrado entre paréntesis:
> v:=exp(17*a-4/5.);
( 17 a − 0.8000000000 )
v := e
o, en la instrucción siguiente se ordenan las operaciones de una determinada
expresión:
> a:=2*(3+4)/(25+16.);
a := 0.3414634146
El valor de la variable a es sustituido en la expresión v. Comprobémoslo:
> v;
149.1388943
12
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
Pero MAPLE permite también trabajar con grupos de elementos. En este
sentido conviene distinguir entre lo para MAPLE son CONJUNTOS y lo que
para
MAPLE
son
LISTAS.
Los conjuntos son una secuencia no ordenada de expresiones, variables o
valores (numéricos o de caracteres) u otro elementos, sin repeticiones y que se
escriben encerrados entre llaves. MAPLE ordena los elementos del conjunto
como estime más oportuno, sin respetar el orden en que fueron escritos los
elementos del conjunto. Por ejemplo, puede definirse el conjunto C siguiente:
> C:={1,3*x+25*y^2,alberto,-24, 16*x, -24, 42, alberto};
C := { -24, 1, 42, 3 x + 25 y2, alberto, 16 x }
MAPLE ha eliminado los elementos repetidos (un "-24" y un "alberto") y los ha
ordenado como ha estimado oportuno.
Para MAPLE una lista es una secuencia ordenada de expresiones, variables o
valores (numéricos o de caracteres) cuyos elementos se escriben encerrados
entre corchetes. En este caso, MAPLE respeta el orden en que fueron escritos
los elementos. Por ejemplo podemos definir la lista L siguiente:
> L:=[1,3*x+25*y^2,alberto,-24, 16*x, -24, 42, alberto];
L := [ 1, 3 x + 25 y2, alberto, -24, 16 x, -24, 42, alberto ]
Ahora MAPLE ha respetado el orden y no ha elimnado las repeticiones de
algunos elementos.
Para dirigirte a los elementos de una lista (o de un conjunto) que están entre el
i-esimo y el j-ésimo elemento (ambos inclusive) puedes utilizar la instrucción:
nombre_de_la_lista[i..j]. Por ejemplo, para referirnos a los elementos
2º, 3º y 4º de la lista L antes definida basta con escribir:
> L[2..4]
>;
[ 3 x + 25 y2, alberto, -24 ]
o los elementos 3º y 4º del conjunto C los obtendremos mediante:
> C[3..4];
{ 42, 3 x + 25 y2 }
Si sólo deseamos referirnos a un elemento, basta con poner su índice entre
corchetes:
> L[3];C[5];
alberto
alberto
Una de las grandes ventajas de un sistema como MAPLE para realizar
prácticas de álgebra con él ordenador es su facilidad para manipular
expresiones algebraicas, que recuerda en cierto sentido, a cómo una
calculadora nos permite trabajar con expresiones numéricas.
Algunos comandos usuales para la manipulación de expresiones algebraicas
son:
13
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
simplifica una expresión algebraica.
expande una expresión.
factoriza una expresión.
resuelve un sistema de ecuaciones para un conjunto de
incógnitas.
Veamos algunos ejemplos de los comandos citados.
> expand((x^2-4)*(2*x+5)*(3*x-1)*(x^4+x+1));
6 x8 − 46 x5 + 39 x4 + 13 x7 − 16 x3 − 29 x6 − 81 x2 − 32 x + 20
> factor(%);
( x − 2 ) ( 2 x + 5 ) ( 3 x − 1 ) ( x + 2 ) ( x4 + x + 1 )
simplify( ):
expand( ):
factor( ):
solve( ):
Si queremos resolver un sistema de ecuaciones debemos encerrar entre llaves
{ } las ecuaciones y separar por comas las mismas dentro del comando
solve( ).
> solve({2*x-3*y=12,12*x+4*y=17});
-5
9
{y = , x = }
2
4
Una manera equivalente de realizar la operación anterior es definir las
ecuaciones en primer lugar, y después resolver el sistema:
> eq1:=2*x-3*y=12;eq2:=12*x+4*y=17;
eq1 := 2 x − 3 y = 12
eq2 := 12 x + 4 y = 17
> solve({eq1,eq2});
-5
9
{y = , x = }
2
4
Igualmente las soluciones del sistema las podríamos haber asignado a una
variable operando del siguiente modo:
> sol:=solve({eq1,eq2});
-5
9
sol := { y = , x = }
2
4
Como ves, las llaves { } se utilizan para indicar a Maple que se trata de un
conjunto (en este caso de ecuaciones). El conjunto de soluciones también es
presentado entre llaves pues una lista.
Cuando utilizamos varias expresiones entre llaves en MAPLE no importa el
orden. Maple, al ir encerradas entre llaves varía su orden según vea que es
más conveniente para resolverlas. Pero como cintrapartida también
proporciona las soluciones en el orden en que las obtiene pudiendo este no
coincidir con el orden en el que las explicitó el usuario.
Por ejemplo, el último resultado de Maple V indicado arriba, es un conjunto de
dos elementos, el primero es la ecuación x=9/4 y el segundo es la ecuación
y=-5/2. La forma de seleccionar el primer elemento es mediante la siguiente
sintaxis: sol[1]
> sol[1];
-5
y=
2
14
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
El segundo elemento se obtiene como:
> sol[2];
9
4
Se puede observar que el resultado se presenta en forma de ecuación y en
distinto orden al escrito incialmente en el comando solve. EL comando solve
evalúa todas las soluciones de las ecuaciones, tanto las reales como las
complejas, y en aritmética exacta. Por ejemplo para la siguiente ecuación
cúbica:
> eq:=x^2*(x^3+x-2)=0;
eq := x2 ( x3 + x − 2 ) = 0
MAPLE proporciona las siguientes soluciones
> solve(eq,x);
1 1
1 1
0, 0, 1, − + I 7 , − − I 7
2 2
2 2
observemos que las dos últimas son complejas conjugadas y que todas ellas
se han calculado exactamente.
Un comando similar es el comando fsolve, si bien este sólo proporciona
soluciones reales y aproximadas con el número de dígitos que se esté
utilizando (por defecto 10).
> fsolve(eq,x);
0., 0., 1.
Existen además dos comandos útiles en MAPLE para la manipulación de
ecuaciones:
lhs( ): left-hand side (lado izquierdo)
x=
rhs( ): right-hand side (lado derecho)
> rhs(sol[1]);
-5
2
> lhs(sol[1]);
y
Podemos utilizar el comando subs( ) para comprobar el resultado mediante
la sustitución de la solución en las dos ecuaciones:
> subs(sol,{2*x-3*y=12,12*x+4*y=17});
{ 12 = 12, 17 = 17 }
Hasta ahora hemos empleado tres símbolos distintos para agrupar elementos o
construir grupos: ( ), { }, y [ ]. Se utilizan para diferentes propósitos y
deben ser empleados cuando corresponde. Recuerda que:
los paréntesis ( ) son utilizados para agrupar operaciones o para
encerrar entre ellos los argumentos de las funciones, como en
sin(Pi).
las llaves { } se emplean para agrupar un conjunto de elementos,
como en {x,y}.
los corchetes se emplean para obtener un elemento de un grupo, como
en sol[1]o para definir listas ordenadas. También son utilizados para
15
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
especificar la posición (o posiciones) de elementos de un un conjunto o
una lista.
Se verán, en prácticas siguientes, más ejemplos usando ( ),{ }, y [ ]
> fin;
fin
Gráficos 2-D y comando plot( )
> restart;
Maple dispone del comando plot( ) para representar la gráfica de funciones
de una variable. Así, si la función f está definida en un intervalo [a,b], podemos
representarla gráficamente mediante una de las siguientes instrucciones:
plot (f,a..b,opciones) o plot(f(x),x=a..b,opciones). Veamos
algunos ejemplos.
Primero definimos una función.
> f := x -> exp(-x)*sin(4*x);
( −x )
f := x → e
sin( 4 x )
La función anterior se puede representar sin más que utilizar el comando plot
como sigue:
> plot(f);
16
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
MAPLE la ha dibujado. Pero la ha dibujado como el programa "ha querido": en
el intervalo de abscisas [-10, 10]; en el intervalo de ordenadas necesario para
que quepa todo el grafo representado; en el color que ha "preferido" MAPLE;
con un grosor y estilo de línea para el grafo que ha "seleccionado" MAPLE; sin
poner títulos al dibujo ni añadir etiquetas a los ejes; ..... ¿Pero de qué nos
quejamos? ¿Cómo puede conocer MAPLE las caracteristicas que deseamos
para el dibujo si no se las hemos comunicado?.Veamos como le podemos
indicar a MAPLE las especificaciones de dibujo. Comenzamos por indicarle el
intervalod e dibujo. Por ejemplo dibujemos la misma función f en el intervalo
I=[0,6]. Para ello sólo tenemos que escribir: plot(f,rango de abscisas).
El rango de abscisas se introduce separando el extremo izquierdo del derecho
por dos puntos seguidos.
> plot(f,0..6);
También podemos dibujar la misma curva limitando el valor que pueden tomar
las ordenadas " y" entre los valores ymin e ymax para la variable y. Esto lo
expresaremos diciendo que representamos la función en la ventana de dibujo
[xmin, xmax] x [ymin, ymax]. Así con la instrucción siguiente se representa la
función f(x) antes definida en la "ventana" [0, 6] x [-0.2, 0.4]:
17
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
> plot(f,0..6,-0.2..0.4);
Si deseamos que se especifiquen "carteles" en el
poner el nombre que deseemos para el eje de
encerrado entre paréntesis y precediendo al rango
igual. Si por ejemplo en la representación de la
abscisas es el "tiempo" y deseamos que aparezca
podemos escribir la siguiente sentencia:
18
eje de abscisas basta con
abscisas tras la función y
de abscisas seguido de un
función anterior el eje de
representado en el gráfico,
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
> plot(f(tiempo),tiempo=0..6,-0.2..0.4);
Y si el eje de ordenadas fuese la "aceleración" y queremos que se escriba en el
gráfico:
> plot(f(tiempo),tiempo=0..6,acel=-0.2..0.4);
19
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
El comando plot( )admite diferentes especificaciones que permiten controlar
el color de la curva (opción color), el grosor del trazo utilizado para
representarla (opción thickness), el tipo de trazo (continuo, discontinuo, a
puntos, combinando puntos y rayas mediante la opción linestyle), el tipo de
ejes (opción axes), la escala (opción scaling), los rótulos y títulos (opciones
title y legend), etc....
Por ejemplo, para representar la función f(x) antes definida en la ventana [0 ,
6]x[-1 , 1] con trazo más grueso (especificación thickness) y en color azul
(especificación color), con el título "Dibujo n" y con la leyenda "aceleración del
móvil" podemos escribir:
> plot(f(tiempo),tiempo=0..6,acelerac=-1..1, thickness=3,
color=blue, title="Dibujo n", legend="aceleración del
móvil");
Hay muchas otras opciones que se pueden introducir en el comando plot.
Puedes consultarlas utilizando la opción Help de la barra de menús (o como
más adelante te indicaremos). De momento puedes practicar con algunas de
20
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
ellas situando el ratón sobre la gráfica que desees, presionando una vez el
botón izquierdo del ratón (con lo que el gráfico se enmarcará en un recuadro) y
tras ello presionando el botón derecho del ratón. Con ello te aparece una
ventana en la que tienes diferentes opciones sobre la forma de presentar el
dibujo. Te dejamos a tí que las explores por tu cuenta.
Pero, presta atención al hecho de que Maple no realiza el gráfico si se
escribe "f" (en lugar de "f(nombre_argumento)") y tras ello el
nombre_argumento precediendo al rango de abscisas. Como ejemplo
> plot(f,tiempo=0..3);
Error, (in plot) invalid plotting of procedures, perhaps you mean
plot(f,0 .. 3)
Si quieres dibujar el gráfico escribiendo sólo "f" (en
lugar de
"f(nombre_argumento)")) también debes omitir el nombre de la variable
independiente a la hora de definir el intervalo de dibujo:
> plot(f,0..3);
Nótese que si hubiésemos definido la función a través de una expresión
> g:=exp(sin(x));
sin( x )
g := e
21
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
entonces no habría problema con indicar el nombre de la variable
independiente a la hora de dibujar:
> plot(g,x=0..10);
pero, en este caso, los tendrías si omites el nombre de la variable
independiente ("x") a la hora de definir el intervalo:
> plot(g,0..10);
Warning, unable to evaluate the function to numeric values in the
region; see the plotting command's help page to ensure the calling
sequence is correct
Plotting error, empty plot
Finalmente, si utilizamos la siguiente sentencia, obtenemos también un gráfico
vacío:
> plot(f(x),0..3,-0.3..1);
Warning, unable to evaluate the function to numeric values in the
region; see the plotting command's help page to ensure the calling
sequence is correct
Plotting error, empty plot
22
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
En este caso deberíamos haber expresado x=0..3, y=-0.3..1
> plot(f(x),x=0..3,-0.3..1);
La información de ayuda para el comando plot nos indica muchas opciones
útiles para gráficos.
> ?plot
En la pantalla de información sobre los distintos comandos podrás encontrar
numerosas opciones que ayudan a completarlos (title, numpoints, axes, etc...)
Algunas las veremos durante las sesiones de prácticas.
Otra forma de activar la ayuda de Maple consiste en escribir el comando del
cual queremos tener información y marcar el mismo "clicando" dos veces con el
boton izquierdo del ratón posicionado al comienzo del comando. Tras ello pulsa
la tecla F1
> plot
En una misma figura puedes realizar el gráfico de más de una función. Basta
para ello que en el comando plot( ) incluyas los nombres de las funciones a
representar entre llaves:
23
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
> plot({f(x),g},x=0..6);
Otra forma de proceder para representar en una misma figura diferentes
gráficas consiste en almacenarlas en variables diferentes. Por ejemplo:
> dibu1:=plot(f(x),x=0..6,color=blue, legend="f"):
dibu2:=plot(g,x=0..6,color=aquamarine,legend="g"):
En las variables dibu1 y dibu2 anteriores están almacenados, en forma de
lista, todos los datos que MAPLE necesita para representar los dibujos (si
quieres verlos modifica las sentencias anteriores terminándolas en ";" en lugar
de en ":") . Ya sólo nos falta saber qué hay que hacer para representarlos. Ello
se hace con el comando display. Pero este comando no está disponible de
forma inmediata al inicializar el programa MAPLE. Para que esté disponible
debemos cargar la librería plots que contiene los "útiles" de dibujos
bidimensionales. Puedes obtener información sobre esta librería mediante la
ejecución del siguiente comando:
> ?plots
Básicamente existen dos maneras de usar la librería plots:
24
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
podemos cargar en memoria todas las rutinas contenidas en dicha librería
mediante el comando with(plots), y a continuación usar la rutina deseada
con la sintaxis: display( )
o bien, podemos usar directamente dicha rutina sin cargar todas las rutinas de
la librería mediante la expresión:plots[display]({conjunto
de
gráficos}).
Carguemos la librería:
> with(plots):
Warning, the name changecoords has been redefined
y representemos nuestros dos dibujos:
> display(dibu1,dibu2);
Para introducir textos dentro de un gráfico, al margen de las opciones title o
legend, podemos dibujar los textos usando el comando plots[textplot]
(o simplemente textplot si, como es nuestro caso, ya se cargó la librería
plots). A continuación presentamos un ejemplo que utiliza las rutinas plot,
textplot y display.
25
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
> plot1 := plot(f,0..3):
Hemos asignado a la variable plot1 el gráfico de la función f para una ventana
de abscisas comprendida entre 0 y 3
> plot2 := textplot([0.7,0.8,`Experimentando con títulos de
figuras`],align = RIGHT, color=brown):
Hemos asignado a la variable plot2 el texto "Experimentando con títulos de
figuras" - mediante la expresión textplot( )- situándolo en la posición de
coordenadas x=0.7 e y = 0.8 (es decir hemos posicionado el texto con respecto
al origen del sistema de coordenadas) , lo hemos alineado a la derecha y le
hemos indicado que nos lo escriba en color aguamarina.
> plots[display]({plot1,plot2}); # punto y coma
En el proceso de almacenar gráficos con un nombre es importante finalizar las
sentencias con dos puntos, ya que de otra forma (con punto y coma) al asignar
a una variable un gráfico, se obtiene un listado definiendo la estructura de plot
que se debe utilizar para realizar el gráfico.
26
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
El comando textplot ha sido utilizado para imprimir texto en el punto con las
coordenadas ( 0.7, 0.8) y alinearlo a la derecha (en este caso) en un color
determinado. Como se puede observar, el símbolo ` se utiliza para encerrar el
texto a imprimir:
`Experimentando con títulos de figuras`. Otro
ejemplo de uso del comando display es el que sigue y en él se representan,
en distinto color, las funciones x*x+1 y sen(x)+1, escribiendo en el color
correspondiente la función que se dibuja:
> f1:=x->x^2 +1;
f1 := x → x2 + 1
> f2:=x->sin(x)+1;
f2 := x → sin( x ) + 1
> p1:=plot(f1,0..2, color = brown, thickness=3):
> p2:=plot(f2,0..2, color=green, thickness=2):
> titulo1:=textplot([1.6,4.5,`x*x+1`],align = RIGHT,
color=brown):
> titulo2:=textplot([1.7,2.2,`sen(x)+1`],align = RIGHT,
color=green):
> display(p1,p2,titulo1,titulo2);
> fin;
fin
27
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
Variables subindicadas, vectores y matrices
> restart;
En MAPLE pueden utilizarse también vectores y matrices (y en general
variables subindicadas). La forma general de definir una variable subindicada
es a través del comando:
array(rango primer índice, rango 2º índice, ..., rango k-ésimo índice)
Por ejemplo:
> C:=array(-1..2,0..3,1..5);
C := array( -1 .. 2, 0 .. 3, 1 .. 5, [ ] )
La variable C representaría una variable que depende de tres índices (lo que
llamaremos una hipermatriz de tres índices). El primero de ellos toma valores
comprendidos entre -1 y 2. El segundo toma valores comprendidos entre 0 y 3.
Finalmente el tercero de los índices puede tomar valores comprendidos entre 1
y 5.
En alguna de las prácticas posteriores utilizaremos variables subindicadas
generales y aprenderemos más sobre ellas. De momento nos centraremos
simplemente en dos tipos de variables subindicadas:
- los vectores: variables subindicadas con un solo subíndice cuyo valor
inferior es 1
- las matrices: variables subindicadas con 2 subindices en los que el valor
inferior de cada uno de ellos es 1.
VECTORES
Puedes definirlos como un caso particular del comando array( )
La instrucción siguiente define un vector v de 3 componentes:
> v:=array(1..3);
v := array( 1 .. 3, [ ] )
Si quieres dar valor a las componentes del vector puedes añadir tras la
especificación de dimensiones los valores de cada elemento encerrados entre
corchetes y separados por comas
> v:=array(1..3,[1.5,2, -3]);
v := [ 1.5, 2, -3 ]
Para dirigirte a una componente cualquiera de un vector basta con escribir el
nombre del vector seguido del valor del índice de la componente encerrado
entre corchetes:
> v[1];
1.5
Otra forma de definir un vector es con el comando vector( ). Con este
comando sólo debes especificar el valor superior del índice (pues, a diferencia
de lo que sucede con el comando array( ), ahora se asume que el inferior es
siempre 1).
28
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
> w:=vector(3,[-1, 2.5, -3.3]);
w := [ -1, 2.5, -3.3 ]
> w[3];
-3.3
MATRICES
Las matrices también puedes definirlas como caso particular del comando
array()
> A:=array(1..2,1..3);
A := array( 1 .. 2, 1 .. 3, [ ] )
Si quieres dar valor a los elementos de la matriz puedes añadir tras la
especificación de dimensiones los valores de cada elemento encerrando los
valores de los elementos de cada fila entre corchetes separados por comas y
separando cada fila de la siguiente por una coma y encerrando todas las filas
entre corchetes. Veámoslo con algún ejemplo:
> A:=array(1..2,1..3,[[2,-7,4],[5,8,-11]]);
2 -7
4⎤
A := ⎢⎢⎡
⎥⎥
⎣5 8 -11⎦
> B:=array(1..3,1..3,[[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
⎡ 1 2 3⎤
⎢
⎥
B := ⎢⎢ 4 5 6⎥⎥
⎢⎢
⎥⎥
⎣ 7 8 9⎦
Otra forma de definir matrices es con el uso del comando matrix( ). En este
caso le valor inferior de cada índice se asume como 1 y no debe especificarse.
Tampoco es necesario (aunque puede hacerse) separar ahora las filas de las
matrices. Veamos algún ejemplo:
> AA:=matrix(2,3,[2,-7,4,5,8,-11]);
2 -7
4⎤
AA := ⎢⎢⎡
⎥⎥
⎣5 8 -11⎦
> BB:=matrix(3,3,[[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
⎡ 1 2 3⎤
⎥
⎢
BB := ⎢⎢ 4 5 6⎥⎥
⎥⎥
⎢⎢
⎣ 7 8 9⎦
Operaciones elementales entre vectores y matrices
Los operadores aritméticos para las operaciones matriciales y vectoriales son
los siguientes:
- Suma +
- Resta - Producto de matrices &*
- Producto de escalar por matriz *
29
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
Estos operadores producen un resultado que se deja indicado. Si se quiere ver
debe utilizarse el comando evalm( ) referido a la operación correspondiente.
Ilustrémoslo con algunos ejemplos:
> A+AA;
A + AA
> evalm(%);
8⎤
⎡ 4 -14
⎥⎥
⎢⎢
⎣10 16 -22⎦
> 7*B;
7B
> P:=evalm(%);
⎡ 7 14 21⎤
⎥
⎢
P := ⎢⎢28 35 42⎥⎥
⎥⎥
⎢⎢
⎣49 56 63⎦
> evalm(A&*B);
1
0⎤
⎡ 2
⎥⎥
⎢⎢
⎣-40 -38 -36⎦
> evalm(BB&*v);
[ -3.5, -2.0, -0.5 ]
> evalm(w&*B);
[ -14.1, -15.9, -17.7 ]
Obviamente las operaciones anteriores sólo serán realizadas si las
dimensiones de las matrices y vectores correspondientes son compatibles. En
caso contrario MAPLE nos informa del errror debido a la incompatibilidad de
dimensones
> evalm(A&*AA);
Error, (in linalg[multiply]) non matching dimensions for vector/matrix
product
> evalm(A+B);
Error, (in linalg[matadd]) matrix dimensions incompatible
Otras operaciones clásicas matriciales
Otras operaciones típicas del álgebra matricial (inversión, trasposición, cálculo
de determinantes, etc...) pueden realizarse con MAPLE si se activa la librería
linalg en la que están recogidas numerosos procedimientos del álgebra lineal.
Para ello debe escribirse with(linalg).
> with(linalg):
Warning, the protected names norm and trace have been redefined and
unprotected
Ahora podemos hallar el determinante de una matriz cuadrada con el comando
det( ):
30
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
> P:=matrix(4,4,[1.1, -2, 4.5, 2.1, -2.,sqrt(3.),11., 1sqrt(2.),0.,4.2,2., 1.,1.,2.25, 1/4.,-3]);
1.1
-2
4.5
2.1
⎡
⎤
⎢
⎥
⎢ -2. 1.732050808
⎥
11.
-0.414213562
⎢
⎥
P := ⎢
⎥
⎢ 0.
⎥
4.2
2.
1.
⎢
⎥
⎢ 1.
⎥
2.25
0.2500000000
-3
⎣
⎦
> dP:=det(P);
dP := 442.5341969
hallar inversas de matrices cuadradas con el comando inverse( ) :
> P1:=inverse(P);
-0.1628800678 0.07664039009 0.2915596279 ⎤
⎡ 0.3478911241
⎢
⎥
⎢-0.05497524777 -0.01485760885 0.2015664618 0.03075755484⎥
⎢
⎥
P1 := ⎢
⎥
⎢ 0.07495860885 0.06136248948 -0.01118437560 0.04027050923⎥
⎢
⎥
⎢ 0.08097882295 -0.06032302178 0.1757896118 -0.2097227488⎥
⎣
⎦
hallar la traza de una matriz cuadrada con el comando trace( ) :
> trace(P);trace(P1);
1.832050808
0.1121263908
hallar los valores propios de una matriz cuadrada con el comando
eigenvalues( ) :
> eigenvalues(P);
8.608648519, -4.578634291 + 0.7931481829 I, -4.578634291 − 0.7931481829 I,
2.380670870
hallar los vectores propios de una matriz cuadrada con el comando
eigenvectors( ) que nos proporciona para cada valor propio su
multiplicidad y una base del subespacio de vectores propios a él asociado.
> eigenvectors(P);
[ -4.578634289 + 0.7931481837 I, 1, { [ 1.314508758 + 0.7013901454 I,
1.153646261 + 0.1221508983 I, -0.4942247681 + 0.0853964122 I,
-1.661722312 − 1.466819024 I ] } ], [ -4.578634289 − 0.7931481837 I, 1, { [
1.314508758 − 0.7013901454 I, 1.153646261 − 0.1221508983 I,
-0.4942247681 − 0.0853964122 I, -1.661722312 + 1.466819024 I ] } ],
[ 8.608648498, 1, { [ 0.1577165174, 0.7967066662, 0.5334920921, 0.1794937229 ] } ],
[ 2.380670869, 1, { [ -1.185796880, 0.0316604336, -0.2219209106, -0.2174526487 ] } ]
trasponer una matriz con el comando transpose( ) :
> AT:=transpose(A);
5⎤
⎡2
⎢
⎥
AT := ⎢⎢-7
8⎥⎥
⎢⎢
⎥⎥
⎣ 4 -11⎦
31
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
o hallar el rango de una matriz con el comando rank( ) :
> rank(P1);rank(B);rank(AA);
4
2
2
También puedes realizar operaciones con vectores que están programadas en
la librería linalg. Por ejemplo puedes calcular el producto escalar de vectores
con el comando dotprod( ):
> uw:=dotprod(v,w);
uw := 13.4
o el producto vectorial de vectores de 3 componentes con el comando
> crossprod(v,w);
[ 0.9, 7.95, 5.75 ]
> crossprod(w,v);
[ -0.9, -7.95, -5.75 ]
Muchos otros comandos se encuentran en la librería linalg de MAPLE. Algunos
de ellos los utilizaremos en prácticas posteriores.
> fin;
fin
32
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
EJERCICIOS PROPUESTOS
Primer ejercicio propuesto (Gráficas de funciones de una
variable y resolución de ecuaciones).
> restart;
> with(plots):with(linalg):
a)Representa, para valores del argumento "x" comprendidos entre 0 y 20, en
un una misma gráfica los grafos de las funciones:
f(x) = exp(sen(x))
g(x) = arcotangente(x)
El grafo de la primera de las funciones debe dibujarse en color rojo y el
grafo de la segunda función en color azul.
b) Dibuja, en el intervalo [-Pi, Pi] y para valores comprendidos entre -5 y 5, la
gráfica de la función f(x) definida en el apartado anterior y en verde, la de la
función h(x) = 7.x. A la vista de las gráficas ¿cuántas soluciones tendrá la
ecuación f(x) = h(x)?. Determina, si existe, alguna de ellas.
c) Sabiendo que el comando sum(i*i, i = 0..n) realiza la suma de los
cuadrados de los n primeros enteros no negativos, define la función, de
argumento entero no negativo, dada por:
n
f := n →
∑ i2
i=0
y dibújala entre 0 y 10.
Segundo ejercicio propuesto (Operaciones matriciales).
1º) Define las siguientes matrices y vectores:
−1.732050808 4.481689070⎤
1.2
⎡
⎢
⎥
⎥
−4.
A := ⎢⎢1.945910149 1.618033988
⎥
⎢⎢
⎥⎥
.8660254037
−9.
1.44
⎣
⎦
⎡1
⎢
⎢2
B := ⎢⎢
⎢3
⎢
⎢4
⎣
5 9 13⎤
⎥
6 10 14⎥⎥
⎥
7 11 15⎥
⎥
8 12 16⎥⎦
1.1 −1. ⎤
⎡ 0.
⎢
⎥
C := ⎢⎢3.27 22.3 2.73⎥⎥
⎢⎢
⎥⎥
⎣ 4.2 −7. 5.4 ⎦
v := [ 1., −2., 4. ]
33
Programación y Métodos Numéricos.
C. Conde, A. Hidalgo y A. López
Práctica 1: Introducción a MAPLE
ETSI Minas de la Universidad Politécnica de Madrid
⎛1⎞
⎡
⎜⎜ ⎟⎟ ⎤
⎝2⎠ ⎥
⎢ ⎛⎜⎜ 1 ⎞⎟⎟
⎢ ⎝ 2 ⎠ ( −2 ) 1 2 ⎥
⎥
w := ⎢⎢ 2 , e ,
2 ⎥⎦
⎣
u := [ −1., 2.2, 3.17, 1.25 ]
2º) Calcula las matrices: P = A + C,
Q = A - C,
R = A.C y S = 7.C
3º) Calula las inversas de P, Q y B. Determina el rango de estas tres matrices.
4º) Halla el vector a = A.v y el vector c = w.C y determina el producto escalar
de los vectores a y c. Determina también el producto vectorial de a por c.
5º) Determina el vector b = u.B y calcula, si es posible, el producto escalar de
los vectores a y b.
6º) Evalúa los determinantes de las matrices A, B y C. Calcula también sus
matrices traspuestas.
7º) Calcula los valores y vectores propios de la matriz A.
NOTA: Opérese con 8 dígitos significativos.
34
Descargar