SSブログ

下手な鉄砲の利用法 [BASIC]

 下手な鉄砲として、横0.0~1.0,縦0.0~1.0の正方形に、一様に弾があたる場合を想定します。XとYを乱数(0以上1未満)で求めた座標で、原点(0,0)からの距離が1.0未満の場合に、POINTをPLOTします。
 1000万回で何回PLOTしたのかをカウントし、その値を1000万で割って4倍した値が円周率の値にどこまで近づくのか試してみました。

 3.141までしか計算できていません。

 なかなか思ったようにはいかないものですね…^^;

(by 心如)

─────
REM *** モンテカルロ法による円周率の計算 ***

RANDOMIZE
OPTION ANGLE DEGREES

SET WINDOW -0,1,0,1
DRAW GRID (0.1,0.1)
FOR I = 0 TO 90
   PLOT LINES : COS(I),SIN(I);
NEXT I

SET POINT STYLE 1
LET C = 0
LET N = 10000000
FOR I = 1 TO N
   LET X = RND
   LET Y = RND
   LET R = SQR(X^2 + Y^2)
   IF R >= 1.0 THEN 10
   LET C = C + 1
   SET POINT COLOR INT(X*50)+INT(Y*50)+2
   PLOT POINTS: X,Y
10 NEXT I
   PRINT "R < 1.0"
   PRINT C;"回 /"; N
   LET  P = 4 * C / N
   PRINT "=";P
   
   END
─────
BASIC 02.JPG

BASIC 01.JPG


タグ:円周率 乱数

楕円のグラフ [BASIC]

REM *** 楕円のグラフ ***

RANDOMIZE
OPTION ANGLE DEGREES
SET WINDOW -1,1,-1,1
DRAW GRID (0.1,0.1)

LET A = 1

FOR B = 0.0 TO 1.0 STEP 0.01
   LET  C = INT(RND*30)+1
   SET LINE COLOR C
   FOR S = 0 TO 360
      PLOT LINES: A*COS(S),B*SIN(S);
   NEXT S
   PLOT LINES
   ASK COLOR MIX(C) R,G,D
   PRINT B;C;INT(R*100);INT(G*100);INT(D*100)
NEXT B

END
─────
BASIC 楕円.JPG

続きを読む


極方程式 r=sin(n*θ) による正葉曲線 [BASIC]

 別記事〔極方程式 r=sin(n*θ) のグラフ〕で、極座標による方程式により、興味深いグラフが描けることを紹介しました。nの値が、1、2、3、4、5、6、8の場合のサンプル画面を紹介します。
─────
BASIC 正葉曲線-01.jpg
 n=1の場合は、半径0.5の円になります。

BASIC 正葉曲線-02.jpg
 n=2の場合は、4枚葉の正葉曲線になります。

BASIC 正葉曲線-03.jpg
 n=3の場合は、3枚葉の正葉曲線になります。

続きを読む


極方程式 r=sin(n*θ) のグラフ [BASIC]

 別記事〔極方程式 r=2cos(S) のグラフ〕で、極方程式のグラフがBASICで簡単に描画できることを紹介しました。
 今回は、極方程式 r=sin(n * θ) のグラフで、nにいろんな数値を入力してグラフを描くプログラムを紹介します。
─────
REM *** 極方程式のグラフ ***
REM 極座標で表された点P(r,θ)が満たす
REM  r=f(θ)
REM の形の方程式を、極方程式と呼びます

OPTION ANGLE DEGREES
DEF R(S)=SIN(N*S)
SET WINDOW -1,1,-1,1
DRAW GRID (0.2,0.2)
LET C = 1
10 INPUT N
   IF N = 0 THEN 99
   SET COLOR C
   FOR S = 0 TO 360 STEP 0.05
      PLOT LINES: R(S)*COS(S),R(S)*SIN(S);
   NEXT S
   PLOT LINES
   LET C = C + 1
   GOTO 10
   
99 END
─────
BASIC sin_Nx_input.jpg
BASIC sin_Nx.jpg

続きを読む


極方程式 r=2cos(S) のグラフ [BASIC]

REM *** 極方程式のグラフ ***
REM 極座標で表された点P(r,θ)が満たす
REM  r=f(θ)
REM の形の方程式を、極方程式と呼びます

OPTION ANGLE DEGREES
DEF R(S)=2*COS(S)
SET WINDOW -0.5,2.5,-1.5,1.5
DRAW GRID (.5,.5)
FOR S = 0 TO 360
   PLOT LINES: R(S)*COS(S),R(S)*SIN(S);
NEXT S
END
─────
BASIC 2cos_s.jpg

続きを読む


繰り返し(for文) [BASIC]

for i = 1 to 29
   for j = 1 to 19
      let  x = i * j
      if x < 100 then print " ";
      if x < 10 then print " ";
      print x;
   next j
   print ""
next i
END
─────
BASIC 掛け算の表.jpg

続きを読む


内分法によるアニメーション [BASIC]

REM *** アニメ内分法
SET WINDOW -15,24,-22,22
DIM A(30),B(30),C(30),D(30)
FOR I=1 TO 22
   READ A(I),B(I)    !  データ読み込み(最初の図)
NEXT I
DATA 10,10,10,20,0,20,0,10,-10,10,-10,0,0,0,0,-10
DATA 0,-20,10,-20,10,-10,10,0,20,0,20,10,10,10
DATA 0,10,0,0,10,0,10,10,10,0,10,-10,0,-10
FOR I=1 TO 22
   READ C(I),D(I)    !  データ読み込み(最後の図)
NEXT I
DATA 13,1,13,11,6,15,6,5,6,15,1,10,1,0,1,10,6,15,13,11
DATA 8,6,8,-4,8,6,13,11,13,1,6,5,1,0,8,-4,13,1,8,-4
DATA 8,6,1,10
FOR T=0 TO 1 STEP 0.002
   CLEAR            ! 画面消去
   FOR I=1 TO 22    ! 図を描く
      PLOT LINES : T*C(I)+(1-T)*A(I),T*D(I)+(1-T)*B(I);
   NEXT I
   PLOT LINES
   PRINT T
NEXT T
FOR T=1 TO 0 STEP -0.002
   CLEAR            ! 画面消去
   FOR I=1 TO 22    ! 図を描く
      PLOT LINES : T*C(I)+(1-T)*A(I),T*D(I)+(1-T)*B(I);
   NEXT I
   PLOT LINES
   PRINT T
NEXT T
END
─────
BASIC 02.jpg

BASIC 01.jpg

BASIC 04.jpg

BASIC 03.jpg

続きを読む


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。