sub_set01へ戻る

名称 ・・・・・・・

弧長に関する微分、2階微分を計算

ルーチン名 ・・・・・・・

sBibun

スクリプトNo ・・・・・・・ sub_set01- 011
file名 ・・・・・・・ ScriptSet01.lzh
sub_set01のページからセットごとダウンロードしてください。
概略 ・・・・・・・

与えられた(tでの)微分値、2階微分値から、弧長(s)の微分、弧長の2階微分を計算する。

使用前提 ・・・・・・・

tBibun(sub_set-010)を使って前もってtの微分値,2階微分値を取得しておく。
呼び出し側で,計算結果を受ける引数(S,SS)に対応する変数を用意(宣言)しておく。

依存関係 ・・・・・・・

直接の依存は無い

間接的にはkaisa(sub_set-016),tBibun(sub_set-010)と併用することになる。

引数説明 ・・・・・・・

d1
d2
S
SS

(in)t微分 [1次元、3要素の配列]
(in)t2階微分[1次元、3要素の配列]
(out)s微分[1次元、3要素の配列]
(oui)s2階微分[1次元、3要素の配列]

戻り値説明 ・・・・・・・

処理の成否がfalseまたはtrueで戻る。 2階微分が無限大のときにfalseとなる。

変数説明 ・・・・・・・

A,B

ノルムのようなもの
カウンタ用変数(xyz)

注意点 ・・・・・・・

引数で入力・出力を行うので間違わないように注意が必要。
より明確にしたいならば(in)をvalに(out)をrefに指定してください。
実用上A及びBが0に近づく(直線に近くなる)とオーバーフローを起こしますので有効桁内で範囲を設けてフィルターをかける必要が生じます。

 
スクリプト
'-------------tの微分,t2の階微分から弧長の微分、弧長の2階微分を計算
Function sBibun(d1,d2,S,SS)
'戻値---成功か失敗か(成功:true、失敗:false)
'引数---
' d1  :(in)t微分
' d2  :(in)t二階微分
' S   :(out)s微分
' SS  :(out)s二階微分
  Dim A,B,j
  A=d1(0)^2+d1(1)^2+d1(2)^2
  B=d1(0)*d2(0)+d1(1)*d2(1)+d1(2)*d2(2)
  if A=0 or B=0 then
    sBibun=false
    exit function
  end if

  for j=0 to 2
    S(j)=d1(j)/sqr(A)
    SS(j)=(d2(j)/A)-(d1(j)*B/(A^2))
  next
  sBibun=true
End Function
使用例
主サブルーチンの例題を参照してください。

sub_set01へ戻る