(1) 垂直投球のプログラム( ANSI/ISO/JIS規格C言語 )
-
初速
でボールを真上に投げ上げた時、 ボールが落ちてくるまでの間、 1秒毎のボールの高さを求めるプログラムは、 次のようになります。 ボールの飛行時間と最大の高さも表示します。 ただし、 重力加速度を
としています。 ポイントになる高さを求める式は次のようになります。
-
#include < stdio.h >
main ( )
{
float y, a, b ;
int t ;
y = 0.0 ;
t = 0 ;
a = 16 / 4.9 ;
b = 16 * 16 / 9.8 - 4.9 * ( 16 / 9.8 ) * ( 16 / 9.8 ) ;
printf ("高さは %6.2f m ( %2d sec )\n\n", y, t++ ) ;
while (( y = 16 * t - 0.5 * 9.8 * t * t ) > 0 ) {
printf ("高さは %6.2f m ( %2d sec )\n\n", y, t++ ) ;
}
printf ("飛行時間は %6.2f 秒\n\n", a ) ;
printf ("最大の高さは %6.2f m\n\n", b ) ;
return 0 ;
}
-
初速
でボールを45度の角度で投げ上げた時、 ボールが地面に落ちるまでの軌道をグラフに表してみます。 次のようなプログラムを使ってグラフを描きます。 また、 ボールの飛行時間、 飛行距離、 最大の高さも表示します。-
110 DEF xp(t) = 16*t / SQR(2)
120 DEF yp(t) = 16*t / SQR(2) - 0.5*9.8*t*t
130 LET prev_xp = xp(0)
140 LET prev_yp = yp(0)
150 SET WINDOW -1, 30, -1, 30
160 DRAW grid
170 FOR t=0 TO 2.30 STEP 0.01
180 SET DRAW MODE NOTXOR
190 SET POINT COLOR 4
200 PLOT POINTS : xp(t), yp(t)
210 WAIT DELAY 1/20
220 PLOT POINTS : xp(t), yp(t)
230 SET DRAW MODE OVERWRITE
240 NEXT t
250 FOR t=0 TO 2.30 STEP 0.01
260 SET LINE COLOR 2
270 PLOT LINES : prev_xp, prev_yp ; xp(t), yp(t)
280 LET prev_xp = xp(t)
290 LET prev_yp = yp(t)
300 NEXT t
310 PRINT "飛行時間(秒): "; 16 / ( 4.9 * SQR (2) )
320 PRINT "飛行距離(m): "; 16 * 16 / 9.8
330 PRINT "最大高さ(m): "; 16 * 8 / 9.8 - 4.9 * ( 8 / ( 4.9 * SQR (2)))^2
340 END
-
無重力空間で、 質量
の重りの付いたバネ定数
のバネを自然長から
引き伸ばしてから手を離して単振動をさせました。 横軸に時間、 縦軸に自然長の重りの位置からの重りの変位をとり、 重りの運動をグラフに表してみます。 次のようなプログラムを使ってグラフを描きます。 周期と振幅も表示します。 ポイントになる時間と変位の関係を表す式は次のようになります。
-
10 DEF f ( t ) = 0.1 * SIN ( 2 * t - pi / 2 )
20 SET WINDOW -4, 4, -0.12, 0.12
30 DRAW GRID
40 FOR t = -4 TO 4 STEP 0.01
50 PLOT LINES : t, f ( t ) ;
60 NEXT t
70 END
-
節の長さが
、高さが
のサイクロイド曲線を、円を転がしながら描いてみます。-
100 DECLARE EXTERNAL PICTURE circle
110 DEF xf ( t ) = ( t - SIN(t) )
120 DEF yf ( t ) = ( 1 - COS(t) )
130 LET pre_xf = xf ( 0 )
140 LET pre_yf = yf ( 0 )
150 SET WINDOW -1, 9, -5, 5
160 DRAW GRID
170 FOR t = 0 TO 9 STEP PI / 18
180 SET LINE COLOR 2
190 PLOT LINES : pre_xf, pre_yf ; xf(t), yf(t)
200 LET pre_xf = xf ( t )
210 LET pre_yf = yf ( t )
220 SET DRAW MODE NOTXOR
230 SET LINE COLOR 4
240 DRAW CIRCLE ( t, 1, 1 )
250 PLOT LINES : t, 1 ; xf ( t ), yf ( t )
260 PLOT POINTS : xf ( t ), yf ( t )
270 WAIT DELAY 1 / 10
280 PLOT POINTS : xf ( t ), yf ( t )
290 PLOT LINES : t, 1 ; xf ( t ), yf ( t )
300 DRAW CIRCLE ( t, 1, 1 )
310 SET DRAW MODE OVERWRITE
320 NEXT t
330 END
1000 EXTERNAL PICTURE CIRCLE ( x, y, r )
1010 FOR t = 0 TO 2 * PI STEP PI / 45
1020 PLOT LINES : x + r * COS(t), y + r * SIN(t)
1030 NEXT t
1040 END PICTURE
プログラム の コピー&ペースト のページ ( 別窓 ) へ