{{{id=1|
#####################
###### Code Starts ##
#####################
#####################
#Cobweb Diagram
#by Sinan Kapcak
#2017
#####################
x,y,a=var('x y a')
@interact
def _(
param1=input_box(label='Slider interval for paramater $a$',default=(0,10),width=20),
intx=input_box(label='Slider interval for $x$',default=(0,10 ),width=20 )):
@interact
def _(
f=input_box(label='$f(x)$',default=x*e^(a-x),width=40),
zoom_intx=range_slider(intx[0],intx[1], default= ( intx[0] , (intx[0]+intx[1])/2),label= 'Interval for the diagram' ),
x0=slider(intx[0] , intx[1], .1, default= (2*intx[0]+intx[1])/3 ,label='Initial Value $x_0$' ),
parameter0=slider(param1[0] , param1[1], .1, default= (5*param1[0]+param1[1])/6 ,label='Parameter $a$' ),
iterasyon=input_box(default=100,label='Number of iterations',width=15 ),
figs=slider(2, 20, 1, default=6,label='Figure size'),
ar=slider([2^n for n in [-10..10]], default=1,label='Aspect Ratio' )
):
f=f(a=parameter0)
nok=[(x0,f(x=x0))]#list of points
for i in range(iterasyon):
nok.append((nok[2*i][1],nok[2*i][1] ) )
nok.append((nok[2*i][1],f(x=nok[2*i][1]) ) )
graf_nok=point(nok,frame=False,rgbcolor='black', pointsize=10,figsize=figs,aspect_ratio=ar)#, legend_label='origin')
graf_ilk=point(nok[0],rgbcolor='green', pointsize=40)
graf_ilk_line=list_plot( [ (x0,0), (x0,f(x=x0)) ], plotjoined=True, color='purple',alpha=.3)
graf_son=point(nok[-1],rgbcolor='red', pointsize=40)
graf_segments=list_plot(nok, plotjoined=True, color='purple',alpha=.3)
graf=graf_ilk+graf_son+graf_nok+graf_segments+graf_ilk_line
func=plot(f, (x,zoom_intx[0] ,zoom_intx[1] ),rgbcolor='orange')
diagonal=plot(x, (x,zoom_intx[0] ,zoom_intx[1] ),rgbcolor='grey',aspect_ratio=ar)
graf = graf + func+diagonal
show(graf,xmin=zoom_intx[0] ,xmax=zoom_intx[1],frame=False,axes=True,axes_labels=['$x_n$','$f(x_n)$'])
#####################
###### Code Ends ####
#####################
///
}}}
{{{id=2|
///
}}}