ブロックを積みながら(164) Scilab/Xcos、ちょっとお馬鹿なボートで川を渡る?

Joseph Halfmoon

今回は「ありがちな」曲線(解析的にも解ける)なので何かお名前があるのやも。お惚け老人はそれを知らず。川を渡るボートの描く軌跡を求める問題デス。川の流速はどこでも一定。ボートの速さも一定。ただしボートの舳先は常に到着点を狙ってます。「ちょっとお馬鹿な」ボートは川の流れが計算に入ってません。流されつつも必死に前に進むっと。

※「ブロックを積みながら」投稿順 index はこちら

※動作確認にはWindows 11の   パソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。

  Scilab 2024.0.0

今回の課題

今回の課題を図にすると以下のようなものです。EX000Problem

川は y軸の下から上へ向かって、場所によらず一定の流速 a [m/s]で流れてます。まあ、現実にはそんなことはあり得ないっすけど。そしてボートは出発地点(原点)を出発して川の流れとは直角に到着地点、川幅w[m]としているので座標(w, 0)へ速さb [m/s] で向かいます。ただ「ちょっとお馬鹿な」ので川の流れを勘定にいれることなく、闇雲に到着地点に向かって進みます。結果、ボートは下流(上の図では上だけれども)へ流されるので、何やら曲線を描いて到着地点へ向かっていく、と。

一応、微分方程式をたてておく

これまたお馬鹿な老人は、闇雲にブロックをつなぎ始めたのですが、念のため上記の微分方程式を清書しておきます。後付けだけれども。EX000_Formula

ミソは角度θが、ボートの座標x, yにより刻々と変化していくことであります。本来、上記は解析的にも解けるハズなのです。お惚け老人にはMaxima様という用心棒がいるので解けるかも、とは思ったのです。しかしMaxima様にお願いするのは別シリーズなので、こちらでは最初から Xcosで数値的に解いてしまいます。

Xcosフロー

作製したXcosのフローが以下に。EX000_flow

 

コメントが横に書いてある定数を与える箱が3つあります。Width Riverが川幅[m]です。10.1と「半端」な値が書き入れてあるのは、θ求めるために分母のw-xを計算するときに=0になってしまうと計算不能になるので、wにちょいとゲタ履かせてゼロ割り算を回避してます。そういえば最近ゼロ割り算の件がネットでちょっと話題になっていたな。。。お馬鹿な老人もついゼロ割り算やってXcos様に怒られたので「姑息な」手段をとりました。

Riverと書いてある箱が川の流速です。Boatと書いてある箱がボートの速度[m/s]です。大人の事情で進行方向が負になってしまってます(‐1のゲインブロックの位置を交換すればよかったのだが。)

一応ね、上に掲げた微分方程式通りのつもりのフローです。そして求めたx、yを時間グラフと、xyグラフ(軌跡描画用)で描いてます。

シミュレーション結果

まずはボートの速さを 1.3[m/s]、流速0.5[m/s]のとき。なお時間キザミは0.1s毎で、最大10秒に設定してます。XYgraph

10m先の向こう岸付近に到着してから、川を少し遡っている?それでも目的地には到着しているみたいなので目出度い。

一方ボートの速さを 1.0[m/s]にしたとき。川の流れがなければピッタリ10s(積分最大時間に設定してある)で向こう岸に到着できる速さですが、流速が0.5[m/s]あるからな。XYgraph1

10秒では向こう岸まで到達できず。大分下流に流されたあたりで制限時間にひっかかりました。

計算していること自体はちょっとお馬鹿なのに、Xcosのフローは意外と複雑。

ブロックを積みながら(163) Scilab/Xcos、月面での垂直飛び(再びの自由落下) へ戻る

ブロックを積みながら(165) Scilab/Xcos、摩擦有り、力学台車のバネ運動 へ進む