' fosclib.bas - jackord@kw.igs.net - revised 6 Sep 02 - Liberty Basic v3.01 ' phase diagram for the damped oscillator ' - overdamped: Q = 1/3 ' - critical damping: Q = 1/2 ' - underdamped: Q = 1 ' Initialize Window nomainwin button#1, "Plot", [plt], UL, 80, 5, 55, 20 q$(0)="Q=1": q$(1)="Q=1/2": q$(2)="Q=1/3" combobox#1.qs, q$(, [waitHere], 5, 5, 65, 100 WindowWidth=410 ' pixel scale 0-400 WindowHeight=429 ' pixel scale 0-400 UpperLeftX=50: UpperLeftY=50 open "The Damped Oscillator" for graphics_nsb as #1 #1 "trapclose [quit]" dt=.01: n=1000: pi=4*atn(1) #1.qs "selectindex "; 1: z$="Underdamped" [waitHere] wait [plt] #1.qs "selectionindex?" input#1.qs, rq #1 "cls ; down ; color black ; line 0 200 400 200 ; line 200 0 200 400" #1 "color red ; place 200 200 ; circle 180 ; color blue" for j=0 to 35 x=cos(j*pi/18): v=sin(j*pi/18) #1 "place "; 200+180*x; " "; 200-180*v dv=0-(rq*v+dx)*dt: v=v+dv/2 ' Feynman half-step for i=1 to n ' Feynman loop x=x+v*dt: dv=0-(rq*(v+dv/2)+x)*dt: v=v+dv #1 "goto "; 200+180*x; " "; 200-180*v next i next j if rq=2 then z$="Critically Damped": #1 "color green ; line 0 0 400 400" end if if rq=3 then z$="Overdamped": s=(3+5^.5)/2 #1 "color green ; line "; 200*(1-1/s); " 0 "; 200*(1+1/s); " 400" end if #1 "color black ; place 275 18": #1 "\"; z$ goto [waitHere] [quit] close #1 end