Sistema para el registro y control de ayudas sociales de la gobernacon dele stado aragua

Solo disponible en BuenasTareas
  • Páginas : 7 (1659 palabras )
  • Descarga(s) : 0
  • Publicado : 9 de marzo de 2011
Leer documento completo
Vista previa del texto
PRACTICA 3 CÁLCULO DE UNA INTEGRAL DEFINIDA

JUAN F.CASTILLO HERNÁNDEZ

1. OBJETIVOS.
El objetivo de esta práctica es construír un programa que sea capaz de calcular la integral definida de una función mediante la suma de áreas sucesivas. Existen muchas aproximaciones al valor de la integral definida, pero construiremos 2 valores por el llamado método de los Trapecios y por el llamadométodo de Romberg. El segundo se basa en el primero, creando columnas de valores, cada una basada en la anterior, hasta detenerse según el error que se introduzca después de un cierto número de pasos. La detención se produciría para evitar el empeoramiento de la solución al aumentar demasiado el número de subintervalos.

2. NOTAS PRELIMINARES.
El cálculo de integrales definidas a partir de una tablade valores presenta el problema de la introducción de datos. Es por eso que se ha incluido como opción la posibilidad de escoger cómo introducirlos, si a través de teclado o de fichero. Con la inclusión de un menú adicional que de la posibilidad de escoger la función a integrar, fácil de programar, el poder del programa aumentaría. Se barajó la posibilidad de crear una función polinómicageneralizada, de manera que el usuario introdujese los coeficientes por teclado, pero se abandonó ya que complicaba tremendamente el flujo e intercambio de datos. Para simular el funcionamiento del programa en la máquina, se construyó una tabla y se creó un diagrama de flujo. Como en la anterior práctica, el uso de tablas se reveló de gran ayuda para no perderse en el mar de datos.

3. PROGRAMASCOMENTADOS.
Como programa principal se usaron 3, que variaban solamente en el número de llamadas a subrutinas implicadas. Se optó finalmente por la versión 2, ya que aunque la 1 funcionaba, era demasiado simple, y la 3 (con subrutina de elección de función a integrar) no llegó a funcionar. Este programa pide por teclado el número de intervalos que se van a usar para integrar y el error da la opción deleer los datos por teclado o por fichero. El programa es el siguiente:

Programa princi2.f
c c c

Control de opciones

Programa que calcula la integral de una funcion dada por tabla de valores por el metodo de trapecios y romberg implicit none integer n,contador,kmax,k,op double precision x(0:1000),a,b,h,suma,fx(0:1000),i(1000),f,p character fichero*10, datos*10 print*,' Este programacalcula' print*,' la integral de una funcion' print*,' introducida por tabla de valores' print*,' a traves del calculo diferencial' print*,' de areas entre los valores' print*,'' print*,' Habra 2 elevado a n intervalos' print*,' Introduce n' read*,kmax if (kmax.le.0) then print*,'el exponente debe ser positivo' goto 1 end if

1

c

opciones de recogida de datos print*,'Desea introducir los datos'print*,'1.- Por fichero' print*,'2.- Manualmente' read*,op if (op.eq.1) then call subfich(fx,kmax,a,b) goto 3 else if (op.eq.2) then call teclado(fx,kmax,a,b,datos) goto 3 else print*,'opcion no valida' goto 1 end if continue

3

print*,'Empieza el metodo' call trapecios(fx,kmax,op,datos,a,b,i) call romberg(kmax,op,datos,i) end

A continuación vienen las subrutinas teclado.f y fichero.f,que controlan la introducción de datos por teclado y la lectura de datos de un fichero, respectivamente. Los datos, en el primer caso, son almacenados en un fichero cuyo nombre lo da el usuario.Se ha usado para ello las llamadas “variables de caracter” para intentar dar la máxima independencia al programa, que no necesita así ser modificado cada vez que se quiere integrar otra tabla de valoresdistinta. Las subrutinas son las siguientes: Subrutina teclado.f Control de la introducción por parte del usuario por teclado de los datos a integrar.

c

subrutina de introduccion de datos por teclado subroutine teclado(fx,kmax,a,b,datos) implicit none integer kmax,contador double precision fx(0:2**kmax),a,b,h,p,r character datos*10 print*,'Introduce el nombre del fichero' print*,'donde se iran...
tracking img