Special-case a particular value of an interact slider
This slider seems to work perfectly with one exception:
the line does not change aspect when z
is exactly z1
.
I wonder why? It is annoying since I would like to add some dashed lines and comments (labels, values...) in the case it is exactly at this value.
f(x) = (3/2) - (1/2)*x
g(x) = (11/2) - 2*x
h(x) = -1 + x
gr = plot(f(x), (x, 0, 3),thickness=1.5, color="#4b59ea",legend_label='$f(x)=\\frac{3}{2} - \\frac{1}{2}x$')
gr+= plot(g(x), (x, 0, 3),thickness=1.5, color="#e52411",legend_label='$g(x)=\\frac{11}{2} - 2x$')
gr+= plot(h(x), (x, 0, 3),thickness=1.5, color="#2ea012",legend_label='$h(x)=-1 + x$')
gr.axes_labels(['$x_1$','$x_2$'])
fs1=solve(f(x) == h(x), x)
fs2=solve(f(x) == g(x), x)
fs3=solve(f(x) == 0, x)
gs1=solve(g(x) == h(x), x)
gs2=solve(g(x) == f(x), x)
gs3=solve(g(x) == 0, x)
hs1=solve(h(x) == 0,x)
pint=[(0,f(0)),(fs1[0].rhs(),f(fs1[0].rhs())),(fs2[0].rhs(),f(fs2[0].rhs())),(fs3[0].rhs(),f(fs3[0].rhs())),(0,g(0)),(gs1[0].rhs(),g(gs1[0].rhs())),(gs2[0].rhs(),g(gs2[0].rhs())),
(gs3[0].rhs(),g(gs3[0].rhs())),(0,h(0)),(hs1[0].rhs(),h(hs1[0].rhs()))]
c=[circle(x, .05,fill=true,edgecolor='#ff9933', facecolor='#ff9933') for x in pint]
poly=polygon2d([(hs1[0].rhs(),h(hs1[0].rhs())),(fs1[0].rhs(),f(fs1[0].rhs())),(gs2[0].rhs(),g(gs2[0].rhs())),(gs3[0].rhs(),g(gs3[0].rhs()))],fill=true,rgbcolor=(.75,.75,.75))
show(pint)
z1=solve(f(gs2[0].rhs())==z - (0.3333) *gs2[0].rhs(),z)[0].rhs()
@interact
def _(z=slider(z1-(5*0.1),z1+(5*0.1),step_size=0.333333)):
if z!=z1:
zplot=plot(z - (0.3333) *x, (x, 0,5),color="#4b26ea",linestyle='-.')
show(sum(c)+gr+poly+zplot,figsize=8)
elif z==z1:
zplot=plot(z - (0.3333) *x, (x, 0,5),color="#4b26ea",linestyle='--')
show(sum(c)+gr+poly+zplot,figsize=8)