m3 bucles en maple

32
Departamento de Matemática Aplicada y Métodos Informáticos Universidad Politécnica de Madrid Ingeniería de Minas BUCLES EN MAPLE BUCLES EN MAPLE Prof. Carlos Conde L Prof. Carlos Conde L á á zaro zaro Prof. Arturo Hidalgo L Prof. Arturo Hidalgo L ó ó pez pez Prof. Alfredo L Prof. Alfredo L ó ó pez pez Marzo, 2007

Upload: maria-ignacia-belen-piccardo

Post on 21-Apr-2015

85 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

BUCLES EN MAPLEBUCLES 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

Page 2: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

DefiniciónDefinición

Un cálculo que se repite varias veces, se programamediante una estructura denominada: BUCLE

Para vc desde vinic hasta vfin con incremento incr hacer

Fin del bucle Sentencias que se repiten

vc: variable de controlvinic: valor inicial de la variable vcvfin: valor final de la variable vcincr: incremento con el que se pasa desde vinic hasta vfin

Page 3: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Proceso seguido en un bucleProceso seguido en un bucle

vc vinic

vc vinic + incr

vc vinic + 2.incr

...

hasta que vc salga del rango [vinic .. vfin]

sentencias

sentencias

sentencias

Page 4: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Programación en MAPLEProgramación en MAPLE

> for vc from vinic to vfin by incr do

od;

NOTA: by incr es opcional cuando incr = 1

Sentencias de MAPLE que se repiten

Page 5: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejemplo 1Ejemplo 1

Ejemplo: Calcular el producto escalar de los vectoresu=(u1, u2, u3) y v=(v1, v2, v3)

a) Sin utilizar bucles:[> u := vector(3): v=vector(3):[> pe := u[1]*v[1] + u[2]*v[2] + u[3]*v[3];

b) Utilizando bucles:[> u := vector(3): v=vector(3): pe:=0:> for i from 1 to 3 by 1 do

pe := pe + u[i]*v[i];od;

Page 6: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejemplo 1 (cont.)Ejemplo 1 (cont.)

pe = u1v1 + u2v2 + u3v3

i=3 pe = pe + u3v3 ( = u1v1 + u2v2 + u3v3)

El proceso seguido es el siguiente:

pe = 0i=1 pe = pe + u1v1 ( = 0 + u1v1)

i=2 pe = pe + u2v2 ( = u1v1 + u2v2)

Page 7: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Los BernoulliLos Bernoulli

Johan1667-1748

Jakob1654-1705

Daniel 1700-1782

…………

Ambos hermanos fueron pioneros en el desarrollo del cálculo diferencial, asícomo otras ramas de la Matemática.

Hijo de Johan. Fue,en opinión de muchos

Autores, el más brillantede la saga Bernoulli.

Además de sus numero-sas contribuciones ala Matemática, fue

pionero en hidrodinámicadescubriendo la

ecuación de Bernoulliestudiada en Mecánica

de Fluidos.

Entre otros temas, analizódiferentes curvas. Y, entre ellas,su preferida fue la llamada “Espiral Milagrosa (o de Bernoulli)”Dejó dispuesto que en la lápida de su

tumba se le grabase una espiral milagrosa.Pero el escultor se equivocó y le grabó

una espiral de Arquímedes. Te proponemosque repares ese error.

Page 8: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio 1 (La espiral milagrosa) *Ejercicio 1 (La espiral milagrosa) *

(*) o de Jakob Bernoulli

θ

V

ω

ρ

θ = (1/k)·ln(ρ/C)

k = 0.1; V = 50; C = 0.01 ; t = 0, 0.005, 0.01, 0.015, ....., 1

ρ = V.t

y(t) = ρ·sen(θ)x(t) = ρ·cos(θ)

Dibujar la curva para:

Page 9: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio 1 (cont.)Ejercicio 1 (cont.)

ti = ti-1 + Δt (i = 1, 2, …, n)t0 = 0 tn = 1… …

Δt = tn – t0

nn = 200

n ← 200 k ← 0.1 v ← 50 c ← 0.01x0 ← 0 y0 ← 0 t ← 0

Δt ← 1./n

Para i desde 1 hasta n con paso 1 HACER:

Fin del bucle

1) t ← t + Δt 2) ρ← v·t 3) θ← ln(ρ/c)/k

4) xi ← ρ ·cos(θ) 5) yi ← ρ ·sen(θ)

Page 10: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio 1 (cont.)Ejercicio 1 (cont.)

[> restart:[> with(plots):[> n:=200: k:=0.1: v:=50: c:=0.01:[> x:=array(0..n): y:=array(0..n):[> x[0]:=0.: y[0]:=0.: t:=0.:[> delta_t:=1/n:

> for i from 1 to n by 1 dot:=t+delta_t:rho:=v*t:theta:=ln(rho/c)/k:x[i]:=rho*cos(theta):y[i]:=rho*sin(theta):

od:

Page 11: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Algo más sobre gráficos en MAPLE (1)Algo más sobre gráficos en MAPLE (1)

Hasta ahora hemos utilizado el comando plot de la siguiente manera:

Si queremos representar, por ejemplo, la funciónf(x)=x2 en el intervalo [0,2], hacemos:

[> f:=x->x^2;[> plot(f, 0..1, opciones);

o bien:[> f(x):=x^2;[> plot(f(x), x=0..1, opciones);

Page 12: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Algo más sobre gráficos en MAPLE (2)Algo más sobre gráficos en MAPLE (2)

que da como resultado:

Page 13: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Algo más sobre gráficos en MAPLE (3)Algo más sobre gráficos en MAPLE (3)

Pero, ¿Cómo podemos representar un conjunto de puntos (x[i], y[i]), i=1,2,…,n?

Volvamos al ejemplo. Si ejecutamos:

[> f:=x->x^2;[> a:=plot(f, 0..1, opciones);

Page 14: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Algo más sobre gráficos en MAPLE (4)Algo más sobre gráficos en MAPLE (4)

a:=PLOT(CURVES([[0.,0.],[0.0217…,0.00047…],[0.0407…,0.00166…]…[1.,1.]],COLOUR(RGB,1.0,0.,0.)),AXESLABELS(“”,””),VIEW(0. ..1.,DEFAULT))

obtenemos:

Los números:

[[0.,0.],[0.0217…,0.00047…],[0.0407…,0.00166…]…[1.,1.]]

Forman una SECUENCIA generada automáticamente por el comando plot a partir de f.

Page 15: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Algo más sobre gráficos en MAPLE (5)Algo más sobre gráficos en MAPLE (5)

Esta secuencia se puede generar manualmente, resultando la siguiente forma del comando plot:

[>plot(secuencia, opciones);

¡ Se escribe entre corchetes para que el resultado sea una LISTA !

Para crear la secuencia de puntos se utiliza la expresión:

donde f es una expresión y vc una variable que varíaentre vinic y vfin.

[> nombre:=[seq(f(vc), vc=vinic..vfin)]

Page 16: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Algo más sobre gráficos en MAPLE (6)Algo más sobre gráficos en MAPLE (6)

El comando:

[> pointplot(secuencia, opciones);

permite dibujar una secuencia de puntos aislados

Page 17: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio 1 (cont.)Ejercicio 1 (cont.)

[> dibu:=[seq([x[i],y[i]],i=1..n)]:[> plot(dibu, scaling=CONSTRAINED);

Page 18: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio 1 (cont.)Ejercicio 1 (cont.)[> puntos:=[seq([x[i],y[i]],i=0..n)];[> pointplot(puntos,color=blue,

scaling=CONSTRAINED);

Page 19: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio 1 (cont.)Ejercicio 1 (cont.)

Volver a ejecutar el programa con los datos:n = 5000, v = 25 , k = -0.1 , c = 0.1

Page 20: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio 2Ejercicio 2

= ⋅ =∫1 n x-1

n 0A x e dx (n 0,1,...)

⎤= ⋅ − ⋅ = − ⋅⎦ ∫11n x-1 n-1 x-1

n n-10 0A x e n x e dx 1 n A

La integral:

puede calcularse integrando por partes:

= ⋅ = − = =∫ ∫1 1x-1 x-1

1 0 0

1A x e dx 1 e dx 0.367879441...e

NOTA: El planteamiento teórico de este ejemplo se ha tomado de la referencia: SHAMPINE, L.F., ALLEN Jr., R.C. and PRUESS, S. (1997) Fundamentals of numerical computing. Ed. John Wiley & Sons, Inc.

Page 21: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio 2 (cont.)Ejercicio 2 (cont.)

Determinar el efecto de los errores de redondeo sicalculamos con una precisión de 7 dígitos y suponemosque el cálculo realizado con una precisión de 20 dígitoses el valor exacto.

Page 22: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio 2 (cont.)Ejercicio 2 (cont.)

0AE 1=1) 1- e 0 = 0.63 A 22) 1206

3) eabs0 = |AE0 – A0| 4) errel0 = |eabs0 / AE0|

−− ii i 115) E AEiA = − ii i-116) A= iA

−i iieabs AE=7 A) ii

i

8 e) abse el =rAE

r

Para i desde 1 hasta n con paso 1 HACER:

Fin del bucle

Notas: Tomar n = 10. Calcular 6) con 7 dígitos y todo lo demás con 20.

Page 23: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio 2 (cont.)Ejercicio 2 (cont.)[> restart:[> with(plots):[> n:=10: ndigex:=20: ndigap:=7:[> AE:=array(0..n): A:=array(0..n):[> eabs:=array(0..n): errel:=array(0..n):[> AE[0]:=evalf(1-1/exp(1),ndigex):[> A[0]:=evalf(1-1/exp(1),ndigap):[> eabs[0]:=evalf(abs(AE[0]-A[0]),ndigex):[> erel[0]:=evalf(abs(eabs[0]/AE[0]),ndigex):[> for i from 1 to n by 1 do

AE[i]:= evalf(1-i*AE[i-1],ndigex):A[i] := evalf(1-i*A[i-1],ndigap):eabs[i]:=evalf(abs(AE[i]-A[i]),ndigex):erel[i]:=evalf(abs(eabs[i]/AE[i]),ndigex):

od:

Page 24: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio 2 (cont.)Ejercicio 2 (cont.)

[> d1:=[seq([i,AE[i]],i=1..n)]:[> d2:=[seq([i,A[i]],i=1..n)]:[> d3:=[seq([i,eabs[i]],i=1..n)]:[> d4:=[seq([i,erel[i]],i=1..n)]:[> dibu1:=plot(d1,color=red):[> dibu2:=plot(d2,color=blue):[> dibu3:=plot(d3,color=red):[> dibu4:=plot(d4,color=blue):[> display(dibu1,dibu2);[> display(dibu3,dibu4);

Page 25: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio 2 (cont.)Ejercicio 2 (cont.)

ExactaAproximada

Error absolutoError relativo

Page 26: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio propuesto 1Ejercicio propuesto 1

Sea una función f(x) derivable en todos los puntos del intervalo real [a,b].Su derivada primera en x* є [a,b] se puede aproximar mediante:

( ) ( ) ( )1 0

1 0

' *f x f x

f xx x−

=−

Sean los puntos de [a,b] equidistantes: 0 1 2 Nx a x x x b= < < < < =…

( ) ( ) ( )1' , 0,1, , 1i ii

f x f xf x i N

h+ −

= = −… b ahN−

=con

Dada la función: ( ) ( )cos( ) sin 22xf x x= ⋅

a) Calcular f’(xi), i = 0, 1, 2, …, N-1, con N = 50 y [a,b] = [-π, π]

b) Representar conjuntamente f(x) y su primera derivada aproximada

Page 27: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio propuesto 1Ejercicio propuesto 1

[> restart:[> with(plots):[> f:=x->cos(x/2)*sin(2*x);[> a:=evalf(-Pi); b:=evalf(Pi); N:=50; h:=(b-a)/N;[> x:=array(0..N,[]): df:=array(0..N,[]):x[0]:=a:[> for i from 0 to N-1 do

x[i+1]:=x[i]+h;df[i]:=evalf((f(x[i+1])-f(x[i]))/h):

od:[> ptos:=[seq([x[i],df[i]], i=0..N)]:[> dib1:=plot(ptos,color=blue,thickness=2,

legend="derivada"):[> dib2:=plot(f,-Pi..Pi, thickness=2,color=black,

legend="función"):[> display(dib1,dib2);

Page 28: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio propuesto 1Ejercicio propuesto 1

Page 29: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio propuesto 2Ejercicio propuesto 2

( )iv 1 3 , i 0,1,2[i] ,...,n= − =La sucesión:

puede aproximarse mediante:

x[0] = 1; 3x[1] 1 ;= − x[i] = 2·(x[i-1] + x[i-2]), (i = 2, 3, ..., n)

Calcúlense los primeros 51 valores exactos y represén-tese en una misma gráfica de puntos los 20 primerosvalores exactos y aproximados utilizando:

a) 8 dígitos significativosb) 24 dígitos significativos

Page 30: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio propuesto 2Ejercicio propuesto 2[> restart:[> with(plots):[> n:=50: ndig[1]:=8: ndig[2]:=24:[> v:=array(0..n): x:=array(0..n): [> v[0]:=1.: x[0]:=1.:[> for j from 1 to 2 by 1 do

v[1]:=evalf(1-sqrt(3),ndig[j]): x[1]:=evalf(1-sqrt(3),ndig[j]):for i from 2 to n by 1 do

v[i]:=evalf((1-sqrt(3))^i,ndig[j]):x[i]:=evalf(2*(x[i-1] + x[i-2]),ndig[j]):

od:ptos1:=[seq([i,v[i]], i=0..20)]:ptos2:=[seq([i,x[i]], i=0..20)]:dibu1[j]:=plot(ptos1,color=red):dibu2[j]:=plot(ptos2,color=blue):

od:[> display(dibu1[1],dibu2[1]);[> display(dibu1[2],dibu2[2]);

Page 31: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas

Ejercicio propuesto 2Ejercicio propuesto 2

ExactaAproximada

8 dígitos

ExactaAproximada

24 dígitos

Page 32: m3 Bucles en Maple

Departamento de Matemática Aplicada y Métodos Informáticos

Universidad Politécnica de Madrid Ingeniería de Minas