interactive

604 days ago by kpp

def log10( vec ): return vector([log(el, 10) for el in vec]) html("<h1>Оптимизация функций полезности</h1>") @interact def _(a = input_box([1, 2, 3/2, 1/2], label="Коэффициенты важности: $a = $"), xmin = input_box([2, 3, 4, 5], label="Минимальные потребности: $x_{min} = $"), x0 = input_box([3, 5, 7, 10], label="Начальный потребительский набор: $x_0 = $"), c = input_box([10, 5, 4, 7], label="Цены: $с = $"), g = input_box(1000, label="Бюджет: $g = $"), f = input_box("a*log10(x-xmin)", label="Функция полезности: $f(x)= $", type=str), auto_update=False, ): a = vector(a); xmin = vector(xmin) x0 = vector(x0) c = vector (c) ff = lambda x : -sage_eval(f, locals={'a':a, 'xmin':xmin, 'x':x, 'c':c, 'log10':log10}) html("Начальное значение функции полезности: " + str(-ff(x0).n()) ) co1 = lambda p: g - c * vector(p) constrains = [ lambda p: -xmin[i] + p[i] - 1 for i in range(0, len(xmin)) ] constrains.append(co1) xres = minimize_constrained(ff, constrains, x0) html("Оптимальный набор: $$" + latex(xres.transpose()) + "$$") html("Максимальное значение функции полезности: " + str(-ff(xres)) ) html("Бюджет: " + str( c*xres)) 
       

Click to the left again to hide and once more to show the dynamic interactive window

html("<h1>График производственной функции</h1>") @interact def _(a0 = 1.002, a1 = 0.5382, a2 = 0.4618 ): K,L = var('K,L') Y = a0 * K**a1 * L**a2; show(plot3d(Y, (K, 0, 20), (L, 0,20)), adaptive=True) #adaptive=True 
       

Click to the left again to hide and once more to show the dynamic interactive window

html("<h1>Оптимизация производственной функции</h1>") html("$$Y=a_0 \cdot K^{a_1}L^{a_2}$$") @interact def _(a0 = 1.002, a1 = 0.5382, a2 = 0.4618, CK = input_box(1, label="Цена капитализации: "), CL = input_box(5, label="Цена труда: "), G = input_box(100, label="Допустимые затраты: $G = $"), K0 = input_box(1, label="Начальная капитализация: "), L0 = input_box(1, label="Начальные трудовые затраты: "), ): K,L = var('K,L') Y = a0 * K**a1 * L**a2; co1 = lambda p: g - c * vector(p) constrains = []; constrains.append( lambda p: p[0] ) constrains.append( lambda p: p[1] ) constrains.append( lambda p: G - CK*p[0] - CL*p[1] ) [Kres, Lres] = minimize_constrained(-Y, constrains, [K0, L0]) html("Оптимальная капитализация: " + str(Kres.n(digits=5)) ) html("Оптимальные трудовые затраты: " + str(Lres.n(digits=5)) ) 
       

Click to the left again to hide and once more to show the dynamic interactive window

html("<h1>Оптимизация в секторной экономике</h1>") @interact def _(a0 = input_box([1.002, 0.98, 1]), a1 = input_box([0.5382, 0.6, 0.4]), a2 = input_box([0.4618, 4, 6]), c = input_box([20, 40, 10]), Ksum = input_box(15, label="Суммарная капитализация: "), K0 = input_box([5,5,5], label="Начальная капитализация: "), L0 = input_box([1,1,1], label="Начальные трудовые затраты: "), auto_update=False, ): Y = lambda K,L: sum([ c[i]*a0[i]*K[i]**a1[i]*L[i]**a2[i] for i in range(0, len(K)) ]) KL0 = list(K0); KL0.extend(L0) #html([latex(KL[i]) for i in range(len(KL)/2, len(KL) )]) html("Текущий суммарный доход: " + str( Y(K0,L0).n(digits = 5) )) constrains = [lambda KL: KL[i] for i in range(0, len(KL0))] constrains.append(lambda KL: Ksum - sum( [KL[k] for k in range (0, len(KL)/2)] )) def my_f(KL): K = [KL[k] for k in range (0, len(KL)/2)]; L = [KL[k] for k in range (len(KL)/2, len(KL))] return -Y(K,L) KLres = minimize_constrained(my_f, constrains, KL0) Kres = [KLres[k] for k in range (0, len(KLres)/2)]; Lres = [KLres[k] for k in range (len(KLres)/2, len(KLres))]; html("Капитал по секторам: $$" + latex(vector(Kres).transpose()) + "$$") html("Труд по секторам: $$" + latex(vector(Lres).transpose()) + "$$") html("Общий доход: " + str(Y(Kres, Lres))) 
       

Оптимизация в секторной экономике

a0 
a1 
a2 
Суммарная капитализация:  
Начальная капитализация:  
Начальные трудовые затраты:  

Click to the left again to hide and once more to show the dynamic interactive window