区間許容誤差  : Tol_Err = 10^(-19) で計算                  小数点以下10桁  11桁目四捨五入   ◎赤字部は誤り

step数
x1
y1
x2
y2
x3
y3
0

1.0000000000 3.0000000000 -2.0000000000 -1.0000000000 1.0000000000 -1.0000000000
10 390997
0.7784804109
0.1413922996
-2.0250924779
0.0972193841
1.1529857358
-0.1626108871
20
767693
3.0042926367
0.5119252350
-1.3886265371
-0.4704760499
-0.6916743523
0.0692256989
30
1185421
0.8563404988
2.2870936634
-0.8779838776
-0.8659638274
0.1885828028
-0.6794851361
40
1401411
-0.6220036904
1.8583181561 0.1735445568
-2.3684104427
0.2343665688
0.7797374606
50
1824156
-2.7014614093
-3.7972226828
1.5059381921
0.9608134251
0.4161262919
1.5096828696
60
2311751
0.7438074974
1.9399479437
0.2640103328
-0.7316243915
-0.6574927646
-0.5786692530

区間許容誤差  : Tol_Err = 10^(-20) で計算                 小数点以下10桁  11桁目四捨五入    ◎赤字部は誤り


step数
x1
y1
x2
y2
x3
y3
0

1.0000000000 3.0000000000 -2.0000000000 -1.0000000000 1.0000000000 -1.0000000000
10 625754
0.7784804104 0.1413923001 -2.0250924780 0.0972193841
1.1529857361
-0.1626108874
20
1220309
3.0042926367
0.5119252350
-1.3886265374
-0.4704760502
-0.6916743521
0.0692256991
30
1890422
0.8563404989
2.2870936636
-0.8779838787
-0.8659638277
0.1885828037
-0.6794851361
40
2234593
-0.6220036914
1.8583181573
0.1735445568
-2.3684104431
0.2343665694
0.7797374601
50
2912127
-2.7014614093
-3.7972226827
1.5059381922
0.9608134251
0.4161262918
1.5096828696
60
3682562
0.7438075001
1.9399479510
0.2640103344
-0.7316243948 -0.6574927676 -0.5786692548

区間許容誤差  : Tol_Err = 10^(-21) で計算                 小数点以下10桁  11桁目四捨五入    ◎赤字部は誤り (★工事中★)


step数
x1
y1
x2
y2
x3
y3
0

1.0000000000 3.0000000000 -2.0000000000 -1.0000000000 1.0000000000 -1.0000000000
10 991999
0.7784804102 0.1413923003 -2.0250924780 0.0972193841
1.1529857363
-0.1626108875
20
1930950
3.0042926367
0.5119252350
-1.3886265375 -0.4704760502
-0.6916743520
0.0692256992
30
2996061
0.8563404989
2.2870936637 -0.8779838789 -0.8659638277
0.1885828038
-0.6794851361
40
3533400
-0.6220036917
1.8583181577 0.1735445568
-2.3684104432 0.2343665696
0.7797374599
50
4610183
-2.7014614093
-3.7972226827
1.5059381924 0.9608134250 0.4161262917
1.5096828697
60
5835471
0.7438075000 1.9399479508 0.2640103346 -0.7316243947 -0.6574927677 -0.5786692547


比較参照データ:情報処理学会研究報告:Vol.2018-HPC-164 No.1 :平山 弘



OPTION BASE 1    !  十進BASIC

PRINT  "開始時刻:  "; DATE$;" ";TIME$
CALL メイン_SUB
PRINT  "終了時刻:  ";  DATE$;" ";TIME$


SUB メイン_SUB   !  メインルーチン
!---------------------------------------------------------------------------
   LET  終了時刻 = 75                             !終了時刻  0〜75秒
   LET  Tol_ERR = 10^(-12)                       !許容誤差 -19 / -20 / -21
   
   LET   Tol_ERR_KTA_cnt=Tol_ERR
   FOR KKK=1 TO 50
      LET Tol_ERR_KTA_cnt=Tol_ERR_KTA_cnt*10
      LET Tol_ERR_桁  =  KKK
      IF  Tol_ERR_KTA_cnt>=.999 THEN   EXIT FOR
   NEXT KKK
   
   PRINT  "Tol_ERR =   -"; Tol_ERR_桁
   
   LET  dt = 0.0000001                           !時間幅  dt    最適値=10^(-7)
   PRINT  "初期dt =   "; dt
   LET  t10_60=1                                  !10,20,30,40,50,60,
   !---------------------------------------------------------------------------
   
   
   DECLARE EXTERNAL SUB   テキスト印刷         !  値引き渡し  ByVal 
   DECLARE EXTERNAL SUB   RK4                  !  値引き渡し  ByVal 
   DECLARE EXTERNAL SUB   RK4_A                !  値引き渡し  ByVal 
   DECLARE EXTERNAL SUB   RK4_B                !  値引き渡し  ByVal 
   DECLARE EXTERNAL FUNCTION  適正dt           !  値引き渡し  ByVal 
   DECLARE EXTERNAL SUB  図形出力                !  値引き渡し  ByVal 
   DECLARE EXTERNAL SUB  一次近似_出力
   
   DIM rr(3, 3)                                !  rr(識別番号,軸)
   DIM vv(3, 3)                                !  vv(識別番号,軸)
   DIM m(3)
   
   DIM pre_rr(3, 3)                             ! 一時保管  rr(識別番号,軸)
   
   DIM RK4_ans(18)
   DIM COM_ans(18)
   
   
   !初期条件
   LET m(1) = 3            !  質量1
   LET m(2) = 4            !  質量2
   LET m(3) = 5            !  質量3
   LET rr(1, 1) = 1        !(識別番号,軸)
   LET rr(1, 2) = 3        !(識別番号,軸)
   LET rr(1, 3) = 0        !(識別番号,軸)
   LET rr(2, 1) = -2       !(識別番号,軸)
   LET rr(2, 2) = -1       !(識別番号,軸)
   LET rr(2, 3) = 0        !(識別番号,軸)
   LET rr(3, 1) = 1        !(識別番号,軸)
   LET rr(3, 2) = -1       !(識別番号,軸)
   LET rr(3, 3) = 0        !(識別番号,軸)
   LET vv(1, 1) = 0        !(識別番号,軸)
   LET vv(1, 2) = 0        !(識別番号,軸)
   LET vv(1, 3) = 0        !(識別番号,軸)
   LET vv(2, 1) = 0        !(識別番号,軸)
   LET vv(2, 2) = 0        !(識別番号,軸)
   LET vv(2, 3) = 0        !(識別番号,軸)
   LET vv(3, 1) = 0        !(識別番号,軸)
   LET vv(3, 2) = 0        !(識別番号,軸)
   LET vv(3, 3) = 0        !(識別番号,軸)
   !---------------------------------------------------------------------------
   
   LET  cnt0 = 0  !初期化
   LET  cnt1 = 0  !初期化
   
   ! PRINT  "dt" , "t" , "x1" ,  "y1" ,  "x2" ,  "y2" ,  "x3" ,  "y3"   !先頭表記
   !---------------------------------------------------------------------------
   DO WHILE t <= 終了時刻
   
   ! 出力 dt t M1x M1y  M2x M2y  M3x M3y  
   ! PRINT  dt,t,rr(1, 1),rr(1, 2),rr(2, 1),rr(2, 2),rr(3, 1),rr(3, 2) !(識別番号,軸)
   
   !      IF ROUND(t,2)=INT(t)  OR  ROUND(t,2)=CEIL(t)    THEN     !  小数点下2桁が整数に近いとき  例)  .99〜1.01
   
      IF t <  t10_60    THEN     !  一時保管
         LET pre_dt=dt
         LET pre_t=t
         MAT pre_rr=rr
      END IF
      IF t >  t10_60  THEN
      !  CALL テキスト印刷((pre_dt),(pre_t),pre_rr)  !  値渡し  ()  で括る   
      !  CALL テキスト印刷((dt),(t),rr)                !  値渡し  ()  で括る   
      
         CALL 一次近似_出力  ((cnt0),(pre_t),pre_rr,(t),rr)
         LET  t10_60=t10_60  +  1
      END IF
      
      !      END IF
      
      CALL  図形(rr)
      
      
      LET    cnt1 = cnt1 + 1
      
      LET    dt = dt * 2  !2倍にする
      
      LET    dt=適正dt(t, dt, m, rr, vv,RK4_ans,Tol_ERR)
      
      !      CALL RK4(t, dt, m, rr, vv,RK4_ans)             !  ルンゲ=クッタ   RK4_ans()は行列
      !      CALL RK4_A(t, dt, m, rr, vv,RK4_ans)           !  ルンゲ=クッタ   RK4_ans()は行列
      
      CALL RK4_B(t, dt, m, rr, vv,RK4_ans)                  !  ルンゲ=クッタ   RK4_ans()は行列
      
      
      LET      rr(1, 1) = RK4_ans(1)
      LET      rr(1, 2) = RK4_ans(2)
      LET      rr(1, 3) = RK4_ans(3)
      LET      vv(1, 1) = RK4_ans(4)
      LET      vv(1, 2) = RK4_ans(5)
      LET      vv(1, 3) = RK4_ans(6)
      LET      rr(2, 1) = RK4_ans(7)
      LET      rr(2, 2) = RK4_ans(8)
      LET      rr(2, 3) = RK4_ans(9)
      LET      vv(2, 1) = RK4_ans(10)
      LET      vv(2, 2) = RK4_ans(11)
      LET      vv(2, 3) = RK4_ans(12)
      LET      rr(3, 1) = RK4_ans(13)
      LET      rr(3, 2) = RK4_ans(14)
      LET      rr(3, 3) = RK4_ans(15)
      LET      vv(3, 1) = RK4_ans(16)
      LET      vv(3, 2) = RK4_ans(17)
      LET      vv(3, 3) = RK4_ans(18)
      
      LET      cnt0 = cnt0 + 1
      
      LET      t = t + dt
   LOOP
   
   
END SUB

END
!---------------------------------------------------------------------------


!---------------------------------------------------------------------------
EXTERNAL  SUB   一次近似_出力(cnt0,pre_t,pre_rr(,),t,rr(,))

DIM 近似_rr(3,2)
LET NNN_t  =  INT(t)  !整数部  1秒、2秒・・・、60秒

LET 差1  =  NNN_t  -  pre_t
LET 差2  =      t  -  NNN_t
LET 比1=差1/(差1+差2)
LET 比2=差2/(差1+差2)

LET 近似_rr(1,1)  =  比1*rr(1,1)  +  比2*pre_rr(1,1)
LET 近似_rr(1,2)  =  比1*rr(1,2)  +  比2*pre_rr(1,2)
LET 近似_rr(2,1)  =  比1*rr(2,1)  +  比2*pre_rr(2,1)
LET 近似_rr(2,2)  =  比1*rr(2,2)  +  比2*pre_rr(2,2)
LET 近似_rr(3,1)  =  比1*rr(3,1)  +  比2*pre_rr(3,1)
LET 近似_rr(3,2)  =  比1*rr(3,2)  +  比2*pre_rr(3,2)

LET 近似_rr(1,1)  =  ROUND(近似_rr(1,1),10)  !  10桁丸め
LET 近似_rr(1,2)  =  ROUND(近似_rr(1,2),10)  !  10桁丸め 
LET 近似_rr(2,1)  =  ROUND(近似_rr(2,1),10)  !  10桁丸め
LET 近似_rr(2,2)  =  ROUND(近似_rr(2,2),10)  !  10桁丸め
LET 近似_rr(3,1)  =  ROUND(近似_rr(3,1),10)  !  10桁丸め
LET 近似_rr(3,2)  =  ROUND(近似_rr(3,2),10)  !  10桁丸め


PRINT cnt0;" ";NNN_t;" ";近似_rr(1, 1);" ";近似_rr(1, 2);" ";近似_rr(2, 1);" ";近似_rr(2, 2);" ";近似_rr(3, 1);" ";近似_rr(3, 2) !(識別番号,軸)

END  SUB
!---------------------------------------------------------------------------


!---------------------------------------------------------------------------
EXTERNAL  FUNCTION  適正dt(t,dt,m(),r0(,),v0(,),EX2_RK4_ans(),Tol_ERR)

DECLARE EXTERNAL SUB   RK4_A                 !  値引き渡し  ByVal 
DECLARE EXTERNAL SUB   RK4_B                 !  値引き渡し  ByVal 

DIM  EX2A_RK4_ans(18)
DIM  EX2B_RK4_ans(18)

LET dt00=dt

DO

   MAT EX2A_RK4_ans = EX2_RK4_ans      !  行列の代入
   MAT EX2B_RK4_ans = EX2_RK4_ans      !  行列の代入
   
   CALL RK4_A(t,dt,m,r0,v0,EX2A_RK4_ans)    ! 4次の計算
   CALL RK4_B(t,dt,m,r0,v0,EX2B_RK4_ans)    ! 5次の計算
   
   IF 誤差_和(EX2A_RK4_ans,EX2B_RK4_ans)  <  Tol_ERR  THEN 
      EXIT  DO
   ELSE
      LET dt=dt/2
   END IF
LOOP

LET  適正dt=dt


END FUNCTION

!---------------------------------------------------------------------------
EXTERNAL  FUNCTION 誤差_和(ans_A(),ans_B())

FOR KK=1  TO  18
   IF ans_A(KK)<>0  THEN    !  0の割り算回避
      LET 差 = ans_A(KK) - ans_B(KK)
      LET sum_aaa = sum_aaa + ABS(差/ans_A(KK))
   END IF
NEXT KK

LET 誤差_和=sum_aaa

END FUNCTION
!---------------------------------------------------------------------------

EXTERNAL  SUB RK4_B(t,dt,m(),r0(,),v0(,),EX_RK4_ans())  !  dt 1/2を2回

! OPTION ARITHMETIC DECIMAL_HIGH

DECLARE EXTERNAL SUB   RK4                     !  値引き渡し  ByVal 
DIM EX_rr(3, 3)                                !  rr(識別番号,軸)
Dim EX_vv(3, 3)                                !  vv(識別番号,軸)

LET dt_2=dt/2

CALL RK4_A(t,dt_2,m,r0,v0,EX_RK4_ans)       ! 1/2   1回目

LET      EX_rr(1, 1) = EX_RK4_ans(1)
LET      EX_rr(1, 2) = EX_RK4_ans(2)
LET      EX_rr(1, 3) = EX_RK4_ans(3)
LET      EX_vv(1, 1) = EX_RK4_ans(4)
LET      EX_vv(1, 2) = EX_RK4_ans(5)
LET      EX_vv(1, 3) = EX_RK4_ans(6)
LET      EX_rr(2, 1) = EX_RK4_ans(7)
LET      EX_rr(2, 2) = EX_RK4_ans(8)
LET      EX_rr(2, 3) = EX_RK4_ans(9)
LET      EX_vv(2, 1) = EX_RK4_ans(10)
LET      EX_vv(2, 2) = EX_RK4_ans(11)
LET      EX_vv(2, 3) = EX_RK4_ans(12)
LET      EX_rr(3, 1) = EX_RK4_ans(13)
LET      EX_rr(3, 2) = EX_RK4_ans(14)
LET      EX_rr(3, 3) = EX_RK4_ans(15)
LET      EX_vv(3, 1) = EX_RK4_ans(16)
LET      EX_vv(3, 2) = EX_RK4_ans(17)
LET      EX_vv(3, 3) = EX_RK4_ans(18)

CALL RK4_A(t,dt_2,m,EX_rr,EX_vv,EX_RK4_ans)   ! 1/2   2回目


END  SUB

!---------------------------------------------------------------------------
EXTERNAL  SUB RK4_A(t,dt,m(),r0(,),v0(,),EX_RK4_ans())
DECLARE EXTERNAL SUB   RK4                  !  値引き渡し  ByVal 

CALL RK4(t,dt,m,r0,v0,EX_RK4_ans)

END  SUB
!---------------------------------------------------------------------------

EXTERNAL  SUB RK4(t,dt,m(),r0(,),v0(,),RK4_ans())      ! ここでは、mが使われていない

DECLARE EXTERNAL FUNCTION   速度変位成分_func          !  値引き渡し  ByVal 
DECLARE EXTERNAL FUNCTION   位置変位成分_func          !  値引き渡し  ByVal
 
!下準備-------
Dim ret(18)
Dim r1(3, 3), r2(3, 3), r3(3, 3), r4(3, 3)                !  r(識別番号,軸)
Dim v1(3, 3), v2(3, 3), v3(3, 3), v4(3, 3)                !  v(識別番号,軸)
Dim k1rr(3, 3), k2rr(3, 3), k3rr(3, 3), k4rr(3, 3)        !  k1rr(識別番号,軸)
Dim k1vv(3, 3), k2vv(3, 3), k3vv(3, 3), k4vv(3, 3)        !  k1vv(識別番号,軸)
 
!DIM 番号 As Integer, 軸 As Integer
!Dim cnt_00 As Integer
 
FOR 番号 = 1 TO 3
   FOR 軸 = 1 TO 3
      LET  v1(番号, 軸) = v0(番号, 軸)      !v(識別番号,軸)  (3,3)  3体×3次元  前処理
      LET  r1(番号, 軸) = r0(番号, 軸)      !r(識別番号,軸)  (3,3)  3体×3次元  前処理
   NEXT 軸
NEXT 番号
 
!下準備--------
 
 
!k1
For 番号 = 1 To 3     !識別番号
   For 軸 = 1 To 3    !軸成分
      LET      k1vv(番号, 軸) = dt * 速度変位成分_func(番号, 軸, t, r1, v1, m)   !速度変位_総和 m/s^2     ★dv/dt  3体×3次元=9連立
      LET      k1rr(番号, 軸) = dt * 位置変位成分_func(番号, 軸, t, r1, v1, m)   !位置変位成分  m/s       ★dx/dt  3体×3次元=9連立
   Next 軸
Next 番号
 
!k2
For 番号 = 1 To 3
   For 軸 = 1 To 3
      LET     v2(番号, 軸) = v1(番号, 軸) + k1vv(番号, 軸) / 2    !v(識別番号,軸)  (3,3)  前処理
      LET     r2(番号, 軸) = r1(番号, 軸) + k1rr(番号, 軸) / 2    !r(識別番号,軸)  (3,3)  前処理
   NEXT 軸
NEXT 番号
For 番号 = 1 To 3     !識別番号
   For 軸 = 1 To 3    !軸成分
      LET    k2vv(番号, 軸) = dt * 速度変位成分_func(番号, 軸, t + dt / 2, r2, v2, m)      !速度変位_総和 m/s^2  ★dv/dt  3体×3次元=9連立
      LET    k2rr(番号, 軸) = dt * 位置変位成分_func(番号, 軸, t + dt / 2, r2, v2, m)      !位置変位成分  m/s    ★dx/dt  3体×3次元=9連立
   Next 軸
Next 番号
 
!k3
For 番号 = 1 To 3
   FOR 軸 = 1 TO 3
      LET     v3(番号, 軸) = v1(番号, 軸) + k2vv(番号, 軸) / 2    !v(識別番号,軸)  (3,3)  前処理
      LET     r3(番号, 軸) = r1(番号, 軸) + k2rr(番号, 軸) / 2    !r(識別番号,軸)  (3,3)  前処理
   Next 軸
Next 番号
For 番号 = 1 To 3    !識別番号
   For 軸 = 1 To 3    !軸成分
      LET    k3vv(番号, 軸) = dt * 速度変位成分_func(番号, 軸, t + dt / 2, r3, v3, m)     !速度変位_総和 m/s^2   ★dv/dt  3体×3次元=9連立
      LET    k3rr(番号, 軸) = dt * 位置変位成分_func(番号, 軸, t + dt / 2, r3, v3, m)     !位置変位成分  m/s     ★dx/dt  3体×3次元=9連立
   Next 軸
Next 番号
 
!k4
For 番号 = 1 To 3
   For 軸 = 1 To 3
      LET    v4(番号, 軸) = v1(番号, 軸) + k3vv(番号, 軸)     !v(識別番号,軸成分)  (3,3)  前処理
      LET    r4(番号, 軸) = r1(番号, 軸) + k3rr(番号, 軸)     !r(識別番号,軸成分)  (3,3)  前処理
   Next 軸
Next 番号
For 番号 = 1 To 3    !識別番号
   For 軸 = 1 To 3    !軸成分
      LET   k4vv(番号, 軸) = dt * 速度変位成分_func(番号, 軸, t + dt, r4, v4, m)       !速度変位_総和 m/s^2     ★dv/dt  3体×3次元=9連立
      LET   k4rr(番号, 軸) = dt * 位置変位成分_func(番号, 軸, t + dt, r4, v4, m)       !位置変位成分  m/s       ★dx/dt  3体×3次元=9連立
   Next 軸
Next 番号
 
 
 
For 番号 = 1 To 3
   For 軸 = 1 To 3
      LET   v1(番号, 軸) = v1(番号, 軸) + 1 / 6 * (k1vv(番号, 軸) + 2 * k2vv(番号, 軸) + 2 * k3vv(番号, 軸) + k4vv(番号, 軸))    !  m/s
      LET   r1(番号, 軸) = r1(番号, 軸) + 1 / 6 * (k1rr(番号, 軸) + 2 * k2rr(番号, 軸) + 2 * k3rr(番号, 軸) + k4rr(番号, 軸))    !  m
   Next 軸
Next 番号
 
 
!便宜的に戻り値を行列 ret(18)でまとめ
 
 
LET        RK4_ans(1) = r1(1, 1)
LET        RK4_ans(2) = r1(1, 2)
LET        RK4_ans(3) = r1(1, 3)
LET        RK4_ans(4) = v1(1, 1)
LET        RK4_ans(5) = v1(1, 2)
LET        RK4_ans(6) = v1(1, 3)
LET        RK4_ans(7) = r1(2, 1)
LET        RK4_ans(8) = r1(2, 2)
LET        RK4_ans(9) = r1(2, 3)
LET        RK4_ans(10) = v1(2, 1)
LET        RK4_ans(11) = v1(2, 2)
LET        RK4_ans(12) = v1(2, 3)
LET        RK4_ans(13) = r1(3, 1)
LET        RK4_ans(14) = r1(3, 2)
LET        RK4_ans(15) = r1(3, 3)
LET        RK4_ans(16) = v1(3, 1)
LET        RK4_ans(17) = v1(3, 2)
LET        RK4_ans(18) = v1(3, 3)
 
 
END SUB
!---------------------------------------------------------------------------

!---------------------------------------------------------------------------
EXTERNAL SUB 図形(rr_ex(,))
! OPTION ARITHMETIC DECIMAL_HIGH

SET WINDOW -5 , 5 , -5 , 5
DRAW AXES(1,1)
SET POINT STYLE 1 
!   1 ・   2 +   3 *   4 ○   5 ×   6 ■   7 ●
!  0白, 1黒, 2青, 3緑, 4赤, 5水色, 6黄色, 7赤紫,
!  8 灰色,9 濃い青,10 濃い緑,11 青緑, 12 えび茶,13 オリーブ色,14 濃い紫,15 銀色,・・・

SET POINT COLOR 2  !  濃い青    M3
PLOT POINTS: rr_ex(1, 1) , rr_ex(1, 2)
SET POINT COLOR 4  !  赤        M4
PLOT POINTS: rr_ex(2, 1) , rr_ex(2, 2)
SET POINT COLOR 1  !  黒        M5
PLOT POINTS: rr_ex(3, 1) , rr_ex(3, 2)

END SUB
!---------------------------------------------------------------------------

!---------------------------------------------------------------------------
EXTERNAL FUNCTION 速度変位成分_func(被番号, 軸, t,  r(,),  v(,),  m())          !  (速度変位  m/s^2)を返す
! OPTION ARITHMETIC DECIMAL_HIGH

Dim 差異(3)

LET G    = 1                 !  万有引力定数

LET  rrr = 0      !  初期化
LET sum_a = 0     !  初期化
 
!  dv/dt = -G・M・(→r)/r^3             ・・・  万有引力の法則
 
For 基準天体 = 1 To 3    !番号
   If 被番号 <> 基準天体 Then  !  相違する場合だけ計算する
      LET    差異(1) = r(被番号, 1) - r(基準天体, 1)                      !r(識別番号,軸)  x成分
      LET    差異(2) = r(被番号, 2) - r(基準天体, 2)                      !r(識別番号,軸)  y成分
      LET    差異(3) = r(被番号, 3) - r(基準天体, 3)                      !r(識別番号,軸)  z成分
      LET    rrr = SQR((差異(1) ^ 2 + 差異(2) ^ 2 + 差異(3) ^ 2) )        !r  =  √(x^2+y^2+z^2)
      
      LET    sum_a = -G * m(基準天体) * 差異(軸) / rrr / rrr / rrr + sum_a       !相違し、且つ、計算する軸成分だけを積算する
      
   END IF
Next 基準天体
 
 
LET       速度変位成分_func = sum_a           !加速度  1成分のみ

End Function

!---------------------------------------------------------------------------
EXTERNAL FUNCTION 位置変位成分_func(被番号,軸, t, r(,), v(,), m())        !  (位置変位  m/s)を返す
! OPTION ARITHMETIC DECIMAL_HIGH

!  dx/dt = v
 
LET    位置変位成分_func = v(被番号, 軸)  !単に速度ベクトルを返す  1成分のみ

END FUNCTION
!---------------------------------------------------------------------------