Advertisement
Guest User

12

a guest
Feb 12th, 2020
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. from sympy import *
  2. x1, x2, y, z, p = symbols('x1 x2 y z p')
  3.  
  4.  
  5. def profit_max():
  6. p1 = float(input("Введите цену товара 1: "))
  7.  
  8. p2 = float(input("Введите цену товара 2: "))
  9.  
  10. m = float(input("Введи доход (m): "))
  11.  
  12. utility = sympify(input("Введите функцию полезности x1, и x2: ")) # utility function U(x1,x2)
  13.  
  14. print("Utility: U(x1,x2)=",utility)
  15. print()
  16.  
  17. Lagrange = utility + y*(m-(p1*x1)-(p2*x2))
  18.  
  19. print("Функция Лагранжа для максимальной полезности: ")
  20. print("L =", simplify(Lagrange))
  21. print()
  22.  
  23. x1_foc = diff(Lagrange, x1) # solves the foc with respect to x1
  24. x2_foc = diff(Lagrange, x2) # solves the foc with respect to x2
  25. y_foc = diff(Lagrange, y) # solves the foc with respect to y (lambda)
  26.  
  27. ###
  28. #
  29. # prints the Foc's, and x1,x2 solved respectively for y (lambda)
  30. #
  31. ###
  32.  
  33. print("Систему линейных уравнений ")
  34. print("--------------")
  35. print()
  36. print("[x1]: ",simplify(x1_foc))
  37. print('[x2]: ',expand(x2_foc))
  38. print('[y]: ',cancel(y_foc))
  39. print()
  40. a = solve(x1_foc, y) # Solves x1's foc for lambda(y)
  41. b = solve(x2_foc, y) # Solves x2's foc for lambda(y)
  42. print("Лямбда для x1: ",a)
  43. print("Лямбда для x2: ",b)
  44. print()
  45.  
  46. mrs = (p1/p2)
  47. print("Отношение 1 товара к 2 = ",mrs)
  48.  
  49. x1_star = (solve(Eq(a[0],b[0]), x1))[0]
  50. if type(x1_star) != float:
  51. x2_star = (solve(m-(p1*x1_star)-(p2*x2),x2))[0]
  52. x1_star = x1_star.subs(x2,x2_star)
  53. else:
  54. x2_star = (solve(m-(p1*x1_star)-(p2*x2),x2))[0]
  55.  
  56.  
  57. print("x1* =",x1_star) # 4 * x2
  58. #x2_star = (solve(m-(p1*x1_star)-(p2*x2),x2))[0]
  59. print("x2*=",x2_star) # 2
  60. print("кривая безразличия",utility)
  61. #x2_star = x2_star.subs(x1,x1_star)
  62. #x1_star = x1_star.subs(x2,x2_star)
  63. #print("x2*=",x2_star)
  64. print()
  65.  
  66. profit_max()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement