2016-04-27 7 views
1

Ich habe Daten, die einer power law Verteilung sehr ähnlich sind. Verwendung Python, möchte ich durch Lösen von zwei Gleichungen in der Form der Daten approximieren:Lösen der Potenzgesetzverteilung in Python

y ist die Y-Achsendaten. In Python wäre es data[i]. x wäre i + 1. Daraus folgt, dass wir zwei Gleichungen mit zwei unbekannten Variablen in dem ersten Datenindex und bei einem „random“ 2. einen irgendwo sonst auf den Daten erhalten:


Das Problem kommt auf der Lösung nur

aufgrund mathematischer Vereinfachung. Ich weiß nicht, wie man eine Gleichung wie diese mit Bibliotheken wie numpy.linalg.solve lösen kann. Wie finde ich den Wert a mit Python?

+5

Sie Löser eine Gleichung nicht brauchen ... 'a = (1/2) * math.log10 (Daten [99]/data [0])' – gariepy

+0

Ja, es mit 'scheint zu funktionieren a = math.log (data [99]/data [0], 100) ' – BullyWiiPlaza

Antwort

1

In Ordnung, ich habe es.

import math 

def get_power_law_variables(data): 
    c = data[0] 
    middle_index = len(data)/2 
    division = float(data[middle_index])/c 
    logarithm_base = middle_index + 1 
    a = math.log(division, logarithm_base) 
    return c, a 

# Example usage 
data = range(50, 150) 
c, a = get_power_law_variables(data) 
print c, a 
+0

Können Sie erklären, warum Sie middle_index als Log-Base verwenden? – MARK

Verwandte Themen