Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación, y ofrecer contenidos y publicidad de interés.
Al continuar con la navegación entendemos que se acepta nuestra política de cookies.
Iniciar sesión Cerrar
Correo:
Contraseña:
Entrar
Recordar sesión en este navegador
Iniciar sesiónIniciar sesiónCrear cuentaCrear cuenta

Python - Regla de Simpson

Titulo:local

Regla de Simpson

Autor:Abraham Terán (abraham.teran@gmail.com)
Lenguaje:Python
Código que ejecuta la Regla de Simpson para Integración Numérica. El usuario ingresa n puntos conocidos, y el valor del codominio para los puntos medios que se necesitan para la regla entre cada par de puntos conocido se obtiene mediante Interpolación de Lagrange. Utiliza Numpy 1.7.0 para interpolación.
Escrito en Python 2.7.3
Comentarios: 0 Comentar Recomendar

# -*- coding: UTF-8 -*- # REGLA DE SIMPSON # Abraham Teran import numpy as np def prod(A): a = 1 for i in range(len(A)): a = a*A[i] return a def lagrange(A,n): results = [] lfun = np.arange((len(A[0]))**2,dtype=float) lfun.shape = (len(A[0]),len(A[0]))\ for i in range(len(A[0])): for j in range(len(lfun)): if i == j: lfun[i,j] = 1 else: lfun[i,j] = (n-A[0][j])/(A[0][i]-A[0][j])\ for i in range(len(A[1])): results.append(prod(lfun[i])*A[1][i])\ return sum(results) def main(): cantPoints = input("Ingrese cantidad de puntos conocidos> ")\ if cantPoints < 2: print "\nCANTIDAD DE PUNTOS CONOCIDOS >= 2\n" main()\ integs = [] points = [[],[]] midPoints = [[],[]]\ for i in range(cantPoints): print "\n( x",i,",y",i,")" x = float(input("Ingrese 'x'> ")) y = float(input("Ingrese 'y'> ")) points[0].append(x) points[1].append(y)\ for i in range(len(points[0])-1): midPoints[0].append((points[0][i+1]+points[0][i])/2) midPoints[1].append(lagrange(points,midPoints[0][i]))\ for i in range(len(midPoints[0])): intg = ((points[0][i+1]-points[0][i])/6)*\ (points[1][i]+(4*midPoints[1][i])+points[1][i+1]) integs.append(intg)\ print "\n\tIntegral: ",sum(integs) raw_input() print "\n\tREGLA DE SIMPSON\n\n" main()