6.1 十進BASIC

(仮称) 十進BASICというプログラミング言語は、気軽に試せる、 1000桁演算モードがある、などの特徴があって、 プログラミング入門用に一時期勧めていました。


REM dampedoscillation.bas
REM http://nalab.mind.meiji.ac.jp/~mk/program/ode_prog/dampedoscillation.BAS
DEF fx(t,x,y)=a*x+b*y
DEF fy(t,x,y)=c*x+d*y
LET maxn=1000
DIM x(0 TO maxn),y(0 TO maxn)

SUB runge(t0,x0,y0,h,n)
   LET t=t0
   LET x(0)=x0
   LET y(0)=y0
   PLOT LINES : x(0),y(0);
   PRINT t,x(0),y(0)
   FOR j=0 TO n-1
      LET k1x=h*fx(t,x(j),y(j))
      LET k1y=h*fy(t,x(j),y(j))
      LET k2x=h*fx(t+h/2,x(j)+k1x/2,y(j)+k1y/2)
      LET k2y=h*fy(t+h/2,x(j)+k1x/2,y(j)+k1y/2)
      LET k3x=h*fx(t+h/2,x(j)+k2x/2,y(j)+k2y/2)
      LET k3y=h*fy(t+h/2,x(j)+k2x/2,y(j)+k2y/2)
      LET k4x=h*fx(t+h,x(j)+k3x,y(j)+k3y)
      LET k4y=h*fy(t+h,x(j)+k3x,y(j)+k3y)
      LET x(j+1)=x(j)+(k1x+2*k2x+2*k3x+k4x)/6
      LET y(j+1)=y(j)+(k1y+2*k2y+2*k3y+k4y)/6
      LET t=t+h
      PLOT LINES : x(j+1),y(j+1);
      PRINT t,x(j+1),y(j+1)
   NEXT j
   PLOT LINES
END SUB

LET a=0
LET b=1
LET c=-1
LET d=-0.1

SET WINDOW -1,1,-1,1
DRAW grid

LET Ts=0
LET Te=100
LET N=1000
LET h=(Te-Ts)/N
SET LINE COLOR 2
CALL runge(Ts, 0.7, 0.5, h, N)
END

図 10: 減衰振動 (仮称十進BASICプログラムによる)
\includegraphics[scale=0.5]{ode_figure/dampedoscillation.eps}



桂田 祐史