Anda di halaman 1dari 20

1.

UN MODELO MATEMTICO SIMPLE

17

A la ecuacin (1.11) se le denomina una aproximacin en diferencia finita dividida de la derivada en el tiempo ti. Sustituyendo en la ecuacin (1.9), tenemos v(ti +1 ) v(ti ) c = g v(ti ) ti +1 ti m Esta ecuacin se reordena para obtener c v(ti +1 ) = v(ti ) + g v(ti ) (ti +1 ti ) m
(1.12)

Note que el trmino entre corchetes es el lado derecho de la propia ecuacin diferencial [ecuacin (1.9)]. Es decir, este trmino nos da un medio para calcular la razn de cambio o la pendiente de v. As, la ecuacin diferencial se ha transformado en una ecuacin que puede utilizarse para determinar algebraicamente la velocidad en ti+1, usando la pendiente y los valores anteriores de v y t. Si se da un valor inicial para la velocidad en algn tiempo ti, es posible calcular con facilidad la velocidad en un tiempo posterior ti +1. Este nuevo valor de la velocidad en ti +1 sirve para calcular la velocidad en ti +2 y as sucesivamente. Es decir, a cualquier tiempo, valor nuevo = valor anterior + pendiente tamao del paso Observe que esta aproximacin formalmente se conoce como mtodo de Euler.

EJEMPLO 1.2

Solucin numrica al problema de la cada de un paracaidista Planteamiento del problema. Realice el mismo clculo que en el ejemplo 1.1, pero usando la ecuacin (1.12) para obtener la velocidad. Emplee un tamao de paso de 2 s para el clculo. Solucin. Al empezar con los clculos (ti = 0), la velocidad del paracaidista es igual a cero. Con esta informacin y los valores de los parmetros del ejemplo 1.1, se utiliza la ecuacin (1.12) para calcular la velocidad en ti +l = 2 s: 12.5 (0) 2 = 19.60 m/s . v=0+ 9 8 68.1 Para el siguiente intervalo (de t = 2 a 4 s), se repite el clculo y se obtiene 12.5 v = 19.60 + 9.8 (19.60) 2 = 32.00 m/s 68.1 Se contina con los clculos de manera similar para obtener los valores siguientes:

18

MODELOS MATEMTICOS Y SOLUCIN DE PROBLEMAS EN INGENIERA

t, s 0 2 4 6 8 10 12

v, m/s 0.00 19.60 32.00 39.85 44.82 47.97 49.96 53.39

Los resultados se muestran grficamente en la figura 1.5, junto con la solucin exacta. Como se puede ver, el mtodo numrico se aproxima bastante a la solucin exacta. Sin embargo, debido a que se emplean segmentos de rectas para aproximar una funcin que es una curva continua, hay algunas diferencias entre los dos resultados. Una forma de reducir estas diferencias consiste en usar un tamao de paso menor. Por ejemplo, si se aplica la ecuacin (1.12) con intervalos de 1 s, se obtendra un error menor, ya que los segmentos de recta estaran un poco ms cerca de la verdadera solucin. Con los clculos manuales, el esfuerzo asociado al usar incrementos cada vez ms pequeos hara poco prcticas tales soluciones numricas. No obstante, con la ayuda de una computadora personal es posible efectuar fcilmente un gran nmero de clculos; por lo tanto, se puede modelar con ms exactitud la velocidad del paracaidista que cae, sin tener que resolver la ecuacin diferencial en forma analtica. Como se vio en el ejemplo anterior, obtener un resultado numrico ms preciso tiene un costo en trminos del nmero de clculos. Cada divisin a la mitad del tamao de paso para lograr mayor precisin nos lleva a duplicar el nmero de clculos. Como

Velocidad terminal o lmite Solucin numrica aproximada 40


v, m/s

Solucin analtica, exacta 20

FIGURA 1.5 Comparacin de las soluciones numricas y analticas para el problema del paracaidista que cae.

4 t, s

12

1.2

LEYES DE CONSERVACIN E INGENIERA

19

vemos, existe un costo inevitable entre la exactitud y la cantidad de operaciones. Esta relacin es de gran importancia en los mtodos numricos y constituyen un tema relevante de este libro. En consecuencia, hemos dedicado el eplogo de la parte uno para ofrecer una introduccin a dicho tipo de relaciones.

1.2

LEYES DE CONSERVACIN E INGENIERA


Aparte de la segunda ley de Newton, existen otros principios importantes en ingeniera. Entre los ms importantes estn las leyes de conservacin. stas son fundamentales en una gran variedad de complicados y poderosos modelos matemticos, las leyes de la conservacin en la ciencia y en la ingeniera conceptualmente son fciles de entender. Puesto que se pueden reducir a Cambio = incremento decremento
(1.13)

ste es precisamente el formato que empleamos al usar la segunda ley de Newton para desarrollar un equilibrio de fuerzas en la cada del paracaidista [ecuacin (1.8)]. Pese a su sencillez, la ecuacin (1.13) representa una de las maneras fundamentales en que las leyes de conservacin se emplean en ingeniera esto es, predecir cambios con respecto al tiempo. Nosotros le daremos a la ecuacin (1.13) el nombre especial de clculo de variable-tiempo (o transitorio). Adems de la prediccin de cambios, las leyes de la conservacin se aplican tambin en casos en los que no existe cambio. Si el cambio es cero, la ecuacin (1.3) ser Cambio = 0 = incremento decremento o bien, Incremento = decremento
(1.14)

As, si no ocurre cambio alguno, el incremento y el decremento debern estar en equilibrio. Este caso, al que tambin se le da una denominacin especial clculo en estado estacionario , tiene diversas aplicaciones en ingeniera. Por ejemplo, para el flujo

Tubera 2 Flujo de entrada = 80

Tubera 1 Flujo de entrada = 100

Tubera 4 Flujo de salida = ?

FIGURA 1.6 Equilibrio del ujo de un uido incompresible en estado estacionario a travs de tuberas.

Tubera 3 Flujo de salida = 120

20

MODELOS MATEMTICOS Y SOLUCIN DE PROBLEMAS EN INGENIERA

de un fluido incompresible en estado estacionario a travs de tuberas, el flujo de entrada debe estar en equilibrio con el flujo de salida, esto es Flujo de entrada = flujo de salida Para la unin de tuberas de la figura 1.6, esta ecuacin de equilibrio se utiliza para calcular el flujo de salida de la cuarta tubera, que debe ser de 60. Para la cada del paracaidista, las condiciones del estado estacionario deberan corresponder al caso en que la fuerza total fuera igual a cero o [ecuacin (1.8) con dv /dt = 0] mg = cv
(1.15)

As, en el estado estacionario, las fuerzas hacia abajo y hacia arriba estn equilibradas, y en la ecuacin (1.15) puede encontrarse la velocidad terminal. v= mg c

Aunque las ecuaciones (1.13) y (1.14) pueden parecer triviales, stas determinan las dos maneras fundamentales en que las leyes de la conservacin se emplean en ingeniera. Como tales, en los captulos siguientes sern parte importante de nuestros esfuerzos por mostrar la relacin entre los mtodos numricos y la ingeniera. Nuestro primer medio para establecer tal relacin son las aplicaciones a la ingeniera que aparecen al final de cada parte del libro. En la tabla 1.1 se resumen algunos de los modelos sencillos de ingeniera y las leyes de conservacin correspondientes, que constituirn la base de muchas de las aplicaciones a la ingeniera. La mayora de aplicaciones de ingeniera qumica harn nfasis en el balance de masa para el estudio de los reactores. El balance de masa es una consecuencia de la conservacin de la masa. ste especifica que, el cambio de masa de un compuesto qumico en un reactor, depende de la cantidad de masa que entra menos la cantidad de masa que sale. Las aplicaciones en ingeniera civil y mecnica se enfocan al desarrollo de modelos a partir de la conservacin del momentum. En la ingeniera civil se utilizan fuerzas en equilibrio para el anlisis de estructuras como las armaduras sencillas de la tabla. El mismo principio se aplica en ingeniera mecnica, con la finalidad de analizar el movimiento transitorio hacia arriba o hacia abajo, o las vibraciones de un automvil. Por ltimo, las aplicaciones en ingeniera elctrica emplean tanto balances de corriente como de energa para modelar circuitos elctricos. El balance de corriente, que resulta de la conservacin de carga, es similar al balance del flujo representado en la figura 1.6. As como el flujo debe equilibrarse en las uniones de tuberas, la corriente elctrica debe estar balanceada o en equilibrio en las uniones de alambres elctricos. El balance de energa especifica que la suma algebraica de los cambios de voltaje alrededor de cualquier malla de un circuito debe ser igual a cero. Las aplicaciones en ingeniera se proponen para ilustrar cmo se emplean actualmente los mtodos numricos en la solucin de problemas en ingeniera. Estas aplicaciones nos permitirn examinar la solucin a los problemas prcticos (tabla 1.2) que surgen en el mundo real. Establecer la relacin entre las tcnicas matemticas como los mtodos numricos y la prctica de la ingeniera es un paso decisivo para mostrar su verdadero potencial. Examinar de manera cuidadosa las aplicaciones a la ingeniera nos ayudar a establecer esta relacin.

1.2

LEYES DE CONSERVACIN E INGENIERA

21

TABLA 1.1 Dispositivos y tipos de balances que se usan comnmente en las cuatro grandes reas de la ingeniera. En cada caso se especica la ley de conservacin en que se fundamenta el balance.
Campo Ingeniera qumica Dispositivo Principio aplicado Expresin matemtica Balance de la masa: Entrada

Conservacin Reactores de la masa

Salida

En un periodo masa = entradas salidas Ingeniera civil Estructura FH FV En cada nodo fuerzas horizontales (FH ) = 0 fuerzas verticales (FV ) = 0 Ingeniera mecnica Mquina Conservacin del momentum Equilibrio de fuerzas: Fuerza hacia arriba x=0 Fuerza hacia abajo
2 md x = Fuerza hacia abajo fuerza hacia arriba dt 2

Conservacin del momentum

Equilibrio de fuerzas:

+ FV + FH

Ingeniera elctrica

+ Circuito

Conservacin de la carga

Balance de corriente: En cada nodo corriente (i ) = 0 + i1 + i2 i3

Conservacin de la energa

Balance de voltaje: i2R2

i1R1 i3R3

Alrededor de cada malla fems cada de potencial en los resistores = 0 iR = 0

22

MODELOS MATEMTICOS Y SOLUCIN DE PROBLEMAS EN INGENIERA

TABLA 1.2 Algunos aspectos prcticos que se investigarn en las aplicaciones a la ingeniera al nal de cada parte del libro.
1. No lineal contra lineal. Mucho de la ingeniera clsica depende de la linealizacin que permite soluciones analticas. Aunque esto es con frecuencia apropiado, puede lograrse una mejor comprensin cuando se revisan los problemas no lineales. 2. Grandes sistemas contra pequeos. Sin una computadora, no siempre es posible examinar sistemas en que intervienen ms de tres componentes. Con las computadoras y los mtodos numricos, se pueden examinar en forma ms realista sistemas multicomponentes. 3. No ideal contra ideal. En ingeniera abundan las leyes idealizadas. A menudo, hay alternativas no idealizadas que son ms realistas pero que demandan muchos clculos. La aproximacin numrica llega a facilitar la aplicacin de esas relaciones no ideales. 4. Anlisis de sensibilidad. Debido a que estn involucrados, muchos clculos manuales requieren una gran cantidad de tiempo y esfuerzo para su correcta realizacin. Esto algunas veces desalienta al analista cuando realiza los mltiples clculos que son necesarios al examinar cmo responde un sistema en diferentes condiciones. Tal anlisis de sensibilidad se facilita cuando los mtodos numricos permiten que la computadora asuma la carga de clculo. 5. Diseo. Determinar el comportamiento de un sistema en funcin de sus parmetros es a menudo una proposicin sencilla. Por lo comn, es ms difcil resolver el problema inverso; es decir, determinar los parmetros cuando se especica el comportamiento requerido. Entonces, los mtodos numricos y las computadoras permiten realizar esta tarea de manera eciente.

PROBLEMAS
1.1 Aproximadamente, 60% del peso total del cuerpo corresponde al agua. Si se supone que es posible separarla en seis regiones, los porcentajes seran los que siguen. Al plasma corresponde 4.5% del peso corporal y 7.5% del total del agua en el cuerpo. Los tejidos conectivos densos y los cartlagos ocupan 4.5% del peso total del cuerpo y 7.5% del total de agua. La linfa intersticial equivale a 12% del peso del cuerpo y 20% del total de agua en ste. El agua inaccesible en los huesos es aproximadamente 7.5% del total de agua corporal y 4.5% del peso del cuerpo. Si el agua intracelular equivale a 33% del peso total del cuerpo y el agua transcelular ocupa 2.5% del total de agua en el cuerpo, qu porcentaje del peso total corporal debe corresponder al agua transcelular, y qu porcentaje del total de agua del cuerpo debe ser el del agua intracelular? 1.2 Un grupo de 30 estudiantes asiste a clase en un saln que mide 10 m por 8 m por 3 m. Cada estudiante ocupa alrededor de 0.075 m3 y genera cerca de 80 W de calor (1 W = 1 J/s). Calcule el incremento de la temperatura del aire durante los primeros 15 minutos de la clase, si el saln est sellado y aislado por completo. Suponga que la capacidad calorfica del aire, Cu, es de 0.718 kJ/(kg K). Suponga que el aire es un gas ideal a 20 C y 101.325 kPa. Obsrvese que el calor absorbido por el aire Q est relacionado con la masa de aire m, la capacidad calorfica, y el cambio en la temperatura, por medio de la relacin siguiente: Q=m PV = m RT Mwt

donde P es la presin del gas, V es el volumen de ste, Mwt es el peso molecular del gas (para el aire, 28.97 kg/kmol), y R es la constante del gas ideal [8.314 kPa m3/(kmol K)]. 1.3 Se dispone de la informacin siguiente de una cuenta bancaria:
Fecha 5/1 220.13 6/1 216.80 7/1 450.25 8/1 127.31 9/1 350.61 106.80 378.61 327.26 Depsitos Retiros Balance 1512.33

C dT = mC (T T )
T1 v v 2 1

T2

La masa del aire se obtiene de la ley del gas ideal:

Utilice la conservacin del efectivo para calcular el balance al 6/1, 7/1, 8/1 y 9/1. Demuestre cada paso del clculo. Este clculo es de estado estacionario o transitorio? 1.4 La tasa de flujo volumtrico a travs de un tubo est dado por la ecuacin Q = v A, donde v es la velocidad promedio y A

PROBLEMAS

23

Q1,ent = 40 m3/s

Q2,sal = 20 m3/s

1.9 En vez de la relacin lineal de la ecuacin (1.7), elija modelar la fuerza hacia arriba sobre el paracaidista como una relacin de segundo orden, FU = cv2 donde c = un coeficiente de arrastre de segundo orden (kg/m). a) Con el empleo del clculo, obtenga la solucin de forma cerrada para el caso en que al inicio el saltador se encuentra en reposo (v = 0 en t = 0). b) Repita el clculo numrico en el ejemplo 1.2 con los mismos valores de condicin inicial y de parmetros. Utilice un valor de 0.225 kg/m para c. 1.10 Calcule la velocidad de un paracaidista en cada libre con el empleo del mtodo de Euler para el caso en que m = 80 kg y c = 10 kg/s. Lleve a cabo el clculo desde t = 0 hasta t = 20 s con un tamao de paso de 1 s. Use una condicin inicial en que el paracaidista tiene una velocidad hacia arriba de 20 m/s en t = 0. Suponga que el paracadas se abre instantneamente en t = 10 s, de modo que el coeficiente de arrastre sube a 50 kg/s. 1.11 En el ejemplo del paracaidista en cada libre, se supuso que la aceleracin debida a la gravedad era un valor constante de 9.8 m/s2. Aunque sta es una buena aproximacin cuando se estudian objetos en cada cerca de la superficie de la tierra, la fuerza gravitacional disminuye conforme se acerca al nivel del mar. Una representacin ms general basada en la ley de Newton del inverso del cuadrado de la atraccin gravitacional, se escribe como g( x ) = g(0 ) R2 ( R + x )2

V3,sal = 6 m/s A3 = ?

Figura P1.4 es el rea de la seccin transversal. Utilice la continuidad volumtrica para resolver cul es el rea requerida en el tubo 3. 1.5 En la figura P1.5 se ilustran formas distintas en las que un hombre promedio gana o pierde agua durante el da. Se ingiere un litro en forma de comida, y el cuerpo produce en forma metablica 0.3 L. Al respirar aire, el intercambio es de 0.05 L al inhalar, y 0.4 L al exhalar, durante el periodo de un da. El cuerpo tambin pierde 0.2, 1.4, 0.2 y 0.35 L a travs del sudor, la orina, las heces y por la piel, respectivamente. Con objeto de mantener la condicin de estado estacionario, cunta agua debe tomarse por da?
Piel Orina Heces

Comida CUERPO Bebida

Aire Sudor

Metabolismo

Figura P1.5

1.6 Para el paracaidista en cada libre con arrastre lineal, suponga un primer saltador de 70 kg con coeficiente de arrastre de 12 kg/s. Si un segundo saltador tiene un coeficiente de arrastre de 15 kg/s y una masa de 75 kg, cunto tiempo le tomar alcanzar la misma velocidad que el primero adquiera en 10 s? 1.7 Utilice el clculo para resolver la ecuacin (1.9) para el caso en que la velocidad inicial, v (0) es diferente de cero. 1.8 Repita el ejemplo 1.2. Calcule la velocidad en t = 10 s, con un tamao de paso de a) 1 y b) 0.5 s. Puede usted establecer algn enunciado en relacin con los errores de clculo con base en los resultados?

donde g(x) = aceleracin gravitacional a una altitud x (en m) medida hacia arriba a partir de la superficie terrestre (m/s2), g(0) = aceleracin gravitacional en la superficie terrestre ( 9.8 m/s2), y R = el radio de la tierra ( 6.37 106 m). a) En forma similar en que se obtuvo la ecuacin (1.9), use un balance de fuerzas para obtener una ecuacin diferencial para la velocidad como funcin del tiempo que utilice esta representacin ms completa de la gravitacin. Sin embargo, para esta obtencin, suponga como positiva la velocidad hacia arriba. b) Para el caso en que el arrastre es despreciable, utilice la regla de la cadena para expresar la ecuacin diferencial como funcin de la altitud en lugar del tiempo. Recuerde que la regla de la cadena es dv dv dx = dt dx dt c) Use el clculo para obtener la forma cerrada de la solucin donde v = v0 en = 0. d) Emplee el mtodo de Euler para obtener la solucin numrica desde x = 0 hasta 100 000 m, con el uso de un paso de

24

MODELOS MATEMTICOS Y SOLUCIN DE PROBLEMAS EN INGENIERA

10 000 m, donde la velocidad inicial es de 1400 m/s hacia arriba. Compare su resultado con la solucin analtica. 1.12 La cantidad de un contaminante radiactivo distribuido uniformemente que se encuentra contenido en un reactor cerrado, se mide por su concentracin c (becquerel/litro, o Bq/L). El contaminante disminuye con una tasa de decaimiento proporcional a su concentracin, es decir: tasa de decaimiento = kc donde k es una constante con unidades de da1. Entonces, de acuerdo con la ecuacin (1.13), puede escribirse un balance de masa para el reactor, as: dc = kc dt cambio = disminucin de la masa por decaimiento

o bien, como el rea de la superficie A es constante dy Q Q = 3 sen 2 t dx A A Emplee el mtodo de Euler para resolver cul sera la profundidad y, desde t = 0 hasta 10 d, con un tamao de paso de 0.5 d. Los valores de los parmetros son A = 1200 m2 y Q = 500 m3/d. Suponga que la condicin inicial es y = 0. 1.14 Para el mismo tanque de almacenamiento que se describe en el problema 1.13, suponga que el flujo de salida no es constante sino que la tasa depende de la profundidad. Para este caso, la ecuacin diferencial para la profundidad puede escribirse como dy Q (1 + y)1.5 = 3 sen 2 t dx A A Use el mtodo de Euler para resolver cul sera la profundidad y, desde t = 0 hasta 10 d, con un tamao de paso de 0.5 d. Los valores de los parmetros son A = 1200 m2, Q = 500 m3/d, y a = 300. Suponga que la condicin inicial es y = 0. 1.15 Suponga que una gota esfrica de lquido se evapora a una tasa proporcional al rea de su superficie. dV = kA dt donde V = volumen (mm3), t = tiempo (h), k = la tasa de evaporacin (mm/h), y A = rea superficial (mm2). Emplee el mtodo de Euler para calcular el volumen de la gota desde t = 0 hasta 10 min usando un tamao de paso de 0.25 min. Suponga que k = 0.1 mm/min, y que al inicio la gota tiene un radio de 3 mm. Evale la validez de sus resultados por medio de determinar el radio de su volumen final calculado y la verificacin de que es consistente con la tasa de evaporacin. 1.16 La ley de Newton del enfriamiento establece que la temperatura de un cuerpo cambia con una tasa que es proporcional a la diferencia de su temperatura y la del medio que lo rodea (temperatura ambiente). dT = k (T Ta ) dt

) (

a) Use el mtodo de Euler para resolver esta ecuacin desde t = 0 hasta 1 d, con k = 0.2 d1. Emplee un tamao de paso de t = 0.1. La concentracin en t = 0 es de 10 Bq/L. b) Grafique la solucin en papel semilogartmico (p.ej., ln c versus t) y determine la pendiente. Interprete sus resultados. 1.13 Un tanque de almacenamiento contiene un lquido con profundidad y, donde y = 0 cuando el tanque est lleno a la mitad. El lquido se extrae con una tasa de flujo constante Q a fin de satisfacer las demandas. Se suministra el contenido a una tasa senoidal de 3Q sen2(t).
y

Figura P1.13

Para este sistema, la ecuacin (1.13) puede escribirse como d ( Ay ) dx cambio en el volumen = 3Q sen 2 t Q

) = (flujo de entrada) (flujo de salida)

donde T = temperatura del cuerpo (C), t = tiempo (min), k = constante de proporcionalidad (por minuto), y Ta = temperatura del ambiente (C). Suponga que una tasa de caf tiene originalmente una temperatura de 68C. Emplee el mtodo de Euler para calcular la temperatura desde t = 0 hasta 10 min, usando un tamao de paso de 1 min, si Ta = 21C y k = 0.017/min. 1.17 Las clulas cancerosas crecen en forma exponencial con un tiempo de duplicacin de 20 h cuando tienen una fuente ilimitada de nutrientes. Sin embargo, conforme las clulas comienzan a formar un tumor de forma esfrica sin abasto de sangre, el

PROBLEMAS

25

crecimiento en el centro del tumor queda limitado, y eventualmente las clulas empiezan a morir. a) El crecimiento exponencial del nmero de clulas N puede expresarse como se indica, donde es la tasa de crecimiento de las clulas. Encuentre el valor de para las clulas cancerosas. dN = N dt b) Construya una ecuacin que describa la tasa de cambio del volumen del tumor durante el crecimiento exponencial, dado que el dimetro de una clula individual es de 20 micras. c) Una vez que un tipo particular de tumor excede las 500 micras de dimetro, las clulas del centro del tumor se mueren (pero continan ocupando espacio en el tumor). Determine cunto tiempo tomar que el tumor exceda ese tamao crtico.

1.18 Se bombea un fluido por la red que se ilustra en la figura P1.18. Si Q2 = 0.6, Q3 = 0.4, Q7 = 0.2 y Q8 = 0.3 m3/s, determine los otros flujos.

Q1

Q3

Q5

Q2

Q4

Q6

Q7

Q10

Q9

Q8

Figura P1.18

CAPTULO 2 Programacin y software


En el captulo anterior, desarrollamos un modelo matemtico a partir de la fuerza total para predecir la velocidad de cada de un paracaidista. Este modelo tena la forma de una ecuacin diferencial, dv c = g v dt m Tambin vimos que se obtena una solucin de esta ecuacin utilizando un mtodo numrico simple, llamado mtodo de Euler, v i +1 = v i + dv i t dt

Dada una condicin inicial, se emplea esta ecuacin repetidamente para calcular la velocidad como una funcin del tiempo. Sin embargo, para obtener una buena precisin sera necesario desarrollar muchos pasos pequeos. Hacerlo a mano sera muy laborioso y tomara mucho tiempo; pero, con la ayuda de las computadoras tales clculos pueden realizarse fcilmente. Por ende, nuestro siguiente objetivo consiste en observar cmo se hace esto. En el presente captulo daremos una introduccin al uso de la computadora como una herramienta para obtener soluciones de este tipo.

2.1

PAQUETES Y PROGRAMACIN
En la actualidad existen dos tipos de usuarios de software. Por un lado estn aquellos que toman lo que se les da. Es decir, quienes se limitan a las capacidades que encuentran en el modo estndar de operacin del software existente. Por ejemplo, resulta muy sencillo resolver un sistema de ecuaciones lineales o generar una grfica con valores x-y con Excel o con MATLAB. Como este modo de operacin por lo comn requiere un mnimo esfuerzo, muchos de los usuarios adoptan este modo de operacin. Adems, como los diseadores de estos paquetes se anticipan a la mayora de las necesidades tpicas de los usuarios, muchos de los problemas pueden resolverse de esta manera. Pero, qu pasa cuando se presentan problemas que estn ms all de las capacidades estndar de dichas herramientas? Por desgracia, decir Lo siento jefe, pero no lo s hacer no es algo aceptado en la mayora de los crculos de la ingeniera. En tales casos usted tiene dos alternativas. La primera sera buscar otro paquete y ver si sirve para resolver el problema. sta es una de las razones por las que quisimos usar tanto Excel como MATLAB en este libro. Como veremos, ninguno de los dos abarca todo y cada uno tiene sus ventajas.

2.1

PAQUETES Y PROGRAMACIN

27

Sabiendo usar ambos, se ampla de forma notable el rango de problemas que pueden resolverse. La segunda sera que es posible volverse un potente usuario si se aprende a escribir macros en Excel VBA1 o archivos M (M-files) en MATLAB. Y qu son tales cuestiones? No son ms que programas computacionales que permiten ampliar la capacidad de estas herramientas. Como los ingenieros nunca se sentirn satisfechos al verse limitados por las herramientas, harn todo lo que sea necesario para resolver sus problemas. Una buena manera de lograrlo consiste en aprender a escribir programas en los ambientes de Excel y MATLAB. Adems, las habilidades necesarias para crear macros o archivos M (M-files) son las mismas que se necesitan para desarrollar efectivamente programas en lenguajes como Fortran 90 o C. El objetivo principal del captulo es ensearle cmo se hace esto. Sin embargo, supondremos que usted ya ha tenido contacto con los rudimentos de la programacin y, por tal razn, destacaremos las facetas de la programacin que afectan directamente su uso en la solucin de problemas en ingeniera. 2.1.1 Programas computacionales Los programas computacionales son nicamente conjuntos de instrucciones que dirigen a la computadora para realizar una cierta tarea. Hay mucha gente que escribe programas para un amplio rango de aplicaciones en los lenguajes de alto nivel, como Fortran 90 o C, porque tienen una gran variedad de capacidades. Aunque habr algunos ingenieros que usarn toda la amplia gama de capacidades, la mayora slo necesitar realizar los clculos numricos orientados a la ingeniera. Visto desde esta perspectiva, reducimos toda esa complejidad a unos cuantos tpicos de programacin, que son: Representacin de informacin sencilla (declaracin de constantes, variables y tipos) Representacin de informacin ms compleja (estructuras de datos, arreglos y registros) Frmulas matemticas (asignacin, reglas de prioridad y funciones intrnsecas) Entrada/Salida Representacin lgica (secuencia, seleccin y repeticin) Programacin modular (funciones y subrutinas)

Como suponemos que el lector ya ha tenido algn contacto con la programacin, no dedicaremos mucho tiempo en las cuatro primeras reas. En lugar de ello, las presentamos como una lista para que el lector verifique lo que necesitar saber para desarrollar los programas que siguen. No obstante, s dedicaremos algn tiempo a los dos ltimos tpicos. Destacaremos la representacin lgica porque es el rea que ms influye en la coherencia y la comprensin de un algoritmo. Trataremos la programacin modular porque tambin contribuye de manera importante en la organizacin de un programa. Adems, los mdulos son un medio para almacenar algoritmos utilizados frecuentemente en un formato adecuado para aplicaciones subsecuentes.
1

VBA son las siglas de Visual Basic for Applications.

28

PROGRAMACIN Y SOFTWARE

2.2

PROGRAMACIN ESTRUCTURADA
En los comienzos de la computacin, los programadores no daban mucha importancia a que sus programas fueran claros y fciles de entender. Sin embargo, hoy se reconoce que escribir programas organizados y bien estructurados tiene muchas ventajas. Adems de las ventajas obvias de tener un software ms accesible para compartirlo, tambin ayuda a generar programas mucho ms eficientes. Es decir, algoritmos bien estructurados, que son invariablemente mucho ms fciles de depurar y de probar, lo que resulta en programas que toman menos tiempo desarrollar, probar y actualizar. Los cientficos de la computacin han estudiado sistemticamente los factores y los procedimientos necesarios para desarrollar software de alta calidad de este tipo. En esencia la programacin estructurada es un conjunto de reglas que desarrollan en el programador los hbitos para lograr un buen estilo. Aunque la programacin estructurada es bastante flexible para permitir considerable creatividad y expresin personal, sus reglas imponen suficientes restricciones para hacer que los programas resultantes sean muy superiores a sus versiones no estructuradas. En particular, el producto terminado es mucho ms elegante y fcil de entender. La idea clave detrs de la programacin estructurada es que cualquier algoritmo numrico requiere tan slo de tres estructuras de control fundamentales: secuencia, seleccin y repeticin. Limitndonos a dichas estructuras el programa resultante ser claro y fcil de seguir. En los prrafos siguientes describiremos cada una de estas estructuras. Para mantener esta descripcin de una manera general usaremos diagramas de flujo y seudocdigo. Un diagrama de flujo es una representacin visual o grfica de un algoritmo. Un diagrama de flujo emplea una serie de cajas o bloques y flechas, cada una de las cuales representa un determinado paso u operacin del algoritmo (figura 2.1). Las flechas representan el orden en el que se realizarn las operaciones. No todas las personas relacionadas con la computacin estn de acuerdo en que los diagramas de flujo sean una buena opcin. Incluso, algunos programadores experimentados no usan los diagramas de flujo. Sin embargo, nosotros pensamos que existen tres buenas razones para estudiarlos. La primera es que sirven para expresar y comunicar algoritmos. La segunda es que aunque no se empleen de manera rutinaria, algunas veces resultarn tiles para planear, aclarar o comunicar la lgica del propio programa o del de otra persona. Por ltimo, que es lo ms importante para nuestros objetivos, son excelentes herramientas didcticas. Desde el punto de vista de la enseanza, son los medios ideales para visualizar algunas de las estructuras de control fundamentales que se emplean en la programacin. Otra manera de expresar algoritmos, y que constituye un puente de unin entre los diagramas de flujo y el cdigo de la computadora, es el seudocdigo. En esta tcnica se utilizan expresiones semejantes a las del cdigo, en lugar de los smbolos grficos del diagrama de flujo. En esta obra, para el seudocdigo hemos adoptado algunas convenciones de estilo. Escribiremos con maysculas las palabras clave como IF, DO, INPUT, etc., mientras que las condiciones, pasos del proceso y tareas irn en minsculas. Adems, los pasos del proceso se escribirn en forma indentada. De esta manera las palabras clave forman un sandwich alrededor de los pasos para definir visualmente lo que abarca cada estructura de control.

2.2

PROGRAMACIN ESTRUCTURADA

29

SMBOLO

NOMBRE Terminal Lneas de flujo Proceso Entrada/Salida Decisin Unin Conexin de fin de pgina Ciclo de cuenta controlada

FUNCIN Representa el inicio o el final de un programa. Representan el flujo de la lgica. Los arcos en la flecha horizontal indican que sta pasa sobre las lneas de flujo verticales y no se conecta con ellas. Representa clculos o manipulacin de datos. Representa entrada o salida de datos e informacin. Representa una comparacin, una pregunta o una decisin que determina los caminos alternativos a seguir. Representa la confluencia de lneas de flujo. Representa una interrupcin que contina en otra pgina. Se usa para ciclos que repiten un nmero predeterminado de iteraciones.

FIGURA 2.1 Smbolos usados en los diagramas de ujo.

Una ventaja del seudocdigo es que con l resulta ms fcil desarrollar un programa que con el diagrama de flujo. El seudocdigo es tambin ms fcil de modificar y de compartir con los dems. No obstante, los diagramas de flujo, debido a su forma grfica, resultan a veces ms adecuados para visualizar algoritmos complejos. Nosotros emplearemos diagramas de flujo con fines didcticos, y el seudocdigo ser el principal medio que usaremos para comunicar algoritmos relacionados con mtodos numricos. 2.2.1 Representacin lgica Secuencia. La estructura secuencial expresa la trivial idea de que, a menos que se indique otra cosa, el cdigo debe realizarse instruccin por instruccin. Como en la figura 2.2, la estructura se puede expresar de manera general como un diagrama de flujo o como un seudocdigo. Seleccin. En contraste con el paso por paso de la estructura secuencial, la seleccin nos ofrece un medio de dividir el flujo del programa en ramas considerando el resultado de una condicin lgica. La figura 2.3 muestra las dos principales maneras de hacer esto. La decisin ante una sola alternativa, o estructura IF /THEN (figura 2.3a), nos permite una desviacin en el flujo del programa si una condicin lgica es verdadera. Si esta condicin es falsa no ocurre nada y el programa contina con la indicacin que se encuentra despus del ENDIF. La decisin ante dos alternativas, o estructura IF /THEN / ELSE (figura 2.3b), se comporta de la misma manera si la condicin es verdadera; sin embargo, si la condicin es falsa, el programa realiza las instrucciones entre el ELSE y el ENDIF.

30

PROGRAMACIN Y SOFTWARE

Instruccin1

Instruccin2

Instruccin3

Instruccin1 Instruccin2 Instruccin3 Instruccin4

FIGURA 2.2 a) Diagrama de ujo y b) seudocdigo para la estructura secuencial.

Instruccin4

a) Diagrama de flujo

b) Seudocdigo

Aunque las estructuras IF/THEN e IF/THEN/ELSE son suficientes para construir cualquier algoritmo numrico, por lo comn tambin se usan otras dos variantes. Suponga que el ELSE de un IF/THEN/ELSE contiene otro IF/THEN. En tales casos el ELSE y el IF se pueden combinar en la estructura IF/THEN/ELSEIF que se muestra en la figura 2.4a.
FIGURA 2.3 Diagrama de ujo y seudocdigo para estructuras de seleccin simple. a) Seleccin con una alternativa (IF/THEN) y b) seleccin con dos alternativas (IF/THEN/ELSE).

Diagrama de flujo

Seudocdigo

Condicin ?

Verdadero IF condicin THEN Bloque verdadero ENDIF

Bloque verdadero

a) Estructura (IF/THEN) para una sola alternativa

Falso

Condicin ?

Verdadero IF condicin THEN Bloque verdadero ELSE Bloque falso ENDIF

Bloque falso

Bloque verdadero

b) Estructura (IF/ THEN/ELSE) para dos alternativas

2.2

PROGRAMACIN ESTRUCTURADA

31

Diagrama de flujo

Seudocdigo

Falso

Condicin1 ? Verdadero

Verdadero

Falso

Condicin2 ? Verdadero

Bloque1

Falso

Condicin3 ?

Bloque2

Bloque4

Bloque3

IF condicin1 THEN Bloque1 ELSEIF condicin2 Bloque2 ELSEIF condicin3 Bloque3 ELSE Bloque4 ENDIF

a) Estructura con mltiples alternativas (IF/THEN/ELSEIF)


SELECT CASE Expresin de prueba CASE Valor1 Bloque1 CASE Valor2 Bloque2 CASE Valor3 Bloque3 CASE ELSE Bloque4 END SELECT

Expresin de prueba

Valor1 Bloque1

Valor2 Bloque2

Valor3 Bloque3

Otro Bloque4

b) Estructura CASE (SELECCIONA o DESVA)


FIGURA 2.4 Diagrama de ujo y seudocdigo para construcciones de seleccin o ramicacin. a) Seleccin de mltiples alternativas (IF/THEN/ELSEIF) y b) Construccin CASE.

Observe que en la figura 2.4a hay una cadena o cascada de decisiones. La primera es una instruccin IF y cada una de las decisiones sucesivas es un ELSEIF. Siguiendo la cadena hacia abajo, la primera condicin que resulte verdadera ocasionar una desviacin a su correspondiente bloque de cdigo, seguida por la salida de la estructura. Al final de la cadena de condiciones, si todas las condiciones resultaron falsas, se puede adicionar un bloque ELSE opcional.

32

PROGRAMACIN Y SOFTWARE

La estructura CASE es una variante de este tipo de toma de decisiones (figura 2.4b). En lugar de probar condiciones individuales, las ramificaciones dependen del valor de una sola expresin de prueba. Segn sea su valor, se presentarn diferentes bloques de cdigo. Adems, si la expresin no toma ninguno de los valores previstos, se puede proponer un bloque opcional (CASE ELSE). Repeticin. La repeticin nos proporciona una manera de llevar a cabo instrucciones repetidamente. Las estructuras resultantes, llamadas loops o ciclos, se presentan en dos formas distintas que se diferencian por la manera en que terminan. El primer tipo, y el fundamental, es el llamado loop de decisin debido a que termina basndose en el resultado de una condicin lgica. La figura 2.5 muestra el tipo general de loop de decisin, la construccin DOEXIT, tambin llamada loop de interrupcin (break loop). Esta estructura realiza repeticiones hasta que una condicin lgica resulte verdadera. En esta estructura no es necesario tener dos bloques. Cuando se omite el primer bloque, a la estructura se le suele llamar loop de preprueba porque la prueba lgica se realiza antes de que ocurra algo. Si se omite el segundo bloque, se le llama loop posprueba. Al caso general, en el que se incluyen los dos bloques, se le llama loop de prueba intermadia (midtest). Hay que hacer notar que el loop DOEXIT fue introducido en Fortran 90 para tratar de simplificar los loops de decisin. Esta estructura de control es parte estndar del lenguaje VBA de macros en Excel; pero no forma parte estndar de C o de MATLAB, que usan la estructura llamada WHILE. Como nosotros consideramos superior a la estructura DOEXIT, la hemos adoptado en este libro como la estructura de loop de decisin. Para que nuestros algoritmos se realicen tanto en MATLAB como en Excel, mostraremos ms adelante, en este captulo (vase la seccin 2.5), cmo simular el loop de interrupcin usando la estructura WHILE.

FIGURA 2.5 Loop DOEXIT o de interrupcin.

Diagrama de flujo

Seudocdigo

Bloque1

Condicin ?

Verdadero

DO Bloque1 IF condicin EXIT Bloque2 ENDDO

Falso Bloque2

2.2

PROGRAMACIN ESTRUCTURADA

33

Diagrama de flujo

Seudocdigo

Verdadero

i > fin ?

i = inicio i = i + incr. DOFOR i = inicio, fin, incremento ENDDO

Falso

FIGURA 2.6 Construccin controlada por conteo o construccin DOFOR.

Bloque

Al loop de interrupcin que se presenta en la figura 2.5 se le llama loop lgico porque termina a causa de una condicin lgica. Por otro lado, se tiene el loop controlado por contador o loop DOFOR (figura 2.6) que realiza un nmero determinado de repeticiones o iteraciones. El loop controlado por contador funciona como sigue. El ndice (representado por i en la figura 2.6) es una variable a la que se le da un valor inicial. El programa prueba si el ndice es menor o igual al valor final, fin. Si es as, entonces ejecuta el cuerpo del loop y vuelve al DO. Cada vez que encuentra el ENDDO el ndice se incrementa automticamente con el valor definido por el incremento. De manera que el ndice acta como un contador. Cuando el ndice es mayor que el valor final ( fin), la computadora sale automticamente del loop y transfiere el control a la lnea que sigue despus del ENDDO. Observe que casi en todos los lenguajes de programacin, incluyendo Excel y MATLAB, si se omite el incremento, la computadora supone que ste es igual a 1.2 Los algoritmos numricos que se describen en las pginas siguientes se desarrollarn usando nicamente las estructuras presentadas en las figuras 2.2 a 2.6. El ejemplo siguiente presenta el mtodo bsico para desarrollar un algoritmo que determine las races de la ecuacin cuadrtica. EJEMPLO 2.1 Algoritmo para las races de la ecuacin cuadrtica Planteamiento del problema. ax2 + bx + c = 0 se determinan mediante la frmula cuadrtica, x1 x2
2

Las races de una ecuacin cuadrtica

b | b 2 4 ac | 2a

(2.1)

Se puede usar incremento (decremento) negativo, en cuyo caso el loop termina cuando el ndice es menor que el valor nal.

34

PROGRAMACIN Y SOFTWARE

Desarrolle un algoritmo que haga lo siguiente:


Paso 1: Pida al usuario los coecientes a, b y c. Paso 2: Realice las operaciones de la frmula cuadrtica previendo todas las eventualidades (como, por ejemplo, evitar la divisin entre cero y permitir races complejas). Paso 3: D la solucin, es decir, los valores de x. Paso 4: D al usuario la opcin de volver al paso 1 y repetir el proceso.

Solucin. Para desarrollar el algoritmo usaremos un mtodo que va de lo general a lo particular (mtodo top-down). Esto es, iremos refinando cada vez ms el algoritmo en lugar de detallar todo a la primera vez. Para esto, supongamos, por lo pronto, que ya probamos que estn bien los valores de los coeficientes de la frmula cuadrtica (claro que esto no es cierto, pero por lo pronto as lo consideraremos). Un algoritmo estructurado para realizar la tarea es
DO INPUT a, b, c r1 = (b + SQRT (b2 4ac))/(2a) r2 = (b SQRT (b2 4ac))/(2a) DISPLAY r1, r2 DISPLAY Repetir? Conteste s o no INPUT respuesta IF respuesta = no EXIT ENDDO

La construccin DOEXIT se utiliza para repetir el clculo de la ecuacin cuadrtica siempre que la condicin sea falsa. La condicin depende del valor de la variable de tipo carcter respuesta. Si respuesta es igual a s entonces se llevan a cabo los clculos. Si no es as, si respuesta es igual a no, el loop termina. De esta manera, el usuario controla la terminacin mediante el valor de respuesta. Ahora bien, aunque el algoritmo anterior funcionar bien en ciertos casos, todava no est completo. El algoritmo quiz no funcione para algunos valores de las variables. Esto es: Si a = 0 se presentar inmediatamente un problema debido a la divisin entre cero. Si inspeccionamos cuidadosamente la ecuacin (2.1) veremos que aqu se pueden presentar dos casos: Si b 0, la ecuacin se reduce a una ecuacin lineal con una raz real, c /b Si b = 0, entonces no hay solucin. Es decir, el problema es trivial. Si a 0, entonces, segn sea el valor del discriminante, d = b2 4ac, se pueden presentar tambin dos casos, Si d 0, habr dos races reales.* Si d < 0, habr dos races complejas.

Observe cmo hemos dejado una sangra adicional para hacer resaltar la estructura de decisin que subyace a las matemticas. Esta estructura se traduce, despus, en un conjunto de estructuras IF/THEN/ELSE acopladas que se pueden insertar en la parte con los comandos sombreados en el cdigo anterior, obtenindose finalmente el algoritmo:
* En realidad si d = 0 las dos races reales tienen el mismo valor x = b/2a.

2.2

PROGRAMACIN ESTRUCTURADA

35

DO INPUT a, b, c r1 = 0: r2 = 0: i1 = 0: i2 = 0 IF a = 0 THEN IF b 0 THEN r1 = c/b ELSE DISPLAY Solucin trivial ENDIF ELSE discr = b2 4 * a * c IF discr 0 THEN r1 = (b + Sqrt(discr))/(2 r2 = (b Sqrt(discr))/(2 ELSE r1 = b/(2 * a) r2 = r1 i1 = Sqrt(Abs(discr))/(2 * i2 = i1 ENDIF ENDIF DISPLAY r1, r2, i1, i2 DISPLAY Repetir? Conteste s o INPUT respuesta IF respuesta = no EXIT ENDDO

* a) * a)

a)

no

El mtodo que se utiliz en el problema anterior puede emplearse para desarrollar un algoritmo para el problema del paracaidista. Recordemos que, dadas la condicin inicial para tiempo y velocidad, el problema consista en resolver de manera iterativa la frmula v i +1 = v i + dv i t dt
(2.2)

Como sabemos, para lograr una buena precisin ser necesario emplear incrementos pequeos. Por lo que ser necesario emplear la frmula repetidas veces, desde el tiempo inicial hasta el tiempo final. En consecuencia, un algoritmo para resolver este problema estar basado en el uso de un loop. Supongamos, por ejemplo, que empezamos los clculos en t = 0 y queremos predecir la velocidad en t = 4 s con incrementos de tiempo t = 0.5 s. Entonces tendremos que aplicar la ecuacin (2.2) ocho veces, esto es, n= 4 =8 0.5

donde n es el nmero de iteraciones del loop. Como este nmero es exacto, es decir, esta divisin nos da un nmero entero, podemos usar como base del algoritmo un loop controlado por contador. A continuacin damos un ejemplo de seudocdigo.

36

PROGRAMACIN Y SOFTWARE

g = 9.8 INPUT cd, m INPUT ti, vi, tf, dt t = ti v = vi n = (tf ti) / dt DOFOR i = 1 TO n dvdt = g (cd / m) * v v = v + dvdt * dt t = t + dt ENDDO DISPLAY v

Aunque este esquema es fcil de programar, no est completo. Slo funcionar si el intervalo es divisible exactamente entre el incremento.3 Para tomar en cuenta el otro caso, en el cdigo anterior, en lugar del rea sombreada se puede usar un loop de decisin. El resultado es:
g = 9.8 INPUT cd, m INPUT ti, vi, tf, dt t = ti v = vi h = dt DO IF t + dt > tf THEN h = tf t ENDIF dvdt = g (cd / m) * v v = v + dvdt * h t = t + h IF t tf EXIT ENDDO DISPLAY v

Al introducir el loop, usamos la estructura IF/THEN para probar si el valor t + dt nos lleva ms all del final del intervalo. Si no es as, lo cual comnmente ser el caso al principio, no hacemos nada. De lo contrario, necesitaremos reducir el intervalo haciendo el tamao de incremento h igual a tf t. As, garantizamos que el paso siguiente caiga precisamente en tf. Despus de hacer este paso final, el loop terminar, debido a que t tf ser verdadero. Observe que antes de entrar en el loop hemos asignado el valor del incremento, dt, a otra variable, h. Creamos esta variable con el objeto de que nuestra rutina no cambie el valor de dt cuando tengamos que reducir el incremento. Hacemos esto anticipndonos a que tengamos que usar el valor original de dt en algn otro lado, en el caso de que este programa sea parte de otro programa mayor.
Este problema se combina con el hecho de que las computadoras usan internamente, para la representacin de nmeros, la base 2. En consecuencia, algunos nmeros que aparentemente son divisibles no dan exactamente un entero cuando la divisin se hace en una computadora. De esto hablaremos en el captulo 3.
3

Anda mungkin juga menyukai