Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FSICA COMPUTACIONAL
OTOO 2015
PROYECTO FINAL
1. PLANTAMIENTO
Qu problema resuelve el proyecto?
La funcin error definida como
erf() =
proporciona la probabilidad de que cualquiera de serie de ensayos est a media de x unidades de la media, suponiendo que
los ensayos tienen una distribucin normal con media 0 y desviacin estndar 2/2. Esta integral no se puede evaluar en
trminos de funciones elementales, de modo que se debe usar una tcnica de aproximacin.
no tiene una primitivas definidas, entonces para poder integral la funcin error es necesario
un mtodo numrico.
Qu problema resuelve el proyecto?
Sea la funcin error de distribucin normal que se define mediante:
erf() =
Aproxime erf(1) con una exactitud de
107 .
Y por comodidad la integral anterior se puede trabajar haciendo la variable de integracin t igual a x (t=x), teniendo entonces:
erf(1) =
As por el mtodo de integracin numrica por Romberg calcularemos erf(1)como se defini anteriormente.
La exactitud la definimos como:
Sea A una aproximacin por una n iteracin y sea B una aproximacin de una n+1 iteracin, entonces dada la exactitud de
107 (se usara una cantidad de 10 cifras decimales), entonces definimos la solucin como | | 107 .
2. DESCRIPCION DE LA SOLUCIN
Explicacin del mtodo usado
La regla compuesta del trapecio tiene un error de truncamiento del orden de (2 ). Demostramos que para casa h=(b-a)/n
y = + tenemos:
1
( ) ()2
() = [() + ( ) + ()]
2
12
=1
() = [() + 2 ( ) + ()] + 1 2 + 2 4 + 3 6 +
2
=1
donde cada K i es una constante que depende slo de (21) () y (21) ().
Recordando que en la interpolacin de Richardson puede efectuarse en cualquier procedimiento de aproximacin cuyo error
de truncamiento es de la forma:
1
( ) + ( )
=1
Para un conjunto de constante y cuando 1 < 2 < 3 < < . Se demuestra que la efectividad de esta tcnica cuando
el procedimiento tiene un error de truncamiento con solo potencias pares de h; es decir, cuando el error de truncamiento
tiene la forma
1
( 2 ) + (2 )
=1
Para aproximar la integral () usamos los resultados de la regla compuesta del trapecio con n=1, 2, 4, 8, 16, y se
denotan las aproximaciones resultantes, respectivamente, por 1,1 , 2,1 , 3,1 , Luego aplicamos la extrapolacin para
(4 ): 2,2 , 3,2 , 4,1 , mediante:
1
,2 = ,1 + (,1 1,1 ), = 2,3,
3
Luego las aproximaciones 0(6 ): 3,3 , 4,3 , 5,3 mediante:
,3 = ,2 +
1
( 1,2 ), = 3,4,
15 ,2
Sucesivamente desde de que las aproximaciones ,1 han sido obtenidas, se determina las aproximaciones (2 ) a partir
de:
, = ,1 +
1
4 1
(,1 1,1 ), = , + 1,
Ejemplo del uso del mtodo de Romberg para el manejo del clculo de nuestra funcin error evaluada en 1:
As calculamos
erf(1) =
Primeramente usamos la regla compuesta del trapecio para
2
1
0
Usando: [() + 1
=1 ( ) + ()]
2
Para n=1
1 2 02
1 + 1
2
[
+ 1 ] =
0.7717433321
2
Para n=2
1 2
1 2 02
2
( )
2,1 =
[
+ 2 2 + 1 ] 0.8252629555
4
Para n=4
1 2
1 2
3 2
1 2 02
2
( )
( )
( )
3,1 =
[
+ 2 ( 4 + 2 + 4 ) + 1 ] 0.8383677772
8
Para n=8
1 2
1 2
3 2
1 2
5 2
3 2
7 2
1
2 02
2
( )
( )
( )
( )
( )
( )
( )
4,1 =
[
+ 2 ( 8 + 4 + 8 + 2 + 8 + 4 + 8 ) + 1 ] 0.8416192214
16
Para n=16
1,1 =
5,1 =
1 2
1 2
3 2
1 2
5 2
3 2
7 2
1 2
9 2
5 2
11 2
1
2 02
)
)
)
)
)
)
)
)
)
)
)
13 2
)
7 2
)
15 2
)
1
( 2,2 ) = 0.8427115992
15 3,2
4,3 = 4,2 +
1
( 3,2 ) = 0.8427008351
15 4,2
5,3 = 5,2 +
1
( 4,2 ) = 0.8427007935
15 5,2
1
( 3,3 ) = 0.8427006642
63 4,3
5,4 = 5,3 +
1
( 4,3 ) = 0.8427007928
63 5,3
Y la aproximacin (10 ) es
5,5 = 5,4 +
1
( 4,4 ) = 0.8427007933
255 5,4
Valor Exacto
(4 )
0.7717433321
0.8252629555
0.8383677772
0.8416192214
0.8431028300
0.8427360511
0.8427030361
0.8427009337
0.8424305056
0.8427115992
0.8427008351
0.8427007935
(10 )
0.8427006642
0.8427007928
Se us la regla compuesta del trapecio cada aproximacin consecutiva incluye todas las evaluaciones de funciones desde la
aproximacin anterior, es decir 1,1 utiliza las evaluaciones en 0 y 1, 2,1 usa esa evaluacin y aade una evaluacin en el
punto medio . Luego 3,1 usa las evaluaciones de 2,1 y agrega dos evaluaciones intermedias en y . Continuando as
con 4,1 utilizando las mismas evaluaciones que en 3,1 pero aadiendo evaluaciones en los cuatro puntos intermedios 1/8,
3/8, 5/8, 7/8 continuando as sucesivamente. Esta regla es vlida para una integral en [a, b].
La regla compuesta del trapecio dada por +1,1 utilizando evaluaciones que ,1 , pero agrega evaluaciones en los 22
puntos intermedios, as los clculos eficientes de estas aproximaciones pueden hacerse de manera recursiva.
Para obtener aproximaciones con la regla compuesta del trapecio para () , sea =
1,1 =
21
[() + ()] =
[( + ()]
2
2
Y
2,1 =
2
[() + () + 2( + 2 )]
2
Al re expresar este resultado para 2,1 , se puede incorporar la aproximacin para 1,1 previamente determinada
2,1 =
1
[() + () + 2 ( +
)] = [(1,1 + 1 ( + 2 )]
4
2
2
Rescribiendo
1
3,1 = {2,1 + 2 [( + 3 ) + ( + 33 )]}
2
En general
22
,1
1
= [1,1 + 1 ( + (2 1) )] = 2,3,
2
=1
1
(
1,1 ), = , + 1,
4 1 1 ,1
(2 )
1,1
2,1
3,1
4,1
,1
(4 )
(6 )
(8 )
2,2
3,2
4,2
,2
3,3
4,3
,3
4,4
,4
(2 )
Mtodo efectivo para construir la tabla de Romberg utilizando la aproximacin de orden ms alto en cada paso, calcular las
entradas o elementos rengln por rengln completo en orden 1,1 , 2,1 , 2,2 , 3,1 , 3,2 , 3,3 , esto nos da un nuevo rengln
completo en la tabla para ser calculado haciendo solo una aplicacin extra de la regla compuesta del trapecio. sta usa
despus el promedio de los valores calculados previamente para obtener los elementos restantes del rengln.
Ejemplo:
Se agrega un rengln adicional a la extrapolacin de la tabla de valores para aproximar erf(1) =
24
6,1
2 1 2
0
(21)1
1
1 2
(
)
32
= [5,1 +
] = 0.8426332280
2
16
=1
1
( 5,2 ) = 0.8427007933
15 6,2
6,4 = 6,3 +
1
( 5,3 ) = 0.8427007933
63 6,3
6,5 = 6,4 +
1
( 5,4 ) = 0.8427007933
255 6,4
Finalmente
6,6 = 6,5 +
1
( 5,5 ) = 0.8427007933
1023 6,5
0.8431028300
0.8427360511
0.8427030361
0.8427009337
0.8427008021
erf(1) 0.8427007929
(6 )
(8 )
0.8427115992
0.8427008351
0.8427007935
0.8427007933
0.8427006642
0.8427007928
0.8427007933
(10 )
0.8427007933
0.8427007933
3. DESCRIPCIN DE LA IMPLEMENTACIN
Para aproximar la integral =
() ,
(() + ())
2
1,1
1
= [1,1 + ( + ( 0.5))]
2
=1
Paso 5: j= 2, , i
Extrapolacin
2, = 2,1 +
1
(
1,1 )
4 1 1 2,1
Paso 8:
Actualizacin
Con j= 1, 2, , i tome (1, = 2, )
Paso 9: FIN
El algoritmo requiere un entero n establecido previamente para determinar el nmero de filas.
Pero para este problema es mejor si se fija una tolerancia de error en las aproximaciones y generar n dentro de una cota
superior hasta que las entradas diagonales consecutivas 1,1 , concordando con el margen de exactitud que este
caso es de 107 , esto se implementa en el algoritmo como |1,1 , | = 107 =
ATENCIN: Para programar el mtodo de integracin numrica por Romberg se us el IDE de Eclipse Versin:
Mars.1 Release (4.5.1), Build id: 20150924-1200 de x64 bits, no se us el IDE de ZinjaI porque no admita arreglos
dinmicos y da el error de decodificacin.
int p, k, j, kk;
int m;
positivo*/
float n;
Subintervalos
double
double
double
double
double
son bsectados*/
Exactitud = 1E-7;
/* Exactitud buscada: 0.0000001
*/
Finalizar;
/* Finalizacin
*/
a,b;
/* Limites de Integracin
*/
h;
/* Anchos
*/
Suma= 0;
/* Suma cero para el inicio del Programa*/
{
printf("El n\243mero m\240ximo de filas dado no es un entero positivo:
%f\n",n);
printf("Iniciando otra vez :(.\n");
system("Pause");
return EXIT_SUCCESS;
}
/*Salidas*/
printf("Filas: n=%f\n",n);
printf("
======================================================================\n");
printf("\n");
printf("\n");
printf("
======================================================================\n");
printf("
CALCULOS\n");
printf("
======================================================================\n");
m = 1;
/* Iniciando el nmero de Intervalos */
h = b-a;
/* Iniciando las particiones
*/
Finalizar = 1; /* Iniciando la variable
*/
j = 0;
/* Iniciando el contados
*/
/* Se calcula la primera entrada del mtodo del trapezoide*/
R[0][0] = (h/2)*(funcion(a)-funcion(b));
/*Un ciclo While (Mientras), comparando la exactitud y los nmeros de
contadores*/
while (((Finalizar > Exactitud) && (j < n)) || (j < 4))
{
/* Iniciando los Clculos */
j++;
/* Calculo de un nuevo R(j,0) */
/* Reduciendo el tamao de los intervalos para el J-simo refinamiento*/
h = h/2;
/*Suma cero para el inicio de las sumas*/
Suma = 0;
for (p = 1; p <= m; p++) /* Loop*/
{
Suma = Suma + funcion(a + h*((2 * p) - 1));
}
R[j][0] = R[j-1][0] / 2 + h * Suma;
/*Actualizacin del nmero of Subintervalos */
m = 2*m;
/*Extrapolacin */
for (k = 1; k <= j; k++)
{
R[j][k] = R[j][k-1] + ( R[j][k-1] - R[j-1][k-1])/(por(4,k)-1);
}
printf(" ============================================================\n");
printf(" Las entradas en la fila %d para la integraci\242n de Romberg
es\n",j);
printf(" ============================================================\n");
4. DISCUSIN DE RESULTADOS
Entradas y salidas del programa, para simplificar el problema solo se muestra para 10 filas, el programa en c (Romberg.c)
hecho en el IDE Eclipse se puede expender hasta un lmite de 400, valor fijado previamente, solo se da una corrida del
programa y el error de precisin se fija anteriormente (107 ), la aproximacin de 0.8427007933 se logra entre ms alta
sean el nmero de filas, pero est limitado por la exactitud fijada de 107
R(3,2) = 0.8104146961
R(3,3) = 0.8109270036
============================================================
Las entradas en la fila 4 para la integracin de Romberg es
============================================================
R(4,1) = 0.8254047878
R(4,2) = 0.8265577241
R(4,3) = 0.8268139626
R(4,4) = 0.8268762644
============================================================
Las entradas en la fila 5 para la integracin de Romberg es
============================================================
R(5,1) = 0.8340527289
R(5,2) = 0.8346292583
R(5,3) = 0.8347573779
R(5,4) = 0.8347885285
R(5,5) = 0.8347962629
============================================================
Las entradas en la fila 6 para la integracin de Romberg es
============================================================
R(6,1) = 0.8383767571
R(6,2) = 0.8386650256
R(6,3) = 0.8387290854
R(6,4) = 0.8387446607
R(6,5) = 0.8387485279
R(6,6) = 0.8387494931
============================================================
Las entradas en la fila 7 para la integracin de Romberg es
============================================================
R(7,1) = 0.8405387748
R(7,2) = 0.8406829093
R(7,3) = 0.8407149392
R(7,4) = 0.8407227268
R(7,5) = 0.8407246604
R(7,6) = 0.8407251430
R(7,7) = 0.8407252636
============================================================
Las entradas en la fila 8 para la integracin de Romberg es
============================================================
R(8,1) = 0.8416197838
R(8,2) = 0.8416918511
R(8,3) = 0.8417078661
R(8,4) = 0.8417117599
R(8,5) = 0.8417127267
R(8,6) = 0.8417129680
R(8,7) = 0.8417130283
R(8,8) = 0.8417130433
============================================================
Las entradas en la fila 9 para la integracin de Romberg es
============================================================
R(9,1) = 0.8421602884
R(9,2) = 0.8421963220
R(9,3) = 0.8422043295
R(9,4) = 0.8422062764
R(9,5) = 0.8422067598
R(9,6) = 0.8422068805
R(9,7) = 0.8422069106
R(9,8) = 0.8422069181
R(9,9) = 0.8422069200
============================================================
Las entradas en la fila 10 para la integracin de Romberg es
============================================================
R(10,1) = 0.8424305407
R(10,2) = 0.8424485575
R(10,3) = 0.8424525612
R(10,4) = 0.8424535347
R(10,5) = 0.8424537764
R(10,6) = 0.8424538367
R(10,7) = 0.8424538518
R(10,8) = 0.8424538555
R(10,9) = 0.8424538565
R(10,10) = 0.8424538567
============================================================
El valor ms exacto con 10 cifras decimales es erf (1)= 0.842700792
============================================================
La aproximacin ms exacta de la funcin error evaluada en 1
usando la Integracin de Romberg es erf(1)= 0.8424538567
============================================================
5. BIBLOGRAFIA
Anlisis Numrico, Richard L. Burden y J. Douglas Faires, Cengage Learning, 9a. ed., Mxico, 2011
Erdelyi, A. Higher Transcendental Functions. McGraw-Hill, 1953. Vol. 2.
Cmo programar en C/C++ y Java, Deitel H. M. y Deitel P. J., Pearson Educacin, Mxico, 2004
NUMERICAL METHODS for Mathematics, Science and Engineering, 2nd Ed, 1992
Prentice Hall, Englewood Cliffs, New Jersey, 07632, U.S.A.
Prentice Hall, Inc.; USA, Canada, Mxico ISBN 0-13-624990-6
Prentice Hall, International Editions: ISBN 0-13-625047-5