#!/usr/bin/env python # coding: utf-8 # # Marketinška strategija # # Podjetje bo kmalu uvedlo nov izdelek na zelo konkurenčen trg, # zato trenutno pripravlja marketinško strategijo. # Odločili so se, da bodo izdelek uvedli v treh fazah. # V prvi fazi bodo pripravili posebno začetno ponudbo z močno znižano ceno, # da bi privabili zgodnje kupce. # Druga faza bo vključevala intenzivno oglaševalsko kampanjo, # da bi zgodnje kupce prepričali, naj izdelek še vedno kupujejo po redni ceni. # Znano je, da bo ob koncu druge faze # konkurenčno podjetje predstavilo svoj izdelek. # Zato bo v tretji fazi okrepljeno oglaševanje z namenom, # da bi preprečili beg strank h konkurenci. # # Podjetje ima za oglaševanje na voljo $4$ milijone evrov, # ki jih želimo čim bolj učinkovito porabiti. # Naj bo $m$ tržni delež v procentih, pridobljen v prvi fazi, # $f_2$ delež, ohranjen po drugi fazi, # in $f_3$ delež, ohranjen po tretji fazi. # Maksimizirati želimo končni tržni delež, torej količino $m f_2 f_3$. # # Denimo, da lahko v vsaki fazi porabimo poljubno pozitivno količino denarja # (seveda glede na omejitev skupne porabe). # Naj bodo torej $x_1$, $x_2$ in $x_3$ količine denarja v milijonih evrov, # ki jih porabimo v prvi, drugi in tretji fazi. # Vpliv na tržni delež je podan s formulami # $$ # m = x_1 (10 - x_1), \quad # f_2 = 0.4 + 0.1 x_2, \quad \text{in} \quad # f_3 = 0.6 + 0.07 x_3 . # $$ # Kako naj razdelimo sredstva? # Najprej si pripravimo spremenljivke. # In[1]: x1, x2, x3, z = var('x1 x2 x3 z') # z leži na intervalu [0, 4] res = [x1, x2, x3] # Najprej poiščimo maksimum izraza $f_3$, če vrednost $x_3$ leži na intervalu $[0, z]$. # Ker je $f_3$ linearen v $x_3$ s pozitivnim smernim koeficientom, maksimum leži na desnem robu intervala, torej pri $x_3 = z$. # In[2]: f3 = 0.6 + 0.07*x3 p3 = f3.subs(x3 == z) res = [x.subs(x3 == z) for x in res] # Sedaj določimo $p_2(z)$, torej maksimalno vrednost produkta $f_2 f_3$, če v drugo in tretjo fazo skupaj vložimo znesek $z$. # In[3]: p2 = (0.4 + 0.1*x2) * p3.subs(z == z-x2) p2.expand() # Opazimo, da dobimo kvadratno funkcijo v $x_2$ z negativnim vodilnim koeficientom. # Maksimum bomo torej poiskali tako, da bomo poiskali ničlo odvoda in preverili, če leži v intervalu $[0, z]$. # In[4]: sol2 = solve(p2.derivative(x2) == 0, x2) sol2 # Pri vseh $z \ge 0$ bo maksimum dosežen pri nekem $x_2 > 0$. # Poglejmo, kdaj bo veljalo $x_2 \le z$. # In[5]: sz2 = (x2 <= z).subs(sol2).solve(z) (sz2, sz2[0][0].rhs().n()) # Vidimo, da bo pri vseh $0 \le z \le 4$ maksimum funkcije dosežen desno od intervala $[0, 4]$. # Tako sklenemo, da $p_2(z)$ maksimiziramo tako, da izberemo $x_2 = z$ - v tretjo fazo torej ne vlagamo ničesar. # In[6]: p2 = p2.subs(x2 == z) res = [x.subs(z == 0, x2 == z) for x in res] p2 # Poiščimo še maksimum izraza $p_1(4) = m f_1 f_2$, torej končnega tržnega deleža ob skupnem vložku $4$. # In[7]: p1 = x1*(10-x1) * p2.subs(z == 4-x1) p1.expand() # Opazimo, da dobimo kubično funkcijo v $x_1$ s pozitivnim vodilnim koeficientom. # Da poiščemo maksimum, bomo spet poiskali ničle odvoda. # In[8]: sol1 = solve(p1.derivative(x1) == 0, x1) (sol1, [e.rhs().n() for e in sol1]) # Ker je manjša od ničel znotraj intervala $[0, 4]$, potem je tam tudi maksimum funkcije. # In[9]: p1 = p1.subs(sol1[0]) res = [x.subs(z == 4-x1).subs(sol1[0]) for x in res] # Izpišimo še vrednost optimalne rešitve ter sredstva za vsako fazo. # In[10]: print(p1.expand(), p1.n()) print(res) print([n(x) for x in res])