2014-11-11 3 views
0
import numpy as np 
import scipy 
from scipy.optimize import newton 
import sympy 
from sympy import diff 
from sympy import Symbol 

alpha = Symbol('alpha') 
beta = Symbol('beta') 
delta = Symbol('delta') 

kss = ((((1/beta)+ alpha * delta - 1)/(1-alpha)) + delta)**alpha 
css = (((1/beta)+ alpha * delta - 1)/(1-alpha))*kss 
xss = [css,css,kss] 

param = [alpha,beta,delta] 

res = diff([xss],alpha, beta, delta) 
eps = 0.0001 * np.absolute(css) 
x1 = [css+eps,css,kss] 
res1 = foc(x1,param) 
b1 = (res1 - res)/eps 
yss = [css,css+eps,kss] 
res2 = foc(yss,param) 
b2 = (res2-res)/eps 
eps1 = 0.0001 * abs(kss) 
zss = [css,css,kss+eps1] 
res3 = foc(zss,param) 
b3 = (res3-res)/eps1 

print b1, b2, b3 

Кто-нибудь знает, как отладить это?Решение для неизвестных

+0

«отлаживать» что? В чем проблема с этим кодом? Вы говорите, что в коде есть ошибка (если это так, укажите конкретный пример) или просто пытаетесь понять, как это работает? (вероятно, оффтопный) – smci

ответ

0

Обычно ваш код должен быть улучшен следующим образом:

  1. использование модулей и точечными указать свои функции применяется, например abs должен быть np.abs

  2. Вы должны выяснить, какие структуры данных, которые вы хотите использовать: list или np.array? Они разные. Просто xss = [css,css,kss] создает список, который нельзя использовать для абс напрямую.

  3. Использовать import pdb; pdb.set_trace() для отладки, here - это учебник.