m3 bucles en maple - opencourseware de la...
Post on 09-Jul-2018
232 Views
Preview:
TRANSCRIPT
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
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
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
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
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;
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)
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.
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:
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(θ)
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:
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);
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:
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);
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.
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)]
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
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);
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);
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
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.
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.
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.
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:
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);
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
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
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);
Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
Ejercicio propuesto 1Ejercicio propuesto 1
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
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]);
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
Departamento de Matemática Aplicada y Métodos Informáticos
Universidad Politécnica de Madrid Ingeniería de Minas
top related