def obter_integral(a, b, funcao, nit = 4, n = 4, erro = 10**-16): integrais = trapezio.obter_integral(a, b, funcao, nit, n) rombergs = [] rombergs.append(integrais) for j in range(1, nit): rtmp = [] for k in range(nit - j): rkj = (4**j * rombergs[j-1][k+1] - rombergs[j-1][k]) / (4**j - 1.0) rtmp.append(rkj) rombergs.append(rtmp) for i in range(nit -1): errotmp = math.fabs(rombergs[i+1][0] - rombergs[i][0]) if(errotmp < erro): return rombergs[i+1][0] print 'Nao foi encontrado um resultado com a precisao desejada' return integrais[0]
import funcoes from integracao.newtonianos import trapezio from integracao.newtonianos import simpson from integracao.newtonianos import simpson_composto from integracao.newtonianos import trapezio_melhorado print 'Testando integrador usando metodo de newton com a funcao lnx no intervalo 1-2' res = trapezio.obter_integral(1.0, 2.0, funcoes.lnx) i = 1 for r in res: print 'Integral', i, ': ', r i += 1 print 'Testando integrador usando metodo de simpson com a funcao lnx no intervalo 1-2' res = simpson.obter_integral(1.0, 2.0, funcoes.lnx) i = 1 for r in res: print 'Integral', i, ': ', r i += 1 print 'Testando integrador usando metodo de newton com a funcao 1/ xlnx no intervalo 2-4' res = trapezio.obter_integral(2.0, 4.0, funcoes.inverso_x_lnx) i = 1 for r in res: print 'Integral', i, ': ', r i += 1