Skip to content

Lei de potência

Com um conjunto de dados x,y, esse método encontra a melhor lei de potência da forma

Parameters:

Name Type Description Default
x iterable

Medidas ou números

required
y iterable

Medidas ou números

required
func bool

Retorna uma função ao invés do fitting

False

Returns:

Name Type Description
Array array

Medidas a , k se func=False

Função callable

retorna y(x) se func=True

Source code in LabIFSC2/fitting.py
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
def regressao_potencia(x, y,func=False) :
    '''Com um conjunto de dados x,y,
    esse método encontra a melhor lei de 
    potência da forma  \(y=A * (x^n)\)

    Args:
        x (iterable): Medidas ou números
        y (iterable): Medidas ou números
        func (bool): Retorna uma função ao invés do fitting

    Returns:
        Array (nd.array):  Medidas a , k se func=False
        Função (callable): retorna y(x) se func=True
    '''
    x=get_nominais(x) ; y=get_nominais(y)
    coefs=regressao_linear(np.log(x),np.log(y))
    coefs[0]=exp(coefs[0])
    if not func: return coefs
    else: return aceitamedida(lambda x:coefs[0]*x**coefs[1])

Leis de potência são relações da forma

Sabemos por exemplo que fixados as massas e , a força gravitacional entre dois corpos é uma constante vezes alguma relação com a distância , fazendo esse tipo de regressão encontraríamos algo como , que é a lei do inverso do quadrado.

No exemplo abaixo pegamos a distância (UA=unidade astronômica) e período (ano) dos primeiros 5 planetas do sistema solar, e calculamos a melhor lei de potência entre essas duas grandezas.

Obtemos , pela lei de Kepler temos que é muito próximo do experimental.

Exemplo Lei de Kepler
    periodos=np.array([0.24,0.61,1.00,1.88,11.86])
    distancias=np.array([0.38,0.72,1.00,1.52,5.20])
    a,n=regressao_potencia(distancias,periodos)
    #periodo=(1.006+-0.005)*distancia^{1.5}