jsbasic/samples/sample.gaussian.txt

48 lines
1.3 KiB
Plaintext
Raw Normal View History

2012-02-09 03:13:44 +00:00
5 rem Plot Gaussian distribution in two dimensions
10 text: home: PRINT "Std. Dev. = ";: input s1
20 hgr: hcolor = 3
30 w = 279: h = 159
40 w0 = w - 100: w1 = w0/10
45 h1 = h - 100: h2 = h - 60
50 k = 0.5: m = 1 / (2 * 3.14159265 * s1 * s1)
60 for i = 0 to 10 step k
70 x = 10 * i + 1: y = 10 * i + h1
75 hplot x,y
80 for j = 0 to w0 step 1
85 j1 = 10 * j / w0
90 d1 = abs(5 - i)
100 d2 = abs(5 - j1)
110 r2 = (d1*d1+d2*d2)/(2*s1*s1)
120 g = exp(-r2)/(2*3.14159*s1*s1)
130 a = int((h2 * g)/ m)
140 x = 10 * i + w1 * j1 + 1
150 y = 10 * i + h1 - a
160 hplot to x,y
170 if (i = 0) goto 265
175 if (j = w0) goto 190
180 j2 = int(j/10): if ((j/10) <> j2) goto 290
190 d1 = abs(5 - i + k)
200 d2 = abs(5 - j1)
210 r2 = (d1*d1+d2*d2)/(2*s1*s1)
220 u = exp(-r2)/(2*3.14159*s1*s1)
225 a1 = int((h2 * u)/ m)
230 x1 = 10 * (i - k) + w1 * j1 + 1
240 y1 = 10 * (i - k) + h1 - a1
245 rem if (y <= y1) goto 290
250 hplot to x1,y1
260 hplot x,y
265 if (j = 0) goto 310
270 if (i < 10) goto 290
275 if (j = w0) goto 295
280 j2 = int(j/10): if ((j/10) = j2) goto 295
290 hcolor = 0
295 hplot to x,10 * i + h1
300 hcolor = 3
305 hplot x,y
310 next j
320 next i
330 hplot w+1,h: hplot to 100+1,h: hplot to 0+1,h1
340 vtab 21: print "Gaussian (standard deviation = ";s1;")"
350 print "Plot from -5.0 to + 5.0"
360 print "Peak value = "m