Importancia de Compiladores y su Precisión En la Solución , da Problemas da Ingeniería /y
Ing. Freddy Humberto Escobar Ph D.
Programa Ingeniería de Petróleos Universidad Surcolombiana
Ing. Yamil Armando Cerquera. Esp. Programa de Ingeniería Electrónica Universidad Surcolombiana
Ing. Alejandro Carrascal S. Msc. Landmark Graphics Corporation, 15150 Memorial Drive. HousIon.
Texas 77079. EE.UU.
Este estudio muestra el impacto que tienen algunos compiladores y la definición de variables cuando se escribe un programa de computador para resolver ecuaciones diferenciales o modelos matemáticos altamente sofisticados Un programa de computador diseñado para dar solución o la Ecuación de Poisson fue ejecutado utilizando dos definiciones diferentes de variables. Primero se consideraron variables de precisión sencilla (single). Luego, la precisión doble (double) fue utilizada. En promedio se observó una diferencia promedia superior a 10.000 veces para este caso. El mismo programa de computador se tradujo a otros lenguajes utilizando el mismo esquema de definición de variables. Se observaron diferencias muy notables incluso evaluando la solución analítica donde se detectaron diferencias mayores de 8 mi/íones de veces.
Introducción
Mediante el uso de el método Cubatura Diferencial, Escobar et al. (1997) obtuvieron los mejores resultados numéricos, a la fecha, de la Ecuación de Poisson. comparado a los resultados obtenidos por el método de diferencia finitas de cinco puntos, Galerkin 7*7. Volumen de control (7*7), Cuadratura Differencial (5*5) y). Cuadratura Differencial (7*7). Antes del estudio realizado por Escobar et al (1997), los siguientes mejores resultados fueron obtenidos por Civan y Sliepcevich (1983) usando el método de ). Cuadratura Differencial. Uno de los tres problemas resueltos por ellos se tomó como referencia para ser resuelto utilizando varios compiladores o lenguajes de programación: Microsoft Visual Basic versión 5.0 (VB50). Microsoft Quick Basic versión 4.5 (QB45). Microsoft Fortran Visual Workbench versión 1.0 (Fl). Microsoft Fortran Visual Workbench versión 4.0 (F4) y Borland Turbo C+ + /C Versión 3.0 (C). En todos los casos se definieron variables de doble precisión para observar los errores de redondeo. Se estableció comparaciones mediante la compilación del programa escrito en C usando primero precisión sencilla (single) y luego precisión doble (double). Se detecto una diferencia remarcable.
Formulación y Solución Numérica
¿?/(i ,y)
dx
= 0; 0S>’<
(5)
La solución analítica a la ecuación diferencial anterior sometida o las condiciones de fronteras expresadas mediante las ecuaciones 2 a 5 fue presentada por Ramadhyani and Patankar (1980):
gM¥)
sinh
/ = ■
(6)
sinh(fJ
Como se efectuó en la Ref. 1, el método de Cubatura Diferencial - explicado en detalle en las Refs. 4 y 5 - aplicado a las Ecs. 1 a 5 resulta en:
(7)
0y‘
ex
(8)
dx
Las aproximaciones de Cubatura Diferencial para las Ecs. (7) v (8) son. respectivamente:
Considere la Ecuación de Poisson normalizada por Civan y Sliepcevich (1983):
'Laufj=0
/•»
±W,= o
(9)
= 0; .v S 1, v < 1
(1)
(10)
La cual está sujeta a condiciones de frontera:
las siguientes
(2)
(3)
(4)
f(x,0) = 0; 0 < .v < 1
/(.x,l) = sin^Y
/(0,y) = 0; 0áy<l
Las Ecs. (9) y (10) se resuelven simultáneamente para los nodos del sistema de malla presentado en la Fig. 1. El programa de computador, inicialmsnte escrito en C, se tradujo a los lenguajes QuickBasic 4.5 (QB45). Microsoft Visual Basic 5.0 (VB50). Microsoft Fortran Visual Workbench 1.0 (Fl). y Microsoft Fortran Visual Workbench 4.0 (F4).
Todas las variables de punto flotante se definieron en doble precisión para los cinco casos. Los mejores resultados fueron proporcionados por C y VR50. Los resultados obtenido por C fueron ligeramente mejores que aquellos proporcionados por VB50.
El efecto de la precisión se observó usando el compilador de C para resolver la Ec. 6, usando separadamente variables de precisión doble y de precisión sencilla. Cuando se usaron variables de precisión sencilla el error promedio (comparado con la solución analítica) se incrementó 11058.5 veces. Los errores absolutos encontrados en cada uno de los nodos se presentan gráficamente en la Fig. 2. El error absoluto promedio proporcionado por los cinco lenguajes de programación se proporcionan en la tabla 1. Las Figs. 3a y 3b presentan el error promedio absoluto encontrado en cada nodo para cada uno de los compiladores. Note que los errores absolutos hallados por C o VB50 no son sólamente los más bajos sino los más estables.
Se hallaron mayores diferencias incluso cuando se calculó la solución analítica usando cada compilador. Entre C y VB50 las diferencias fueron tan pequeñas que cuando se grafican se confunde una con la otra. Los resultados de estas diferencias se muestran en la Fig. 4 y los valores promedios se reportan en la tabla 2. Se determinó una relación entre las diferencias promedias de C y VB50 con las otras. La mayor relación encontrada fue para la diferencia entre C y QB45 la cual fue 8346636.4 veces como se muestra en la tabla 3.
Obsérvese en la Fig. 4 que los cálculos de la solución numérica usando Fortran y QuickbasiC son pobres comparadas con aquellas obtenidas por C o VB50.
Conclusiones y Recomendaciones
De este estudio se concluye que la definición de variables en un programa de computador es relavante cuando se resuelven ecuaciones diferenciales por el método de Cubatura Diferencial puesto que los errores de redondeo tienen un gran impacto en la solución. Esto implica que una situación parecida podría obtenerse cuando se utiliza otro método numérico sofisticado. La solución más estable se obtuvo a partir de la utilización de los lenguajes de programación C y VB50. Por lo tanto, se recomienda prestar atención a estas diferencias cuando se escriba un programa para resolver ecuaciones diferenciales.
Compilador |
C 1 |
F1 |
1 1 P4 VB50 QB45 |
c |
Error , |
2.06981xl0's |
2.10324x10* |
2 10313\10s 2.06982.xl0'5 2.07706xl0s 1 I -1 |
0.22889 |
Tabla 1. Error absoluto promedio, %
C - VB50 C - F1 |
C-F4 |
C - QB45 |
5.87133E-13 3.31555E-06 |
3.31476E-06 |
4.90058E-06 |
Tabla 2. Diferencias en la solución analítica halladas por C y los otros compiladores usados
(C-F1)/(C-VB50) (C-F4) /(C-VB50) (C-QB4S) (C-VB50)
5647026 029 5645677.627 8346636.374
Tabla 3. Relación entre la diferencia C-VB45 y las diferencias entre C y los otros compiladores usados.
Fia■ 1 ■ Dominio de lu Solución
Ingeniería y Región No.