Anda di halaman 1dari 16

Revista internacional de mtodos numricos para clculo y diseo en ingeniera, Vol.

2, 3, 321-336 (1986)

OPTIMIZACION DE ALGORITMOS DE CALCULO NUMERICO


LUIS GAVETE FRANCISCO MICHAVILA Y LUIS SANCHEZ-TEMBLEQUE
E. T.S. Ingenieros de Minas Universidad Politcnica de Madrid

RESUMEN Un algoritmo numrico ha de conseguir la mayor economa posible, en el proceso de solucin de un problema, desde el punto de vista de: a) La memoria requerida en la ejecucin de dicho programa, lo cual incide en la capacidad del ordenador a utilizar. b) El tiempo de ejecucin del programa en el ordenador, que incide directamente en el. costo de la solucin de un problema. Un algoritmo por s solo no determina un proceso de resolucin en el ordenador. Es importante optimizar la programacin de algoritmos; si esto no se realiza, no es posible establecer entre ellos comparaciones. En este artculo se indican algunos puntos a seguir en la optimizacin de algoritmos numricos. SUMMARY It is irnportant, to design the numerical algorithms in order t o obtain the best economy in their solution process, taking account: a) The available capacity, depending of the computer t o be used. b) The computer consuming time, which is the most important parameter influencing the computing costs. An algorithm by itself does not determine a solution process in the computer. It is very important to choose the best algorithm's programming to compare different algorithms. In tHis paper we give some ideas to be followed t o obtain the very best programming of a numerical algorithm.

INTRODUCCION Ln la Tcnica o la Fsica Matemtica, numerosos problemas vienen gobernados por ecuaciones en derivadas parciales, ecuaciones diferenciales ordinarias, ecuaciones algebraicas, etc., cuya solucin es imposible determinar explcitamente o bien sta es tan complicada que resulta intil y en consecuencia, una vez asegurada la existencia y unicidad de su solucin buscada, es necesario desarrollar un algoritmo que obtenga una aproximacin de tal solucin.
Recibido: Enero 1986
@

Universitat Politecnica de Catalunya (Espaa) ISSN 0213-1315

321

j22

,L. CAVETI?, F. MICHAVILA Y L. SANCHEZ TEMBLEQUE

La elaboracin de algoritmos exige, en primer lugar un amplio conocimiento de las propiedades de las expresiones que pretendemos calcular. As la acumulacin de errores de redondeo en cada operacin efectuada, puede, en ciertos casos, falsear groseramente los resultados y nos debemos limitar a "algoritmos estables", es decir poco sensibles a los errores de redondeo de modo que las soluciones aproximadas permanezcan acotadas en un cierto sentido. El primer problema que se plantea para un mtodo numrico es establecer su convergencia y si el mtodo no siempre es convergente deben establecer las condiciones bajo las cuales lo es. Si el mtodo converge lentamente, para obtener la exactitud necesaria puede requerirse un elevado nmero de clculos. As la convergencia insuficientemente rpida es uno de los criterios de penalizacin de un algoritmo dado. No obstante y al considerar la conveniencia de realizar un tipo determinado de clculos, a veces entre dos algoritmos, si los clculos a que conduce son ms simples, se puede preferir aqul cuya velocidad de convergencia sea relativamente menor. Elegido un mtodo numrico, hay que trasladarlo al lenguaje algortmico, para lo (cual se emplean las descomposiciones lgicas1 y los organigramas2 3 . Un algoritmo no determina, por s solo, un proceso nico de solucin en el ordenador. Vamos en lo que sigue a analizar un modo de optimizar la programacin de un algoritmo dado. Se completar as, en el proceso de resolucin de un problema que va desde su anlisis riumrico hasta la obtencin de resultados, la optimizacin econmica de los clculos buscada. Para minimizar la memoria requerida por un programa y el tiempo de su ejecucin, i~tilizaremos una serie de parmetros, quedarn de una forma analtica, el grado de optimizacin del programa escrito en un lenguaje determinado. permite fcilmente definir los puntos La descomposicin lgica de un a partir de los cuales ya no se vuelven a utilizar ciertas variables para un determinado fin. Gracias a lo cual reduciremos el nmero de posiciones de memoria a utilizar. En el caso' de almacenamiento de una matriz, conviene que ste sea lo ms ajustado posible. As en el caso de matrices diagonales, en banda o simtricas se debe acudir a un almacenamiento en vector columna o bien en matriz compacta, con el fin de no guardar posiciones de memoria para trminos nulos o iguales a sus simtricos. Esta es una buena prctica en el empleo del mtodo de elementos finitos4. Asimismo el resultado de una operacin entre matrices puede almacenar donde se hallaba una de las iniciales. Por ejemplo, en un producto de dos matrices cuadradas de dimensin N;

se puede reducir memoria utilizando el siguiente algoritmo:

PARA CADA COLUMNA DE [ B ]

Almacenar en un vector auxiliar

ICIKI 1

PARA CADA FILA DE [ A ]

* *

Almacenar sumatorio producto por vector J C I K I Almacenar resultados en lugar correspondiente [ B ]

OPTIMIZACION DE ALGORITMOS DE CALCULO NUMERICO

323

Es evidente el ahorro de memoria que ser de Nx(N-1) posiciones. La descomposicin lgica del problema ser:
PRINCIPI0:Leer N ( 1 vez) PRINCIPI0:Almacenarla (K-1 ,N) (N veces) PRINCIPIO: Leer A(K,I) PRINCIPIO: $ B(K,J)=B(K,J) + +A(K,I)*c( I ) FIN:+

El encadenamiento de programas y la utilizacin de subrutinas es importante en un intento de ahorro de la memoria ocupada por el propio programa, as como el empleo de archivos. La descomposicin lgica proporciona una visin del conjunto memoria ms archivos. En general el ahorro de memoria, lleva consigo una mayor complicacin en la lgica de la programacin y por ello cuanto ms optimizado est un programa en cuanto a sus almacenamientos, ms difcil ser de entender y de hacer modificaciones sobre l?.
49

TIEMPO DE EJECUCION A partir de la descomposicin lgica de un problema complejo, se puede contabilizar fcilmente el nmero de operaciones bsicas a realizar en cada estructura, teniendo en cuenta el tipo de operacin y el tipo de variable a operar. Se puede asimismo, dar un peso a cada tipo de operacin bsica proporcional al trabajo que le cueste al ordenador realizarla. No es igual hacer, por ejemplo, sumas que multiplicaciones, como tampoco es igual hacer sumas cuyos sumandos sean variables simples, o cuyos sumandos sean de tipo matricial. De esta forma, conocindolo mediante el anlisis, el nmero de operaciones de un tipo determinado a realizar, y el peso que tiene esa operacin su producto nos dar el tiempo que emplea el ordenador en realizar esas operaciones. Para reducir el nmero de operaciones se deben obviar aquellas cuyo resultado vaya a ser cero y que de antemano conozcamos. As por ejemplo, en el empleo del algoritmo de Gauss, con pivote parcial: no se opera con la parte de columna que se quiere anular. Por otra parte el mtodo de Gauss con pivote total al emplear tambin cambios.de columnas penaliza enormemente el nmero de operaciones. Con la ayuda de la descomposicin lgica de un algoritmo de clculo numrico, se obtiene fcilmente el nmero de comparaciones que se realizan en cada estructura. Este

324

L. GAVETE, F. MICHAVILA Y L. SANCHEZ TEMBLEQUE

parmetro tiene gran importancia a la hora de optimizar los mtodos de ordenacin6 Hay que hacer notar que para cada tipo de comparacin existe un peso determinado relativo al tiempo de ejecucin de esa comparacin. En cuanto a los pasos de bucle y su tipo los podemos obtener asimismo, a partir de la descomposicin lgica. No es igual realizar un paso en un bucle externo que en otro interno. Por otro lado, es interesante poder reducir el nmero de pasadas de un bucle. Asimismo es importante conocer el nmero de funciones y su tipo. Nos referimos al empleo de funciones predefinidas que calculen el valor absoluto, la parte entera, etc.

METODOLOGIA DE LA OPTIMIZACION Planteado el problema de clculo numrico y elegido el algoritmo que se ha de emplear para su resolucin, se programar ste. La forma de hacerlo es utilizar su descomposicin lgica que se puede variar para tratar de optimizar la programacin. Para ello se utilizarn ciertos parmetros cuyos valores nos darn una idea previa de donde est la mayor dificultad en la ejecucin. Los parmetros son los que se describen en la tabla siguiente, y en ella se muestra tambin, el tiempo de su ejecucin en un ordenador SPERRY P.C., usando lenguaje BASIC y utilizando 100.000 repeticiones en cada caso. La columna de PESOS muestra la relacin entre los tiempos de ejecucin de cada parmetro y el paso de bucle y es justamente la tabla de pesos que tendremos que asignar en nuestros recuentos. (Ver Tabla 1). Se ha comprobado la existencia de anomalas en los tiempos de ejecucin de algunas combinaciones de operaciones simples. Se explican a continuacin algunos casos: a) Bucles concatenados- Se ha pasado el caso de dos bucles concatenados, calculando el tiempo de ejecucin del paso de bucle interno. RUN CASO DE PRUEBA ? DOS BUCLES (I=2 TON) (J=I - 1 TO 1) NUMERO DE ELEMENTOS = ? 200 EL TIEMPO DE CPU EN SG.ES = 2 1,08985

bucle

21,08985

199 x 9,9031 x loq4 - 199 x 8,8879 x lom4 19900

10,4 x

sg.

peso

=---

10,4 = 9,903 1

1,0502

OPTIMIZACION DE ALGORITMOS DE CALCULO NUMERICO

TABLA

TIPO DE OPERACION - CASO DE PRUEBA BUCLE ASIGNACION SIMPLE


I1 11

A= 1 A(I)=A(J)

MATR.SIMPLE
11

MIXTA
11 11

DOBLE A(I,J)=B(K,L) SIMPLE A( I)=H DOBLE A(1 ,J)=H A=I+ 1 A(I)=B(J)+C(K) A(I,J)=A(K,L)+ +A(M,J) A(I)=A(J)+H A ( I ,J)=A(K,L)+H A=I-1 A(I,J)=A(K,L)-A(M,J) A(I)=A(J)-H A(I,J)=A(K,L)-H A=I*I A(I)=A(J)*A(K) A(I,J)=A(K,L) *A(M,N A(I)=A(J)*H R(I,J)=A(K,L)*H A=I/ 1 A(I)=A(J)/A(K) A( J,J)=A(J,K) / A ( K ,L) A(I)=A(J)/H R(1 ,J)=A(J ,K)/H

SUMA SIMPLE MATR.SIMPLE


11

I1

DOBLE

"
11

MIXTA SIMPLE

"

DOBLE

RESTA SIMPLE
"
11

MATR.SIMPLE

A(I)=B(J)-C(K)525.0274m 776.7618n

"

DOBLE

MIXTA SIMPLE
11

"

DOBLE

PRODUCTO SIMPLE
I1
11

MATR.SIMPLE DOBLE
J

,789.7735 r 41.7214 456.4063 S 631.6797 t 297.6953


U

,
11

MIXTO SIMPLE " DOBLE

DIVISION SIMPLE MATR.SIMPLE


11

"
"

DOBLE

1I

I1 11

MIXTA SIMPLE DOBLE

1 TIEMPO OBTENIDO(%.)
99.03125 a 201.8984 b 355.5781 c

TIEMPO UNITA RIO(X~O-~SGJ 9.9031 10.2867 25.6547 18.548 27.353 8.3109 23.5350 a b-a c-a 1.000 1.039 2.591 4.387 1.873 2.762 0.839 2.376 4.045 1.558 2.409 0.898 2.429 4.082 1.614 2.441 1.024 2.469 4.213 1.736 2.617 0.968 2.425 4.125 1.715 2.517

533.4883 d 43.4457 284.5117 e 372.5586 f

1 d-a

1 e-a
f -a

I
I

285.0078 g 519.8672 h 773.129

i 40.0570
15.4289 23.8594
I

1 g-b 1 h-e i-f

438.8009 j 611.1524 k

/1
/

j-e k-f 1-b

I
!

290.7774 1

' 8.8879

i124.05157Im-e
40.4203 15.9777 24.1612 10.1344 24.4476

/n-f

444.2891 614.23050 303.2422 p

'ii-e
O-f

p-b

528.9833 q

jq-e Ir-f
I I

17.1891 25.9121 9.5797 24.0098 40.8535 16.9785 24.9238

1s-e it-f
I

lIU-6
'v-e
X-f

524.6094 v 781.0938 x 54.2969 y

y-e
Z-f

621.7969 z

L. GAVETE, F. MICHAVILA Y L. SANCHEZ TEMBLEQUE

TABLA 1 TIPO D OPERACION E

(Cont.)
3

TIEMPO UNITA TIEMPO OBCASO DE PRUEBA TENIDO(SG.) R I O ( X ~ O - ~ S G . ~ P E S O

GO TO

130.6094 A 201.018 B

3.15781 10.1987 24.8375 3.5406

A-a B-a C-b D-b E-b F-b

0.319 1.0298 2.508 0.358 2.027 0.624

DEFINICION FUNCICl DEF FN F(X)=X CALCULO FUNC. DEFI NIDA. - H = FN F(X) VALOR ABS.SIMPLE
I1

450.2734 C 237.3044 D

H=ABS( 1 )

"MATR. DOBLE H=ABS(A( 1 ,J))

402.5764 E 20.0678 263.6714 F 6.1773

PARTE ENTERA SIMP. H=INT(I) COMPARAC. 1GUAL SIMPLE COMPARAC. 1GUAL MAT. SIMPLE COMPARAC. 1GUAL MAT. DOBLE COMPARAC. IGUAL MIXTA SIMPLE COMPARAC. 1GUAL MIXTA DOBLE COMP. <> SIMPLE
I1 11 11

I F X=Y I F A(I)=B(J) I F A(I,J)=B(I,J) I F A(I)=H I F A(I,J)=H


IF X>Y

285.332 426.504 589.297 350.449

18.63

G-a H-a 1-a J-a K-a L-a M-a N-a N-a O-a P-a Q-a R-a S-a T-a U-a V-a X-a Y-a Z-a

1.881 3.307 4.951 2.539 3.384 1.765 3.324 4.987 2.550 3.371 1.832 3.398 4.984 2.641 3.454 1.915 3.318 4.988 2.672 3.521
1

H 32.747
1 49.027

25.142

434.1602 K 33.513 273.8086 L 17.478 428.1446 M 32.911 351.504 432.801 N 25.247 O 33.377

MAT.SIMP.
11

I F A(I)>B(J) I F AI (

DOBLE

, J ) > B ( I , ~ 592.9102 N 49.388

11

I I

MIX.SIMP. 11 DOBLE

IF A(I)>H
I F A(I,J)>H IFXH

COMP.66bSIMPLE
U
o) 11 I1 (a

MAT.SIMP. Un DOBLE

11

"

MIX.SIMP. " DOBLE

I F A(1)bB(J) R 49.357 IFA(1,~),B(I,J)592.598 360.5469 S 26.152 IF A(I)>H 441.0938T 34.206 IFA(I,J)>H I F X<>Y I F A(I)<>B(J) 288.652 427.578 U 18.962 V 32.855

280.4102 P 18.138 435.5665 Q 33.654

COMP.<> SIMPLE
11

MAT.SIMP.
I I I I

I I 11

DOBLE

MIX.BIMP.
U#

I F A(1,J)<>B(IyJ)592.949 363.651 IF A(I)<>H I F A(I,J)<>H 447.651

X
Y

19.392 26.462 34.862

DOBLE

OPTIMIZACION DE ALGORITMOS DE CALCULO NUMERICO

327

Al tiempo obtenido se le restan los (N-1) pasos del bucle externo ms las (N - 1) restas simples que se producen en el bucle interno. El resultado se divide por el nmero total de pasos del bucle interno? (N - 1). b) Salto de un bucle interno a otro externo.- Se han pasado cinco casos de prueba con salto condicional desde un bucle interno al bucle externo, variando el tipo de comparacin que produce el salto. Se ha tomado como valor del peso, la media aritmtica de los valores obtenidos.

APLICACION A UN METODO DE INTEGRACION NUMERICA Vamos a aplicar los resultados anteriores a una frmula de integracin numrica compuesta de Simpson, que es de tipo interpolatorio de la familia Newton-Cotes. En un intervalo [a,b], siendo xl = a, XN + = b:

j, impar

j, impar

~ n 'se establecen sus propiedades y algoritmos de programacin, con la descomposicin lgica siguiente:

PROGRAMA

I
l

PRINCIPIO: I n t r o d u c i r X ,XN,N,

FUNCION

PRINCIPIO: Incrementar X=X+ W

No PAR D E ( INT(I/2)=1/2)

PAR : SUM=SUM+4Y IMPAR:SUM=SUM+2Y

\FIN

: Hacer SUM = (SUM+F(XN))H/3

1*
\

No IMPAR D INTERVALOS: Enviar mensaje de e r r o r . Volver a i n t r o d u c i r N E

FIN: Imprimir reru1tado:SUM

L. GAVETE, F. MICHAVILA Y L. SANCHEZ TEMBLEQUE

Podemos obtener otra versin que calcule el trmino

SUM

SUM

+ 4 y i + 2yi+ 1

directamente, y que por tanto no distinga trminos pares e impares. Para ello utilizaremos la descomposicin lgica:

PRINCIPIO: L~~~'X,XN,N,FUNCION Calcular H, sUM=F( X)

/PRINCIPIO:

PRINCIPIO: Incrementar X=X+H Y = F(X) A

H FIN: Hacer SUM=(SUM-F(X) )S

N0IMPAR DE INTERVALOS: Enviar mensaje de e r r o r . V o l v e r a i n t r o d u c i r N FIN: Imprimir resultado SUM

A la vista de las descomposiciones lgicas de las dos versiones, se analizan a continuacin las partes de las mismas que presentan diferencias:
TABLA 2
I

METODO) DE SIMPSOW DE INTEGRACION NUMERICA N o DE P O S I C I O N t S D t m R . I A D t L A S VARIABLES.

VE RS I O N - 1
8

V E R S 1ON - 2

1 - ~1
OIln
O

1, L'EI , 'iz
.
'

SUMAS S I M P L E S RESTAS SIMPLES SIMPLES


I

2N-1

9 2N
I

N 2N-1

:1
N+l

W I
+
Z W

.4 -0 ln

0az P R O D U C T O S al
-

Z S

D I V I S I O N E S SIMPLES IGUALDAD SIMPLE

5 1% <gI l COMP. >


-

1I

N-1 3N-1 N- 1 N/2 N


N- 1

1l

5 N +1
N.12

.r

ASIGNACION SIMPLE

",

N o PASOS DE B U C L E Z . o.., E S A L T O I N C O N D I C I O N A L (GO TO)

eL
a

C A L C U L O ' FUNCION

DEFINIDA

N+1

PARTE ENTERA S I M P L E

OPTIMIZACION DE ALGORITMOS DE CALCULO NUMERICO

329

TABLA

= 0.68%

E~ror=

330

L. GAVETE, F. MICHAVILA Y L. SANCHEZ TEMBLEQUE

Como vemos esta versin mejora sensiblemente el tiempo de ordenador a costa de ocupar una posicin ms de memoria. APLICACION A LA RESOLUCION DE UN SISTEMA DE ECUACIONES POR EL METODO DE GAUSS-JORDAN. El mtodo de Gauss-Jordan bsicamente se diferencia poco del clsico de Gauss. Consiste en transformar el sistema de ecuaciones de modo que al final se llegue a una matriz de coeficientes diagonal, en vez de triangular superior. Ello se traduce en el nmero de veces a realizar cada paso de eliminacin para cada variable xi; mientras en el mtodo de Gauss se elimina xi de todas las filas 'y" tales que l>i, en el de GaussJordan se elimina xi de todas las filas 'y" excepto la correspondiente al valor j= i . ~ n se establece la siguiente versin de aplicacin de dicho algoritmo: ' Versin 1 .Es un mtodo de eleccin de fila pivote sin intercambiar filas. (pivote parcial) Para ello hacen falta dos vectores. En uno de ellos, IND(I), se almacena un "1" en el lugar correspondiente a la fila escogida como pivote. As se sabr, en posteriores procesos que esa fila ya ha sido utilizada como pivote. En el otro vector, ORD(1) se almacena el orden en que cada fila ha sido utilizada. Ello ser necesario posteriormente en el proceso de resolucin. Versin 1
PRINCIPIO: $ /PRINCIPIO: e
: Escoger f i l a p i v ot e

IpARA , ,,,
F I,=,A J L
\u-*,

( P R ~ N C ~ P ~1 : O

*IND(J)=O

* ITEMq>I A(J,1)1+

l
DIAGONAL lZAC ION PARA CADA INCOGNlTA I (I=l,N,l) F I N ( P r u e b a de matriz singul a r

PRINCIPIO: *TEMP=O+Matriz *TEMP+Q+$ s i n g u l a r . PARAR.

\ F I N : (IND(NP)=l:ORD(I)=NP)
FIN: E l i m i n a i todas l a s fi1a s J-1,N.l

J=NP+(14

f i l a es l a pivote)

OPTIMIZACION DE ALGORITMOS DE CALCULO NUMERICO

331

~n~ se establece este mtodo a partir del mtodo d 6 Gauss con pivote parcial desarrollado en: constituyendo otra versin. Versin 2
IPRINCIPIO: TEMP-O

PRINC1PIO:Escoqer

*TEMP=O

M a t r i z s i n g u l as: PARAR

DIAGONALIZACION.

*J=I-+$(Fila pivote)

PRINCIPIO :$ PRINCIPIO: $ X( I)=A( 1 ,N+l ) / A ( 1 ,1 ) (I=l,N, 1) FIN:$

332

L. GAVETE, F. MICHAVILA Y L. SANCHEZ TEMBLEQUE

TABLA

OPTIMIZACION DE ALGORITMOS DE CALCULO NUMERICO

333

TABLA VERSION 1 N=10

6 E S O O A TIEMPO REAL (sg.

TERNINO N o TOTAL GENERAL OPERAC. 146 190

POS I C . DE MEMORIA N2+4N+6 SUMAS SIMPLES RESTAS SIMPLES RESTA (2N-l)N

0.839

-159.41

2.441 1208.295
- . --

MI-:NZ-~)NIP~--N 10

-PROD .MATRIC. D O B L E : N ~ - ~ ) N / ~ 495 DIV.MATRIC.DOBLE DIV.SIMPLE

--

4.213 4.125 0.968 1.881 2.539 1.765 1.039 1.873 2.762 1 1.0502 0.358 2.027 TiOTAL

2085.435 41.25 479.16 206.91 253.9 97.075 67.535 74.92 1519.1 20 729.889 19.69 111.485 7074.054 7.0055 7.42187; Error=

: N 2 - 1 ) ~ / 2 495 N~+N N2 110

COMP. 1 GUALD. S IMP,


COMP. IGUALD . M I X . SIMPLE

100
55

COMPAR. > SIMPLE (N+l)N/2 AS IGNAC .'S IMPLE ASIG. MIXTA SIMPLE DOBLE BUCLES EXTER. PASO

: N 2 + 3 ~ ) / 2 65 4N 40

( N t l ) ~ ~ / 550 2 2N 20

BUCLEBUCLES ;(N2+4N4: 695 INTER. 1ALOR ABSOLUTO ( N + ~ ) N / ~ 55 SIMPLE 4 ~ + l ) N / 2 55 DOBLE


-

1TIEllPO EN SG. ( ~ 9 . 9 0 3 1 x l O - ~ )

---

- =6%

334

L. GAVETE, F. MICHAVILA Y L. SANCHEZ TEMBLEQUE

TABLA

POS.MEMORIA

1 .

VALOR ABSOLUTO S I M . (N+l)N/2 VALOR ABSOLUTO DOB. (N+l)N/2


:

55

.0.358 2.027 TOTAL

19.69 111.4'85 8204,328 8.1248 8.1836

55

TIEMPO

EN SG

(~9.9031~10-4)

Error = 4.7%

OPTIMIZACION DE ALGORITMOS DE CALCULO NUMERICO

335

Como vemos, las dos versiones a pesar de ser muy diferentes en su concepcin pueden considerarse equivalentes en cuanto a su tiempo de clculo, aunque parece algo mejor no realizar los intercambios de filas (Versin l), a costa de ocupar algo ms de memoria. Sin embargo, si nos fijamos atentamente en las descomposiciones lgicas de las versiones 1 y 2, vemos que ambas se pueden optimizar dado que podemos calcular Con fuera del bucle de ndice K, los trminos A(J,I)/TEMPYA(J,I)/A(I,I). este pequeo cambio el tiempo real (para N= 10) pasa a ser de 6.586 para la versin 1, y 6.918 para la versin 2 respecthamente. Esta ltima todava es mejorable si mantenemos el pivote en TEMP (igual que hacemos en la versin l ) , para evitar la divisin mixta doble que tiene un peso mucho mayor que la divisin simple. Para ello, tendremos que crear una nueva variable auxiliar A U X para realizar el intercambio de filas en vez de la variable TEMP que antes utilizbamos; con ello se reduce el tiempo de ordenador a 6.808. Por todo ello, parece mejor la versin 2 con algo ms de tiempo de clculo a costa de ocupar 2N-1 posiciones de memoria menos. CONCLUSIONES La resolucin del problema parte de un resultado terico que es aplicado mediante un algoritmo determinado. En la programacin de este algoritmo es donde radica principalmente la economa de la resolucin del problema. Es necesario, una vez elegido el algoritmo, analizar y optimizar su programacin, cuestin a la que hasta ahora se ha dado una importancia menor8 Para optimizar la programacin de un algoritmo, se emplean una serie de parmetros, que indican la memoria ocupada y el tiempo necesario para la resolucin de un problema. Mediante el uso de las descomposiciones lgicas podemos obtener de una forma rpida el valor de estos parmetros, los cuales determinarn qu versin es ptima en la aplicacin del algoritmo. Es preciso hacer notar que los parmetros estn interrelacionados entre s, y su importancia es diferente de unos problemas a otros. As, puede que sea mejor tener mayor nmero de operaciones sencillas si por el contrario se reduce el nmero de comparaciones. Adems no es lo mismo operar o comparar variables simples que variables de una matriz. Es interesante restringir al mximo el uso de matrices y caso en que sea necesario intentar operar slo en matrices de una dimensin. Tambin es interesante tratar de evitar las comparaciones. Calculando los pesos con exactitud y teniendo en cuenta los conceptos desarrollados hemos visto cmo se puede calcular el tiempo de clculo con un error menor del 10% lo cual representa un grado de aproximacin aceptable. En cualquier caso es necesario ajustar los pesos de los parmetros para el ordenador y lenguaje que se quiera aplicar, todo ello en funcin de la aproximacin deseada. Otro punto importante es ver la relacin entre el tiempo de ordenador y los datos de entrada para saber si la variacin es lineal, cuadrtica, etc.. .

336

L. GAVETE, F . MICHAVILA Y L. SANCHEZ TEMBLEQUE

REFERENCIAS 1. J. Warnier, B. Flanagan. "Programacin lgica" Tomo 1 Ed. Tcnicos Asociados, (1973). 2. N. Epelboim, B.J. Goodno. "Memory management in structural analysis on microcomputers". Advances in Engineenng Software, Vol. 7 , n? 4, (1985). 3. A. Perronet. "Cours D.E.A. 81-82". Lab. Analyse Numrique, Univer. Pars VI, (1 982). 4. O.C. Zienkiewicz. "El mtodo de los elementos finitos". Ed. Revert, (1980). 5. H.N. Wirth. "Algoritmos estructuras de datos =programas". Ed. del Castillo, (1980). 6 . L. Gavete, L.J. Snchez-Tembleque. "Anlisis de algoritmos numricos utilizando descomposiciones lgicas". I Congreso de lenguajes naturales y lenguajes formales. Barcelona, octubre, (1985). 7. F. Michavila, L. Gavete. "Programacin y Clculo Numrico". Ed. Revert, (1985). 8. H . Schad. "Computing costs for FEM analysis of foundation engineering problems and possible ways of increasing efficiency". Int. J. Num. and Anal. Meth. Geomec. Vol. 9, 26 1-275, (1 985).