2016-04-27 4 views
1

У меня есть данные, которые очень похожи на дистрибутив power law. Использование Python, я хочу, чтобы аппроксимировать данные путем решения двух уравнений в виде:Устранение распределения закона мощности в Python

y это данные по оси Y. В Python это будет data[i]. x будет i + 1. Отсюда следует, что мы получим два уравнения с двумя неизвестными в первом индексе данных и в «случайном» 2 один где-то в данных:


Проблема сводится к решению только

Из-за математического упрощения. Я не знаю, как решить уравнение, подобное этому, используя библиотеки, такие как numpy.linalg.solve. Как найти значение a с использованием Python?

+5

Вам не нужно уравнение решатель ... 'а = (1/2) * math.log10 (данные [99]/данные [0])' – gariepy

+0

Да, это, кажется, работает с ' a = math.log (данные [99]/data [0], 100) ' – BullyWiiPlaza

ответ

1

Хорошо, я понял.

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

Можете ли вы объяснить, почему вы используете middle_index в качестве базы данных? – MARK

 Смежные вопросы

  • Нет связанных вопросов^_^