' 座標と円弧
'
Start()
Sub Start
GraphicsWindow.Title = "円弧"
GraphicsWindow.Height = 200
GraphicsWindow.Width = 200
GraphicsWindow.Show()
zahyo()
aCurve()
EndSub
Sub zahyo
GraphicsWindow.DrawLine(0,0,0,200)
GraphicsWindow.DrawLine(0,0,200,0)
EndSub
Sub aCurve
For x=0 To 100
GraphicsWindow.SetPixel(x,Math.SquareRoot(10000-x*x),"red")
EndFor
EndSub
API is Application Program Interface.
このページには、Small Basic のおよそ20個のクラスごとにプロパティとメソッドをまとめてある。
次のスクリーンショットの例は、ネットワークのAPIである。
ネットワークには、2つのメソッドがある。というか、2つしかない。ファイルのファウンロードとウェブページのコンテンツ入手の2つのメソッドがある。
ネットワークのプロパティは、ひとつもない。
今月の挑戦11月号には、Small Basic の新ロゴを描くや3目ならべなどもある。
Challenge of the Month - November 2016Rosetta code にも Small Basic のコードはある。
たとえば、マンデルブロー集合のプログラム。Rosetta code
GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.MouseDown = OnMouseDown
Sub OnMouseDown
pic = Flickr.GetRandomPicture("Japan, dogo")
GraphicsWindow.DrawResizedImage(pic, 0, 0, 640, 480)
EndSub
写真のキーワードを"Matsuyama"にしてみるとどうだろうか
a11x1 + a12x2 + ... + a1nxn = b1
a21x1 + a22x2 + ... + a2nxn = b2
...
an1x1 + an2x2 + ... + annxn = bn
ガウス消去法
Gaussian eliminationロゼッタコードには、Small Basic のコードがなかった。自分で書いてみたがうまく動かないようだ。修正がいる。下のコードは、SBのエディタからコピーいたためインデントされていない。
PowerShellでコードを書いたすごいひともいるようだ。
'連立一次方程式
Sub yomu
n=3
a[1][1]=2
a[1][2]=9
a[1][3]=4
a[1][4]=1
a[2][1]=7
a[2][2]=5
a[2][3]=3
a[2][4]=2
a[3][1]=6
a[3][2]=1
a[3][3]=8
a[3][4]=3
EndSub
Sub toku
For i=1 To n
pivot = a[i][i]
For j=1 To n+1
a[i][j]=a[i][j]/pivot
For j=1 To n
If (j=1) Then
goto loop
endif
pivot1=a[j][i]
For k=1 To n+1
a[j][k]=a[j][k]-a[i][k]*pivot1
loop:
EndFor
EndFor
EndFor
EndFor
For i=1 To n
X[i]=a[i][n+1]
EndFor
EndSub
Sub utu
For i=1 To n
TextWindow.Write("X(" + i +")=")
TextWindow.WriteLine(X[i])
EndFor
EndSub
yomu()
toku()
utu()
宇宙船は、地球の中心と月の中心とを通る平面内で航行するものとする。また、軌道修正はしない。宇宙船に引力をおよぼす天体は、地球と月だけとする。また、地球と月は空間に固定する。
地球を原点とし、月の方向をX軸とする平面座標を考える。
(0,0) 地球の位置
(C,0) 月の位置
C 地球と月の距離 = 3.844 ⋅ 105km
(x,y) 宇宙船の位置
r 地球と宇宙船の距離
s 月と宇宙船の距離
(Vx, Vy) 宇宙船の速度
(αx, αy) 宇宙船の加速度
(ƒx, ƒy) 宇宙船に働く力
mE 地球の質量 = 5.977 ⋅ 1024kg
mM 月の質量 = 7.352 ⋅ 1022kg
m 宇宙船の質量 = 1000kg とする
G 万有引力定数 = 6.673 ⋅ 10-11 m3kg-1sec-2
t 時刻
Vx=dx/dt
Vy=dy/dt
αx=dvx/dt
αy=dvy/dt
ƒx=m αx
ƒy=m αy
r=√ x2 + y2
s=√ (x-C)2 + y2
ƒx = - GmE ⋅ m / r2 ⋅ (x/r) - GmM ⋅ m / s2 ⋅ (x-C)/s
ƒy = - GmE ⋅ m / r2 ⋅ y/r - GmM ⋅ m / s2 ⋅ y/s
時間dtを十分に小さくとれば、dt時間後の宇宙船の位置と速度は、
(x+Vx ⋅ dt, y+Vy ⋅ dt)
(Vx+αx ⋅ dt, Vy+αy ⋅ dt)
で求まる。