Integración por trapecios

Buenas! Acá un pequeño script para integrar por trapecios. Por limitaciones del método, no es demasiado preciso a menos que se trabaje en dominios pequeños con gran cantidad de intervalos. Se puede bajar desde acá.

Recomendaciones aceptadas!

#!/usr/bin/python
# -*- coding: iso8859-15 -*-
print "Script para cálculo de integral por trapecios compuesto"
pi = 3.14159265358979
#intervalo izquierdo y derecho
ci = 0.0
cf = 150.0
###
intv = 10000000
paso = (cf - ci)/intv
suma = 0.0
x = ci
#def de f(x)
def funx(x):
        from math import sqrt, cos, sin
        return sqrt(1+(3*cos(x))**2)
#####
#Bucle
while 1e-5 < abs(cf-x):
        y = funx(x)
        print "%5.10f" %x," |","%5.10f" %y
        x = x + paso
        #Cond. de int. por trapecios
	if x == ci or x == cf +- 1e-5:
                suma = suma+y
        else:
                suma = suma+2*y
#Fin bucle
resultado = suma*paso/2
print "El resultado de la integral es %5.10f" %resultado
Anuncios

About fclad

Estudiante de ingeniería, con todo lo que conlleva!
Esta entrada fue publicada en Comp, Labore, Proyectos y etiquetada , . Guarda el enlace permanente.

2 Responses to Integración por trapecios

  1. Jesus dice:

    Hola man gracias por lo que comentas y algunos ejmeplos de los metodos pero una pregunta como insertarias en el metodo del trapecio y runge-kutta un error que sea menor de .01%
    es decir que ese sea el error y me mande el resultado calculado de ese error te lo agradeceria:
    y si puedes dar tips del metodo de simpson 1/3 y 3/8
    y gracias de antemano por la gran ayuda que aportas

  2. fclad dice:

    Umm, lo que deberías hacer en ese caso es calcular una variable de error relativo. Entonces, modificas el código para que vaya achicando el ancho de intervalo, de manera que rompa el bucle cuando encontrás el error deseado.
    Lo que yo haría sería incluir un nuevo bucle while. También almacenarías una variable temporal, para tener el resultado anterior. Finalmente, una variable error relativo. El código quedaría algo así…

    resultadoanterior=0
    error=100

    while error<.01:
    resultadoanterior=resultado
    #calculo de condiciones iniciales, luego de variar la cantidad de intervalos
    intv+=100
    paso = (cf – ci)/intv
    suma = 0.0
    x = ci

    #ejecución del bucle while original

    resultado = suma*paso/2
    error=(resultado-resultadoanterior)/resultado

    Cualquier cosa, escribe!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s