# -*- coding: utf-8 -*- import numpy as np # Biblioteca para manipulação numérica def gera_dados_polinomiais(G=2, L=10, N=1000): """ Essa função gera um vetor de N elementos com função densidade de probabilidade: f(x) = A*( 1 - abs(x/L).^G ). """ A = 1 i = 0 x = np.zeros(N) while (i < N): x_cand = -L + 2 * L * np.random.rand() y_test = A * np.random.rand() condicao_teste = A * (1 - np.abs(x_cand / L) ** G) if y_test <= condicao_teste: x[i] = x_cand i += 1 return x G = 1 L = 10 N = 1000 nREP = int(1e2) xm = np.zeros(nREP) sx = np.zeros(nREP) for qR in range(nREP): x = gera_dados_polinomiais(G, L, N) xm[qR] = np.mean(x) sx[qR] = np.std(x) print( '\n-----------' ) print( '- G=%d, valores da primeira simulacao com %d dados:' % ( G, N ) ) print( 'media de x: %+.2f com incerteza %.2f' % ( xm[0], np.std(xm) ) ) print( 'desv.-pad.: %.2f com incerteza %.2f' % ( sx[0], np.std(sx) ) ) print( '\n--' ) print( '- valores medios de %d simulacoes de %d dados:' % (nREP, N) ) print( 'xm_medio: %+.3f com incerteza %.3f' % ( np.mean(xm), np.std(xm)/np.sqrt(nREP) ) ) print( 'sx_medio: %.3f com incerteza %.3f' % (np.mean(sx), np.std(sx)/np.sqrt(nREP) ) ) print( '-----------\n' )