Page 60 - Chapra y Canale. Metodos Numericos para Ingenieros 5edición_Neat
P. 60
36 PROGRAMACIÓN 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 fácil de programar, no está completo. Sólo funcionará si el
3
intervalo es divisible exactamente entre el incremento. Para tomar en cuenta el otro
caso, en el código anterior, en lugar del área sombreada se puede usar un loop de decisión.
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 más allá del final del intervalo. Si no es así, lo cual comúnmente será el caso
al principio, no hacemos nada. De lo contrario, necesitaremos reducir el intervalo ha-
ciendo el tamaño de incremento h igual a tf – t. Así, garantizamos que el paso siguiente
caiga precisamente en tf. Después 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 anticipándonos
a que tengamos que usar el valor original de dt en algún otro lado, en el caso de que este
programa sea parte de otro programa mayor.
3 Este problema se combina con el hecho de que las computadoras usan internamente, para la representación de
números, la base 2. En consecuencia, algunos números que aparentemente son divisibles no dan exactamente
un entero cuando la división se hace en una computadora. De esto hablaremos en el capítulo 3.
6/12/06 13:43:42
Chapra-02.indd 36 6/12/06 13:43:42
Chapra-02.indd 36

