0Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
Procedimientos en MAPLEProcedimientos en MAPLE
Prof. Carlos Conde LProf. Carlos Conde LáázarozaroProf. Arturo Hidalgo LProf. Arturo Hidalgo Lóópezpez
Prof. Alfredo LProf. Alfredo Lóópezpez
Marzo, 2007
1Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
Plan de exposiciónPlan de exposición
1º. ¿Qué es un Procedimiento en MAPLE?
2º. ¿Cómo se ESCRIBE un Procedimiento en MAPLE?
3º. ¿Cómo se GUARDA un Procedimiento en MAPLE?
4º. ¿Cómo se UTILIZA un Procedimiento en MAPLE?
6º. Un ejemplo.
5º. Algunas normas sobre procedimientos que debes conocer
2Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
Un PROCEDIMIENTO es un subprograma que calcula el valor de una o varias “variables de salida” en función delos valores que se asignarán (cuando se llame al proce-dimiento) a una o varias “variables de entrada”.
Se llaman ARGUMENTOS del procedimiento al conjunto de las variables , ya sean de “entrada” o “salida”, que seutilizan en el procedimiento.
1. ¿Qué es un Procedimiento en MAPLE?1. ¿Qué es un Procedimiento en MAPLE?
3Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
Nombre_procedimiento:= proc ( argumentos )
Sentenciasde MAPLE
(asignaciones,bloques IF,
bucles,.... )
end proc;
El resultado de la última operación que se realice, también es un argumento de salida (sale en Nombre_procedimiento”).
(end proc puede remplazarse por end;)
2. ¿Cómo se escribe un Procedimiento en MAPLE? (1/2)
2. ¿Cómo se escribe un Procedimiento en MAPLE? (1/2)
4Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
Ejemplo:3 5 7 9
( ) ...3! 5! 7! 9!x x x xsen x x= − + − + − ≈
2 2 2 21 1 1 1· 1 · · · ·3! 5! 7! 9!
x x x x x⎛ ⎞⎛ ⎞⎛ ⎞⎛ ⎞⎛ ⎞≈ − − − −⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠⎝ ⎠⎝ ⎠⎝ ⎠⎝ ⎠
> seno9:=proc(x)x*(1.-x^2*(1/6.-x^2*(1/120.-x^2*(1/5040.-x^2*(1/362880)))))end proc;
2. ¿Cómo se escribe un Procedimiento en MAPLE? (2/2)
2. ¿Cómo se escribe un Procedimiento en MAPLE? (2/2)
5Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
NombreficheroDirectorio
> save Nombre_procedimiento, “Dirección y nombre del fichero.m”
Un procedimiento debe guardarse, para poder ser llamadoposteriormente, en un fichero con extensión “.m”
Recomendación: Asignar al nombre del fichero el mismonombre del procedimiento. Y elegir nombres que faci-liten la identificación del proceso programado.
Ejemplo:
> save seno9,"C:/Profes/PMN/C02_03/seno9.m";
> save seno9,"A:/seno9.m";
Nombreprocedimiento
3. ¿Cómo se guarda un Procedimiento ?3. ¿Cómo se guarda un Procedimiento ?
6Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
Cuando desde un programa se desea usar un procedimientoalmacenado en un fichero “.m”:
1º) Se lee el fichero
2º) (opcional)Se dan valores a los argumentos de entrada
3º) Se ejecuta el procedimiento
> read “Dirección y nombre del fichero.m”
Ej: > read "C:/Profes/PMN/C02_03/seno9.m";
Ej: > x:=0.27
> resultado:= Nombre_procedimiento (expresiones + variables)
Dan valor a lasvariables de entrada
Nombres de variables de salida
4. ¿Cómo se usa un Procedimiento? (1/2)4. ¿Cómo se usa un Procedimiento? (1/2)
7Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
Ejemplo:
[> restart;[> read "A:/seno9.m";[> alpha:=evalf(Pi/2.37);
α:= 1.325566521[> v:=seno9(0.5*alpha-1.);
v:= -.3308618720
4. ¿Cómo se usa un Procedimiento? (2/2)4. ¿Cómo se usa un Procedimiento? (2/2)
8Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
1ª) Las variables de salida de un procedimiento pueden tener nombre diferente al ser usadas como parámetrosdel procedimiento y al ser utilizado el mismo.Ejemplo:[> int_simpson:= proc(a, b, f, vint)
......end proc:
[> int_simpson(linf, lsup,g,result):
Pero cada parámetro del procedimiento y cada expresióno variable con las que se corresponda han de ser del mismotipo (número, string, array, función, ....).
5. Algunas normas sobre procedimientos (1/8)5. Algunas normas sobre procedimientos (1/8)
9Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
2ª) Las variables que tengan asignado algún valor en elmomento de llamar a un procedimiento son conside-radas como variables de entrada. Las variables de salida deben ser pasadas al procedimiento sin tenerningún valor asignado.
3ª) El valor de las variables de entrada no puede ser modifi-cado en el procedimiento.
4ª) Las variables que se utilicen en un procedimiento y noformen parte de sus argumentos son consideradas como variables locales y su valor no es transmitido alprograma que llame al procedimiento.
5. Algunas normas sobre procedimientos (2/8)5. Algunas normas sobre procedimientos (2/8)
10Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
5ª) Las variables locales pueden ser definidas, tras la primera línea del procedimiento, usando la sentencia
local lista de variables locales:
5. Algunas normas sobre procedimientos (3/8)5. Algunas normas sobre procedimientos (3/8)
11Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
> int_simpson:=proc(a,b,f,valor)local pmed:pmed:=(a+b)/2.:valor:=(b-a)*(f(a)+4.*f(pmed)+f(b))/6.:
end proc:
Ej:
> save int_simpson,"A:/int_simpson.m";
> restart;> read "A:/int_simpson.m";> g:=x->4*x^2:> int_simpson(0.,1.,g,resultado):> resultado;
1.333333334
5. Algunas normas sobre procedimientos (4/8)5. Algunas normas sobre procedimientos (4/8)
12Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
6ª) Variables usadas en un procedimiento y que no formanparte de sus argumentos pueden ser declaradas comovariables globales. Su valor (y su nombre) se transmitenentonces al programa que llame al procedimiento
5. Algunas normas sobre procedimientos (5/8)5. Algunas normas sobre procedimientos (5/8)
13Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
> int_simpson:=proc(a,b,f,valor)global pmed:pmed:=(a+b)/2.:valor:=(b-a)*(f(a)+4.*f(pmed)+f(b))/6.:
end proc:
Ej:
> save int_simpson,"A:/int_simpson.m";
> restart;> read "A:/int_simpson.m";> g:=x->4*x^2:> int_simpson(0.,1.,g,resultado):> resultado;pmed;
1.333333334.500000000
5. Algunas normas sobre procedimientos (6/8)5. Algunas normas sobre procedimientos (6/8)
14Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
7ª) Cuando se lea un procedimiento en un programa, sepuede visualizar el proceso programado usando:
[> print (Nombre_procedimiento);Ej:
> restart;> read "A:/int_simpson.m";> print (int_simpson);
, , ,a b f valorproc ( )global ;pmeddescription ;"calculo de una integral por el método de Simpson"
:= pmed × + .5000000000 a ×.5000000000 b; := valor ×.1666666667 ×( ) − b a ( ) + + ( )f a ×4. ( )f pmed ( )f b
end proc
Nota: description sirve para escribir comentarios
5. Algunas normas sobre procedimientos (7/8)5. Algunas normas sobre procedimientos (7/8)
15Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
8ª) Un procedimiento puede llamar a otros procedimientos(que se hayan leído previamente).
5. Algunas normas sobre procedimientos (8/8)5. Algunas normas sobre procedimientos (8/8)
16Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
Dados: x, maxiter y ε
MIENTRAS ( ( j < maxiter) Y ( | x – y | > ε ) ) HACER:
FIN BUCLE CONDICIONAL
( )( )
ff
x -yxx
←′
.f( ) - .f(y yy
)f( ) - f
z x x(x)
←1º) 2º) x y
3º) y z 4º) j j+1
j 1
Dada la función f(x)
6. Ejemplo: Algoritmo del método de la secante (1/3)6. Ejemplo: Algoritmo del método de la secante (1/3)
17Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
> secante:=proc(xinic,maxiter,eps,f,z,tol,iter)local aux,x,y,j:x:=xinic: y:= x-f(x)/D(f)(x):j:= 1:while ((j<maxiter) and (abs(x-y)<eps)) do
aux := (x*f(y)-y*f(x))/(f(y)-f(x)):x := y:y := aux:j := j+1:
od:z:=aux:tol:=abs(x-y):iter:=j:
end:
6. Ejemplo: Procedimiento sobre el método de la secante (2/3)
6. Ejemplo: Procedimiento sobre el método de la secante (2/3)
18Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
Almacenamiento del procedimiento[> save secante,"A:/secante.m":
[> restart;[> read "A:/secante.m":[> maxiter:=20:eps:=10.^(-4):f:=x->x^3+4.*x^2+x-10.:x:=0.:
[> secante(x,maxiter,eps,f,sol,tol,iter):[> evalf(sol);tol;iter;
1.284277548.000015211
13
Uso del procedimiento
6. Ejemplo: Almacenamiento y uso del procedimiento del método de la secante (3/3)
6. Ejemplo: Almacenamiento y uso del procedimiento del método de la secante (3/3)
19Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
Escribir (y salvar) un procedimiento, llamado soporte_ch, que calcule los (n+1) puntos de un soporte de Chebyshevdados por la fórmula:
(2· 1)·cos ·2 2 (2· 2)i
a b b a ixn
π⎛ ⎞+ − +
= + ⎜ ⎟+⎝ ⎠(i = 0, 1, ..., n)
(Datos: a, b, n) (Resultados {xi} (i = 0, .., n)
Escribir (y salvar) un procedimiento, llamado polbasLgr1, que calcule el i-ésimo polinomio de base de Lagrange en un soporte dado
0
( )( )
( )
nj
ij i jj i
x xL x
x x=≠
−=
−∏(Datos: n, {xk} (k = 0, ..., n), i) (Resultado: función Li(x) )
7. Ejercicio propuesto (1/2)7. Ejercicio propuesto (1/2)
20Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
Escribir (y salvar) un procedimiento, llamado polbasLgr, que calcule TODOS los polinomios de base de Lagrangeen un soporte dado. Para ello utilizará el procedimientoanterior polbasLgr1.
(Datos: n,{xk}(k = 0,..., n)) (Resultado: funciones Li(x) (k = 0,..., n))
Escribir un programa que usando los procedimientos ante-riores calcule el polinomio interpolador de Lagrange de lafunción de Runge f(x) = (1+x2)-1 sobre un soporte de Chebyshev formado por 9 puntos del intervalo [-6, 6].
0
( ) ( )· ( )n
i ii
p x f x L x=
= ∑
7. Ejercicio propuesto (2/2)7. Ejercicio propuesto (2/2)