Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

Discrete Dynamical Systems: Stability, Cobweb Diagram, Time Series Diagram, Phase Diagram, Bifurcation Diagram

Project: Home
Views: 2619
####################### #Phase Diagram #by Sinan Kapcak #2017 #www.k-interact.net/dds ####################### a,b,c,d, x,y=var('a b c d x y') @interact def _(parameters=selector(['0','1', '2','3','4'],label='Number of parameters in the system',buttons=False,default='0'), intx=input_box(label='Slider interval for $x_0$',default=(0,10 ),width=20 ), inty=input_box(label='Slider interval for $y_0$',default=(0,10 ),width=20 ) ): if parameters=='0': @interact#(layout=dict(bottom=[['x0'],['y0'],['iterasyon'],['figs']],top=[['f'],['g'],['segment_check'],['isoclines_check']])) def _( f=input_box(label='$f(x,y)$',default=x-n(.6,digits=2) *sin(y),width=40), g=input_box(label='$g(x,y)$',default=cos(x),width=40), x0=slider(intx[0], intx[1], .05, default=(intx[0]+intx[1])/2,label='$x_0$'),y0=slider(inty[0],inty[1], .05, default=(inty[0]+inty[1])/2 ,label='$y_0$'), iterasyon=input_box(default=100,label='Number of iterations',width=12), segment_check = ("Joined Points", True), isoclines_check = ("Show Isoclines", False), figs=slider(2, 20, 1, default=5,label='Figure size'), ar=slider([2^s for s in [-10..10]], default=1,label='Aspect Ratio' ) ): nok=[(x0,y0)]#list of points for i in range(iterasyon): nok.append((f(x=nok[i][0],y=nok[i][1]),g(x=nok[i][0],y=nok[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_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 if segment_check: graf = graf + graf_segments if isoclines_check: nok_x= [nok[i][0] for i in range(len(nok)) ] mi_x=min(nok_x) ma_x=max(nok_x) nok_y= [nok[i][1] for i in range(len(nok)) ] mi_y=min(nok_y) ma_y=max(nok_y) fark_x=ma_x-mi_x fark_y=ma_y-mi_y mi1_x=1.1*mi_x-.1*ma_x ma1_x=1.1*ma_x-.1*mi_x mi1_y=1.1*mi_y-.1*ma_y ma1_y=1.1*ma_y-.1*mi_y isocline1=implicit_plot(x==f, (x,mi1_x,ma1_x), (y,mi1_y,ma1_y),legend_label='iso1',rgbcolor='orange') isocline2=implicit_plot(y==g, (x,mi1_x,ma1_x), (y,mi1_y,ma1_y),legend_label='iso2',rgbcolor='brown') graf = graf + isocline1 + isocline2 show(graf,frame=True,axes=False,axes_labels=['$x_n$','$y_n$']) if parameters=='1': @interact def _(paramint1=input_box(label='Slider interval for paramater $a$',default=(0,10),width=20)): @interact(layout=dict(bottom=[['param1'],['x0'],['y0'],['iterasyon'],['figs']],top=[['f'],['g'],['segment_check'],['isoclines_check']])) def _( param1=slider(paramint1[0], paramint1[1], .05, default=(paramint1[0]+ paramint1[1])/2,label='$a$'), f=input_box(label='$f(x,y)$',default=x-(a-1)*sin(y/a),width=40), g=input_box(label='$g(x,y)$',default=a*cos(x/a),width=40), x0=slider(intx[0], intx[1], .05, default=(intx[0]+intx[1])/2,label='$x_0$'),y0=slider(inty[0],inty[1], .05, default=(inty[0]+inty[1])/2 ,label='$y_0$'), iterasyon=input_box(default=100,label='Number of iterations',width=12), segment_check = ("Joined Points", True), isoclines_check = ("Show Isoclines", False),figs=slider(2, 20, 1, default=5,label='Figure size'), ar=slider([2^s for s in [-10..10]], default=1,label='Aspect Ratio' ) ): f=f(a=param1) g=g(a=param1) nok=[(x0,y0)]#list of points for i in range(iterasyon): nok.append((f(x=nok[i][0],y=nok[i][1],a=param1),g(x=nok[i][0],y=nok[i][1],a=param1))) 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_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 if segment_check: graf = graf + graf_segments if isoclines_check: nok_x= [nok[i][0] for i in range(len(nok)) ] mi_x=min(nok_x) ma_x=max(nok_x) nok_y= [nok[i][1] for i in range(len(nok)) ] mi_y=min(nok_y) ma_y=max(nok_y) fark_x=ma_x-mi_x fark_y=ma_y-mi_y mi1_x=1.1*mi_x-.1*ma_x ma1_x=1.1*ma_x-.1*mi_x mi1_y=1.1*mi_y-.1*ma_y ma1_y=1.1*ma_y-.1*mi_y isocline1=implicit_plot(x==f, (x,mi1_x,ma1_x), (y,mi1_y,ma1_y),legend_label='iso1',rgbcolor='orange') isocline2=implicit_plot(y==g, (x,mi1_x,ma1_x), (y,mi1_y,ma1_y),legend_label='iso2',rgbcolor='brown') graf = graf + isocline1 + isocline2 show(graf,frame=True,axes=False,axes_labels=['$x_n$','$y_n$']) if parameters=='2': @interact def _(paramint1=input_box(label='Slider interval for paramater $a$',default=(0,4),width=20), paramint2=input_box(label='Slider interval for paramater $b$',default=(0,4),width=20)): @interact#(layout=dict(bottom=[['param1'],['x0'],['y0'],['iterasyon'],['figs']],top=[['f'],['g'],['segment_check'],['isoclines_check']])) def _( param1=slider(paramint1[0], paramint1[1], .05, default=(paramint1[0]+ paramint1[1])/2,label='$a$'), param2=slider(paramint2[0], paramint2[1], .05, default=(paramint2[0]+ paramint2[1])/2,label='$b$'), f=input_box(label='$f(x,y)$',default=x*exp(a*(1-x)-y),width=40), g=input_box(label='$g(x,y)$',default=b*x*(1-exp(-y)),width=40), x0=slider(intx[0], intx[1], .05, default=(intx[0]+intx[1])/2,label='$x_0$'),y0=slider(inty[0],inty[1], .05, default=(inty[0]+inty[1])/2 ,label='$y_0$'), iterasyon=input_box(default=100,label='Number of iterations',width=12), segment_check = ("Joined Points", True), isoclines_check = ("Show Isoclines", False),figs=slider(2, 20, 1, default=5,label='Figure size'), ar=slider([2^s for s in [-10..10]], default=1,label='Aspect Ratio' ) ): f=f(a=param1,b=param2) g=g(a=param1,b=param2) nok=[(x0,y0)]#list of points for i in range(iterasyon): nok.append((f(x=nok[i][0],y=nok[i][1],a=param1,b=param2),g(x=nok[i][0],y=nok[i][1],a=param1,b=param2))) 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_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 if segment_check: graf = graf + graf_segments if isoclines_check: nok_x= [nok[i][0] for i in range(len(nok)) ] mi_x=min(nok_x) ma_x=max(nok_x) nok_y= [nok[i][1] for i in range(len(nok)) ] mi_y=min(nok_y) ma_y=max(nok_y) fark_x=ma_x-mi_x fark_y=ma_y-mi_y mi1_x=1.1*mi_x-.1*ma_x ma1_x=1.1*ma_x-.1*mi_x mi1_y=1.1*mi_y-.1*ma_y ma1_y=1.1*ma_y-.1*mi_y isocline1=implicit_plot(x==f, (x,mi1_x,ma1_x), (y,mi1_y,ma1_y),legend_label='iso1',rgbcolor='orange') isocline2=implicit_plot(y==g, (x,mi1_x,ma1_x), (y,mi1_y,ma1_y),legend_label='iso2',rgbcolor='brown') graf = graf + isocline1 + isocline2 show(graf,frame=True,axes=False,axes_labels=['$x_n$','$y_n$']) if parameters=='3': @interact def _(paramint1=input_box(label='Slider interval for paramater $a$',default=(0,10),width=20), paramint2=input_box(label='Slider interval for paramater $b$',default=(0,10),width=20), paramint3=input_box(label='Slider interval for paramater $c$',default=(0,10),width=20)): @interact#(layout=dict(bottom=[['param1'],['x0'],['y0'],['iterasyon'],['figs']],top=[['f'],['g'],['segment_check'],['isoclines_check']])) def _( param1=slider(paramint1[0], paramint1[1], .05, default=(paramint1[0]+ paramint1[1])/2,label='$a$'), param2=slider(paramint2[0], paramint2[1], .05, default=(paramint2[0]+ paramint2[1])/2,label='$b$'), param3=slider(paramint3[0], paramint3[1], .05, default=(paramint3[0]+ paramint3[1])/2,label='$c$'), f=input_box(label='$f(x,y)$',default=x+(1-a)*sin(y/b),width=40), g=input_box(label='$g(x,y)$',default=c*cos(x/a),width=40), x0=slider(intx[0], intx[1], .05, default=(intx[0]+intx[1])/2,label='$x_0$'),y0=slider(inty[0],inty[1], .05, default=(inty[0]+inty[1])/2 ,label='$y_0$'), iterasyon=input_box(default=100,label='Number of iterations',width=12), segment_check = ("Joined Points", True), isoclines_check = ("Show Isoclines", False),figs=slider(2, 20, 1, default=5,label='Figure size'), ar=slider([2^s for s in [-10..10]], default=1,label='Aspect Ratio' ) ): f=f(a=param1,b=param2,c=param3) g=g(a=param1,b=param2,c=param3) nok=[(x0,y0)]#list of points for i in range(iterasyon): nok.append((f(x=nok[i][0],y=nok[i][1],a=param1,b=param2,c=param3),g(x=nok[i][0],y=nok[i][1],a=param1,b=param2,c=param3))) 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_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 if segment_check: graf = graf + graf_segments if isoclines_check: nok_x= [nok[i][0] for i in range(len(nok)) ] mi_x=min(nok_x) ma_x=max(nok_x) nok_y= [nok[i][1] for i in range(len(nok)) ] mi_y=min(nok_y) ma_y=max(nok_y) fark_x=ma_x-mi_x fark_y=ma_y-mi_y mi1_x=1.1*mi_x-.1*ma_x ma1_x=1.1*ma_x-.1*mi_x mi1_y=1.1*mi_y-.1*ma_y ma1_y=1.1*ma_y-.1*mi_y isocline1=implicit_plot(x==f, (x,mi1_x,ma1_x), (y,mi1_y,ma1_y),legend_label='iso1',rgbcolor='orange') isocline2=implicit_plot(y==g, (x,mi1_x,ma1_x), (y,mi1_y,ma1_y),legend_label='iso2',rgbcolor='brown') graf = graf + isocline1 + isocline2 show(graf,frame=True,axes=False,axes_labels=['$x_n$','$y_n$']) if parameters=='4': @interact def _(paramint1=input_box(label='Slider interval for paramater $a$',default=(0,10),width=20), paramint2=input_box(label='Slider interval for paramater $b$',default=(0,10),width=20), paramint3=input_box(label='Slider interval for paramater $c$',default=(0,10),width=20), paramint4=input_box(label='Slider interval for paramater $d$',default=(0,10),width=20)): @interact#(layout=dict(bottom=[['param1'],['x0'],['y0'],['iterasyon'],['figs']],top=[['f'],['g'],['segment_check'],['isoclines_check']])) def _( param1=slider(paramint1[0], paramint1[1], .05, default=(paramint1[0]+ paramint1[1])/2,label='$a$'), param2=slider(paramint2[0], paramint2[1], .05, default=(paramint2[0]+ paramint2[1])/2,label='$b$'), param3=slider(paramint3[0], paramint3[1], .05, default=(paramint3[0]+ paramint3[1])/2,label='$c$'), param4=slider(paramint4[0], paramint4[1], .05, default=(paramint4[0]+ paramint4[1])/2,label='$d$'), f=input_box(label='$f(x,y)$',default=x+(1-a)*sin(y/b),width=40), g=input_box(label='$g(x,y)$',default=c*cos(x/d),width=40), x0=slider(intx[0], intx[1], .05, default=(intx[0]+intx[1])/2,label='$x_0$'),y0=slider(inty[0],inty[1], .05, default=(inty[0]+inty[1])/2 ,label='$y_0$'), iterasyon=input_box(default=100,label='Number of iterations',width=12), segment_check = ("Joined Points", True), isoclines_check = ("Show Isoclines", False),figs=slider(2, 20, 1, default=5,label='Figure size'), ar=slider([2^s for s in [-10..10]], default=1,label='Aspect Ratio' ) ): f=f(a=param1,b=param2,c=param3,d=param4) g=g(a=param1,b=param2,c=param3,d=param4) nok=[(x0,y0)]#list of points for i in range(iterasyon): nok.append((f(x=nok[i][0],y=nok[i][1],a=param1,b=param2,c=param3,d=param4),g(x=nok[i][0],y=nok[i][1],a=param1,b=param2,c=param3,d=param4))) 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_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 if segment_check: graf = graf + graf_segments if isoclines_check: nok_x= [nok[i][0] for i in range(len(nok)) ] mi_x=min(nok_x) ma_x=max(nok_x) nok_y= [nok[i][1] for i in range(len(nok)) ] mi_y=min(nok_y) ma_y=max(nok_y) fark_x=ma_x-mi_x fark_y=ma_y-mi_y mi1_x=1.1*mi_x-.1*ma_x ma1_x=1.1*ma_x-.1*mi_x mi1_y=1.1*mi_y-.1*ma_y ma1_y=1.1*ma_y-.1*mi_y isocline1=implicit_plot(x==f, (x,mi1_x,ma1_x), (y,mi1_y,ma1_y),legend_label='iso1',rgbcolor='orange') isocline2=implicit_plot(y==g, (x,mi1_x,ma1_x), (y,mi1_y,ma1_y),legend_label='iso2',rgbcolor='brown') graf = graf + isocline1 + isocline2 show(graf,frame=True,axes=False,axes_labels=['$x_n$','$y_n$'])
Interact: please open in CoCalc