06.05.2013 Views

INTEGRALES ELÍPTICAS COMPLETAS Dado un parámetro m ∈ [0,1]

INTEGRALES ELÍPTICAS COMPLETAS Dado un parámetro m ∈ [0,1]

INTEGRALES ELÍPTICAS COMPLETAS Dado un parámetro m ∈ [0,1]

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

PRÁCTICA 3: <strong>INTEGRALES</strong> <strong>ELÍPTICAS</strong> <strong>COMPLETAS</strong><br />

TÉRMINO DE ENTREGA: 2008/10/16<br />

<strong>Dado</strong> <strong>un</strong> <strong>parámetro</strong> m <strong>∈</strong> [0, 1], las integrales<br />

1<br />

K(m) =<br />

0<br />

dt<br />

(1 − t 2 )(1 − mt 2 ) , E(m) =<br />

<br />

1 1 − mt2 dt<br />

1 − t2 se denominan integrales elípticas completas de primera y seg<strong>un</strong>da especie, respectivamente.<br />

Para calcularlas se suele usar el método de la media aritmética geométrica (AGM).<br />

Empezamos explicando que la AGM de <strong>un</strong>a tripleta de números positivos (a0, g0, s0) se<br />

calcula generando <strong>un</strong>a sucesión de tripletas similares mediante las fórmulas de recurrencia:<br />

an = (an−1 + gn−1)/2 es la media aritmética de an−1 y gn−1,<br />

gn = √ an−1gn−1 es la media geométrica de an−1 y gn−1,<br />

sn = (an−1 − gn−1)/2 es la semidiferencia de an−1 y gn−1,<br />

para toda n ≥ 1. <strong>Dado</strong>s dos números positivos arbitrarios, su media geométrica siempre es<br />

menor o igual que su media arimética. Por tanto, gn ≤ an y sn ≥ 0 para toda n ≥ 1. Además,<br />

la sucesión (an)n≥1 es decreciente, la sucesión (gn)n≥1 es creciente y, finalmente, existe <strong>un</strong><br />

único número real α tal que<br />

lím<br />

n→+∞ an = α = lím<br />

n→+∞ gn.<br />

Diremos que α es la media aritmética geométrica de los números a0 y g0.<br />

A nivel práctico <strong>un</strong> algoritmo infinito es imposible. Por tanto, paramos cuando aN ≈ gN<br />

según <strong>un</strong>a precisión fijada previamente mediante <strong>un</strong>a tolerancia positiva tol. Así pues, el<br />

criterio de parada de este proceso infinito es que sN sea menor que la tolerancia tol.<br />

Por ejemplo, si a0 = 1, g0 = 1/9, s0 = 80/81 y tol= 10−6 , entonces<br />

n an gn sn<br />

0 1,000000000000000 0,111111111111111 0,993807989999906<br />

1 0,555555555555556 0,333333333333333 0,444444444444444<br />

2 0,444444444444444 0,430331482911935 0,111111111111111<br />

3 0,437387963678190 0,437331038058985 0,007056480766255<br />

4 0,437359500868587 0,437359499942425 0,000028462809603<br />

5 0,437359500405506 0,437359500405506 0,000000000463081<br />

y paramos el proceso en el quinto paso: N = 5.<br />

Una vez sabemos calcular AGMs, el algoritmo para calcular las integrales elípticas es:<br />

1. Inicializar: a0 = 1, g0 = √ 1 − m y s0 = √ m.<br />

2. Iterar: Calcular (an, gn, sn) para n = 1, . . . , N.<br />

3. Finalizar: K(m) ≈ π<br />

2aN<br />

y S(m) :=<br />

K(m) − E(m)<br />

K(m)<br />

0<br />

≈ 1<br />

2<br />

N<br />

n=0<br />

2 n s 2 n .<br />

Por tanto, retomando el ejemplo anterior, vemos que si m = 80/81 entonces<br />

K ≈ π/2a5 = 3,5915449997965 . . . ,<br />

S ≈ (s 2 0 + 2s 2 1 + 4s 2 2 + 8s 2 3 + 16s 2 4 + 32s 2 5)/2 = 0,7162485648803 . . . ,<br />

E = (1 − S)K ≈ 1,01910604798917 . . . .<br />

Queremos calcular el valor aproximado de las integrales elípticas completas K = K(m) y<br />

E = E(m) para cualquier <strong>parámetro</strong> m <strong>∈</strong> [0, 1] dado, con <strong>un</strong>a precisión fijada mediante <strong>un</strong>a<br />

tolerancia positiva tol.


Nombre del fichero: integralesKE.m<br />

Cabecera: f<strong>un</strong>ction [K,E]=integralesKE(m,tol)<br />

INPUT: m = <strong>parámetro</strong>, tol = tolerancia (valor por defecto 10 −10 ).<br />

OUTPUT: K = integral completa elíptica de primera especie, E = integral completa<br />

elíptica de seg<strong>un</strong>da especie. Además, queremos que E sea de cálculo opcional. Es decir,<br />

si efectuamos la llamada K = integralesKE(m, tol), se debe calcular tan sólo la integral<br />

de primera especie K.<br />

Control de errores: Si el <strong>parámetro</strong> m no está entre cero y <strong>un</strong>o, se debe:<br />

1. Mostrar <strong>un</strong> mensaje de error por pantalla,<br />

2. Asignar el valor NaN (Not a Number) a cada argumento de salida, y<br />

3. Cortar el programa.<br />

Si el <strong>parámetro</strong> es igual a <strong>un</strong>o: m = 1, la integral K(m) es divergente (vale más<br />

infinito) y la integral E(m) vale <strong>un</strong>o. En ese caso, se debe:<br />

1. Asignar el valor Inf a K,<br />

2. Asignar el valor <strong>un</strong>o a E, y<br />

3. Cortar el programa.<br />

Si el número de pasos para calcular la AGM es mayor que diez: N > 10, se debe:<br />

1. Mostrar <strong>un</strong> mensaje de error por pantalla,<br />

2. Asignar el valor NaN (Not a Number) a cada argumento de salida, y<br />

3. Cortar el programa.<br />

Instrucciones particulares: Las siguientes instrucciones pueden ser útiles, a<strong>un</strong>que no<br />

todas ellas son imprescindibles.<br />

Los comandos nargin y nargout sirven para saber con cuantos argumentos de<br />

entrada y salida ha sido llamada <strong>un</strong>a f<strong>un</strong>ción, ver la subseccion 6.3.2 del manual 1 .<br />

El comando return corta la ejecución de cualquier f<strong>un</strong>ción, ver la subsección del<br />

6.3.3 manual. (No conf<strong>un</strong>dir con el comando break.)<br />

El comando disp sirve para escribir mensajes de texto por pantalla, ver la subsección<br />

6.2.2 del manual.<br />

El comando [] sirve para crear vectores vacíos sin tener que decir que tamaño<br />

tienen, ver la subsección 3.5.5 del manual.<br />

Comprobación: La f<strong>un</strong>ción E(m) es estrictamente decreciente, E(0) = π/2 y E(1) = 1.<br />

La f<strong>un</strong>ción K(m) es estrictamente creciente, K(0) = π/2 y lím m→1 − K(m) = +∞. El<br />

comando propio de MATLAB [K,E]=ellipke(m,tol) calcula las mismas integrales,<br />

con el mismo método y con las mismas convenciones sintácticas sobre los argumentos<br />

de entrada y salida.<br />

1 El manual “Aprenda MATLAB 6.1 como si estuviera en primero” que os podeis descargar de la página<br />

web de la asignatura. También podeis obtener información sobre <strong>un</strong> comando tecleando help comando en <strong>un</strong>a<br />

sesión interactiva de MATLAB

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!