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
   55   56   57   58   59   60   61   62   63   64   65