頁 p.2〜p.3 演習1-1の解答

 テキスト中の解は、釣合いの中心である重心ではなく、金属棒を二つに切断した際に双方の質量が等しくなる点を求めています。

 重心を求めるには、支点のまわりのモーメントが等しくなる点を計算する必要があります。そのためには、求める重心の位置をBとして、(2+0.05X)(B-X)を0からBまで積分したものと、(2+0.05X)(X-B)をBから100まで積分したものが等しくなる時のBの値を求めればよいことになります。

 積分して、

  B^2+B^3/120 = (B-100)^2*(B+32)/120

から、

  B = 16000/27 = 59.26(cm)

となります。

 Simpson則による積分と繰り返しを使って数値積分で求めるプログラムをEX1-1.BASとして新たに入れてあります。

 DB=0.1 とすると解は59.2と59.3の間にあるとして求められます。DBの値を変えてお試しください。

100 ' PROGRAM EX.1-1
230 '
240 DEF FNL(X)=(2+X/20)*(B-X) '**** define function
250 DEF FNR(X)=(2+X/20)*(X-B)
260 '
270 INPUT "推定重心位置の下限を入力しなさい (0 - 100) : ";B0
280 INPUT "推定重心位置の上限を入力しなさい (0 - 100) : ";B1
290 INPUT "増分を入力しなさい (0.5) : ";DB
300 INPUT "積分の区間の幅を入力しなさい (0.5) : ";DX
310 IF DX=0 THEN DX=.5
320 H=DX/2
330 PRINT " 支点位置   モーメントの差"
340 '
350 FOR B=B0 TO B1 STEP DB
360 ' 支点の左側
370 S=0
380 FOR X=DX TO B-H STEP 2*DX
390 S=S+4*FNL(X)+2*FNL(X+DX)
400 NEXT X
410 L=DX/3*(FNL(0)+S-FNL(B))
420 ' 支点の右側
430 S=0
440 FOR X=B+DX TO 100-H STEP 2*DX
450 S=S+4*FNR(X)+2*FNR(X+DX)
460 NEXT X
470 R=DX/3*(FNR(B)+S-FNL(100))
480 D=L-R : PRINT B,D
490 NEXT B
500 END




Program kauz.bas
50 INPUT A, B, N : D = (B-A)/N 50 INPUT A, B, N : D = (B-A)/N : H = D/2 : S = 0


GAUSS-SEIDEL法による連立方程式の解法プログラムgseid.basには収束判定条件が入っておらず、無限ループに
陥ります。gseid-n.basをご利用ください。




112



2002 Copyright 木原 寛