2016年9月23日金曜日

懸垂線、再び

以前、当blogで、関数電卓に付き物の双曲線関数の使用例で、懸垂線の計算について調べたネタをアップしました。

懸垂線は、紐や鎖の両端を持ってタラリと垂らすと、その紐なり鎖なりが描く曲線なんだそうです。数式では、つぎの式で示されます。

y = a * cosh(x/a)

HP35SのTraining modules には、懸垂線の計算例が紹介されておりましたが、紐の両端を持つ、その高さが等しい例でした。
しかし、紐をタラリと垂らすとなれば、その両端の高度が違う場合もありましょうや。
そこで両端の高度が異なる場合、懸垂線のパラメタ (カテナリ数と極点x座標)の数値を求める方法を調べてみようと思います。

懸垂線は、紐の両端の高度が異なっても、同じ式で表現されると言います。
両端の高度が異なる懸垂線は、煎じ詰めるとつぎの数値で決定される、として良いでしょう。

  • 紐の片方の端を原点とし、もう片方の端を「吊り下げ点」として、吊り下げ点の座標(D, H)を与える
  • また、紐の長さ L を指定する
こうすれば、懸垂線のパラメタは一意に決定されそうです。これら3つのパラメタ、H, D, L を指定すれば、懸垂線のパラメタである a (カテナリ数), x (極点x座標)が決定され、懸垂線自体が決定できるだろうというハラです。
コチャコチャと計算すると、D, H, Lからa, xを決定する方程式は、つぎの2本である事が判ります。

a*(sinh(x/a)+sinh((D-x)/a)-L = 0
a*(cosh((D-x)/a)-cosh(x/a))=H = 0

非線形の連立方程式です。解析的に解けるんかいや ?
大変難しそうで、当方の知見は及びません。しかし、高機能電卓の一部には、数値解を計算する機能を持ち合わせているものがあります。そう、HP PrimeやHP50Gが、まさにソレなのです ! (もちろん他にもありますが、当blogはHP電卓の情報発信を任じておりますので)。

HP50Gでは、つぎの様にします。

  1. D, H, L に数値をストアします
  2. つぎの通り、スタックに配します

  3. [ 'A*(SINH(X/A)+SINH((D-X)/A)-L=0' 'A*(COSH((D-X)/A)-COSH(X/A))=H=0' ]
    [ 'A' 'X' ]
    [ 10 10 ]
     
  4. MSLVを実行
最後にスタックに積んだ [ 10 10 ] は、数値解を求めるための「初期値」で、未知数A, X に対応します。この例ではA=!0, X=10 としましたが、D, H, Lとの兼ね合いから、適切な値を指定しないと数値解が得られない事もあります。

例として、つぎの場合を計算させてみましょう。

入力  D=35, H=18, L=44

結果  A=19.0231959735, X=9.23406136377

HP Primeの場合は、もっと楽 ?

「解く」アプリを呼び出し、つぎの様に数式を入れます。


そして、[Num」キーを押して、D, H, Lに数値を設定、チェックボックスのチェックを外し、A, Xを求めるので、A, Xのチェックボックスにはチェックを入れたままにして、スクリーンキー右端の「解く」を押します。



答え。


エミュレータでは、瞬時に値を得られましたが、実機では若干、時間がかかるでしょうか。それでも、50Gよりは断然早いものと思われます。