手習ひデジタル信号処理(186) Scilab、{Scilabデモ}、N重振り子

Joseph Halfmoon

信号処理素人老人がScilabの「信号処理のデモ」を物色していた筈が、いつの間にか信号処理カテゴリを脱出。今回「鑑賞」させていただくのは「シミュレーション」カテゴリの中の「n-振子」というデモです。実体は「10重振り子」のシミュレーションです。アニメーションでカオスが湧きたつ様を鑑賞できます。

※「手習ひデジタル信号処理」投稿順 Indexはこちら

※Windows11上の    Scilab2024.0.0を使用させていただいております。(Scilabについては御本家 Scilab 様へ)

※素人老人の分からぬことは、Googleの生成AI、Gemini 2.5 flash様 に解説いただいております。いいのか、そういうことで。

今回のデモ

今回鑑賞させていただくデモは、以下のデモ選択ウインドウから選択できるものです。simulationMenu

 

振り子の先に振り子をつけて、という塩梅に振り子を数珠繋ぎにした長い振り子、デモでは10段、をシミュレーションしてその様子をアニメーションで拝見しようではないか、というものです。単振り子を横に並べたときの様子を観察する「連成振り子」とは違うので念のため。

ソースを変更したらN=10をいろいろ変更できたりは「できる」のですが、チョイと障壁が高くてお惚け老人は断念しました。ソースの構造はこんな感じです。

ソースの在処:scilabのインストールフォルダ配下の\differential_equations\demos\n_pendulum

Scilabソースのトップは、n_pendulum.dem.sce というScilabのファイルですが、それを見てもさらに下の、n_pendulum.sci を呼び出しているだけです。そして、n_pendulum.sciの中をのぞくと、複数のfortranのソースから作られるライブラリを呼びだしているみたいでした。ままよと、fortranのソースを開いてみたらば、人手で書かれたような感じがしません。なんと自動生成のfortranソースでした。大本は、Mapleのソース

Npend.map

でした。その辺の事情が一目で分かる情報が上記のフォルダにhtmlでおいてありました。以下です。credit

お惚け老人の勝手な理解では、Mapleは超強力な数式処理システムらしいです。ただし無料ではありません(そこでお惚け老人はフリーのMaxima様におすがりしております。)Mapleのサイトへのリンクが以下に。

https://www.maplesoft.com/products/maple/

そして「10重」の10を変更しようとすると、上記Mapleのソースの以下の部分を変更してfortranソースから再生成しないとなりませぬ。N_10_in_mapleSource

お惚け老人はここにて改造は断念。ただただデモを鑑賞するだけといたしました。

N重振り子

「アリガチ」な2重振り子でも自分じゃ解ける気がしません。まあ、ネットをあされば、アチコチに2重振り子とかN重振り子の解説記事が見つかると思うのでまあいいか。いちおう、Googleの生成AI、Gemini 2.5 Flash様に「軽く」解説をいただきました。GeminiNpend1

そしてカオスについても言及されとります。GeminiNpend2

そしてその解き方をお教えくだすってます。GeminiNpend3

ううむ、約半世紀前に、解析力学でラグランジュの運動方程式とともに落ちこぼれた(落ちこぼれてバカリだな自分)年寄には苦い記憶が蘇りますです。

まあ、計算してくれるのはScilabの下請けで動いているMaple起源のfortranコードです。その動き始めのところが以下に。npend1

最初はフツーの単振り子のように1列にならんで振れはじめましたが、上のところで既に末端の振り子が折れ曲がったような挙動を見せとります。

その後が以下に。npend2EC

くねくね?とカオスしてますなあ。見ていて飽きんよ。

手習ひデジタル信号処理(185) Scilab、{Scilabデモ}、ARMAその3 へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です