La funci´on a integrar

Descargar (0)

Texto completo

(1)

1 C´omputo Cient´ıfico II - CO2112 - Laboratorio 6

1. Integraci´on num´erica

(a) Transforme el siguiente algoritmo en una funci´on en ansi C, de nombre integra, que tenga como par´ametros de entrada:

i. La funci´on a integrar.

ii. Los l´ımites de integraci´on.

iii. El n´umero inicial de sub-intervalos en que se dividir´a el intervalo de inte- graci´on a fin de aproximar el valor de la integral. (*)

iv. El error m´aximo a ser permitido. (*) y como par´ametros de salida:

i. El valor final hallado para la integral.

ii. El n´umero final de sub-intervalos requeridos para llegar a ese valor.

iii. El tama˜no final de esos sub-intervalos.

El algoritmo es el siguiente:

Paso1 Asignar la funci´on a integrar fun, los extremos a y b del intervalo de integraci´on (con a < b), el n´umero inicial de sub-intervalos num a ser utilizados para aproximar la integral y el error m´aximo a ser permitido, maxerror.

Paso2 Asignar el valor 109 a una variable de nombre I0

Paso3 Calcular el tama˜no h de los sub-intervalos que se producen al dividir el intervalo [a, b] en num partes iguales

Paso4 Calcular la integral I como la suma de los rect´angulos de base h y altura f (x), donde x corresponde al punto medio de cada sub-intervalo, utilizando la f´ormula (ver Fig.1)

I = h ·

num1

X

i=0

f un



a+(2i + 1) 2 ·h

!

Paso5 Calcular el error como el valor absoluto de la diferencia entre I e I0 Paso6 Si este valor absoluto es mayor que maxerror, duplicar el valor de

num, asignar a I0 el valor de I y regresar al Paso 3. Si no es as´ı, reporte los resultados y salga de la funci´on.

USB, CO2112, Prof. Sa´ul Buitrago

(2)

2

Fig. 1: C´alculo de la integral de una funci´on en un intervalo [a,b] dado

NOTA: Suponga que todos los datos suministrados a la funci´on integra son coherentes y correctos.

(b) Escriba una funci´on en ansi C, de nombre area, la cual recibir´a como par´ametros de entrada a la funci´on integra, a dos funciones, f1 y f2, y los extremos a y b (con a < b) del intervalo donde est´an definidas dichas funciones. (Se supone que f1(x) > f2(x) para todo x ∈ [a, b]). La funci´on area calcular´a y devolver´a, como par´ametro de salida, el ´area de la regi´on comprendida entre f1 y f2. Para calcular dicha ´area debe usar la funci´on integra desarrollada en el apartado (a), sin modificarla.

(c) Escriba una funci´on en ansi C, de nombre main, la cual leer´a de un archivo de texto de nombre ‘datos.txt’ los par´ametros a y b, el n´umero inicial de subin- tervalos (num) y el error m´aximo (maxerror). Aqu´ı se inicializa la variable errorcomo 1000. El objetivo de la funci´on main es calcular el ´area de la regi´on comprendida entre las dos funciones suministradas mas adelante, sobre el in- tervalo cuyos extremos son los dos n´umeros de punto flotante dados en este archivo. A fin de calcular dicha ´area, debe usar la funci´on area desarrollada en el apartado (b), sin modificarla.

Se hacen las siguientes suposiciones:

• La funci´on f1 dada es mayor que la f2 dada, en todo el dominio de integraci´on,

USB, CO2112, Prof. Sa´ul Buitrago

(3)

3 esto es en todo el intervalo cuyos extremos son los n´umeros de punto flotante dados en el archivo ‘datos.txt’.

• El primer n´umero de punto flotante a dado en el archivo ‘datos.txt’ es menor que el segundo n´umero de punto flotante b suministrado en el mismo archivo.

Usar las funciones (ver Fig.2)

• f1(x) = x3+ 2x2−3x + 5 y f2(x) = x2+ 3 en el intervalo [−2, 2], el n´umero inicial de subintervalos como 3 y el error m´aximo como 0.001

• f1(x) = sin(x) + 0.3 y f2(x) = x2 en el intervalo [0, 1], el n´umero inicial de subintervalos como 3 y el error m´aximo como 0.001

para construir los archivos de entrada para la funci´on main, y permita probar los procedimientos escritos.

−2 −1.5 −1 −0.5 0 0.5 1 1.5 2

3 4 5 6 7 8 9 10 11 12

x

x3 + 2x2 − 3x + 5 x2 + 3

0 0.2 0.4 0.6 0.8 1

0 0.2 0.4 0.6 0.8 1 1.2

x sin(x)+0.3 x2

Fig. 2: Funciones a ser usadas para el c´alculo del ´area de la regi´on comprendida entre las curvas

Todos los c´alculos deben ser realizados en doble precisi´on. Se debe construir una estructura de nombre ‘datos integral’ con los campos a, b, num, maxerror y error, la cual se usar´a para pasar esta informaci´on a las funciones integra y area. Se recomienda el uso de la instrucci´on ‘typedef’ con las estructuras y los apuntadores a funciones.

USB, CO2112, Prof. Sa´ul Buitrago

(4)

4

Escribir los comentarios necesarios para entender lo que se hace a lo largo del pro- grama.

La entrega debe ocurrir a m´as tardar a las 11:59 pm del domingo 19 de mayo, en- viando al correo electr´onico del prof. Jim´enez (oswjimenez@gmail.com) un archivo comprimido (zip o rar) de nombre:

“CO2112 lab06 apellido nombre”.

Este archivo s´olo debe contener los c´odigos fuentes. Todas los programas deben estar debidamente identificados y documentados.

Observaciones generales

• ¿C´omo escribir un programa?

1. Especificar el problema

2. Analizar y dividir este en una serie de pasos que conduzcan a la soluci´on, es decir, dise˜nar un algoritmo.

3. Escribir el c´odigo en ansi C.

4. Compilar y corregir posibles errores de sintaxis.

5. Ejecutar el programa, verificando que funciona para todos los casos previsto en el dise˜no del algoritmo.

• El programa debe estar debidamente documentado. Recuerde que, en general, no es necesario (ni deseado) comentar cada l´ınea de c´odigo escrita. La mayor´ıa de las veces, las l´ınes individuales hablan por si solas en cuanto al trabajo puntual que realizan. Un buen comentario es aquel que nos dice cual es la raz´on por la cual la l´ınea esta escrita de cierta manera y como encaja eso dentro del contexto completo del programa. Adicionalmente debe documentarlo a fin de que exista una ayuda en l´ınea que permita a cualquier persona utilizarlo.

USB, CO2112, Prof. Sa´ul Buitrago

Figure

Actualización...

Referencias

Related subjects :