微分方程式1

微分方程式

はじめに

2025.07.07のblog「カオス」では、YouTubeを参考にしてTouchDesignerでカオスのアトラクターを描きました。この時、微分方程式はTouchDesignerの中でGLSLを使って書きました。POPが登場することで、微分方程式をmath mix POPで書けるようになりました。ビジュアルプログラムのまま使えるということです。これがメリットと思う人とGLSLを使う方と意見は分かれると思いますが、コードを書かなくなってしまった私にはメリットです。今回はPOPを使って微分方程式を解いています。「カオス」の時に述べなかった、パラメトリック方程式や相空間といった微分方程式の基礎的な内容にも触れています。

パラメトリック方程式と相空間、アトラクター

次回解きますが、次の線形2階微分方程式があったとします。

TouchDesignerではこれをそのまま解けません。dx/dt = vとして、

のように2つに分けます。この表示の仕方がパラメトリック方程式です。2次の微分方程式はバネの運動のようなシステムです。一般にシステムの状態を一意に決めるために必要な変数をすべて並べた空間を相空間と呼びます。難しそうですが、2次の場合は位置と速度が決まれば全ての運動が決まります。2次の微分方程式は変数とその微分です。3次の微分方程式では変数とその微分、さらにその微分で相空間ができます。上の式を力学に当てはめると、最初は速度で2番目は加速度を表しています。物理的には、速度に質量を掛けて運動量ということになります。ですので、xとvで作る空間が相空間です。2次の線形微分方程式の相空間は、どこかに収束する場合と、どんどん広がっていく場合と、円や楕円のような繰り返しになる3つの場合があります。収束する現象がアトラクターが在る場合です。広がっていくのが発散、繰り返しになるのが発振です。この3つのいずれかの状態になります。次に同様に変数がxで3次の微分方程式があったとします。この時の相空間はx, dx/dt=v(速度), (d/dt)^2 x = a(加速度)で作ります。座標軸で図示するなら、xはそのまま、vをyに、aをzにして描くことになります。このようにx, y, zとすると、3次の微分方程式はdx/dt, dy/dt, dz/dtの3つのパラメトリック方程式で書くことができます。以下でストレンジアトラクターを描こうとしますが、これは力学系のこうした話ではありません。元々独立変数が一つの3次の微分方程式ではありません。元々3つの状態変数があります。これをx, y, zとしているのです。それぞれが非線形の1次の微分方程式になる系を扱います。ですので、状態を一意に決める相空間はx, y, zとなります。このx, y, zは位置と速度、加速度ではありません。それぞれは例えば、温度差、対流の強さ、電圧、濃度、人工・・・なんであってもかまいません。元々3つの状態変数ですから、一つの変数の3次の微分方程式をパラメトリック方程式で記述した系ではありません。元々がパラメトリック方程式です。工学の方は私と同様、力学を微分方程式と密接に結びつけておられると思います。このため力学系になじんだ人は相空間が(位置、速度、加速度)になるのに、(x, y, z)になることに違和感を感じられるでしょう。それは今述べたように、x, y, zは元々3つの状態変数を表していて、それらが非線形の1次のシステムを持った場合を扱うからです。イメージとしても(x, y, z)を(位置、速度、加速度)に対応させるのは適切ではありません。それでは次の非線形微分方程式を考えてみましょう。

dx/dt. dy/dt. dz/dtの3つの非線形微分方程式で書かれています。線形か非線形はこの式から直ぐにわかります、上の式ではyz, xz, xyのように掛け算が入ります。これが非線形です。xの2乗等のべき乗も掛け算なので非線形です。x, y, zと係数でできていたら線形です。上の式の書き方がパラメトリック方程式です。パラメトリック方程式の3つの状態が相空間はx,y,z軸となっています。この微分方程式の相空間は次のようになりました。

2階の線形微分方程式の場合と違って、非線形の微分方程式は、収束するかと思うと、広がっていく、広がっていくかと思うと収束へ向かう、といったことが起こる場合があります。上の図はこの例です。これは線形の微分方程式を扱う古典制御理論には無い現象です。ですのでこれを奇妙、すなわちストレンジアトラクターと呼んでいます。これは非線形の微分方程式なら必ず生じる現象ではありません。非線形でも収束したり発散したりする場合もあります。ただ「カオス」になる場合はストレンジアトラクターが現れます。ストレンジアトラクターの場合、どこにアトラクターが在るのかはあまり重要ではありません。上の図では一見原点付近を頻繁に通過しているようなので、ここにアトラクターがあると思われたかもしれません。しかし次のような場合も考えれます。アトラクターは上と下にあり、そこに近付きながら離れていきます。その軌道が原点付近を通る場合、原点付近にアトラクターがなくても蜜になります。このようにストレンジアトラクターでは全体の形に意味があります。
上で述べたように、パラメトリック方程式の書き方と相空間は対応しており、相空間の振舞によってどんなことが起こるシステムなのかが掴めます。この微分方程式の軌道が作る相空間のことを、「相空間の幾何学」といったりもします。つまり実空間に三角形や四角形等の性質を扱うのが幾何学ですが、相空間にできた図形を扱うのが相空間の幾何学です。
3次元の場合、実空間もx,y,zで相空間もx,y, zと書きますから、同じ座標のように思いますが、これまで述べてきたようにそうではありません。相空間は状態を表現する抽象的な空間です。
相空間は実際システムの異常を検出するのに活用する場合があります。相空間を常時モニターし、通常の状態からずれるとシステムに異常が起こったと判断します。

POPを使った微分方程式の解法

それでは、次の微分方程式をPOPを使って解いてみましょう。

これはトーマスのアトラクターと呼ばれています。これが何を意味しているのかは問題としません。今回は微分方程式の解法の説明です。まずストレンジアトラクターを見ていだだきましょう。

3D空間で角度を変えた場合の映像が次です。

形状が複雑なので、見る角度によって印象は大きく違います。ストレンジアトラクターからは、(a,a,a)と(-a,-a,-a)付くに近に引き寄せるアトラクター的な状態があり、吸い込んでは吐き出すように見えます。そして特徴的なのは、領域が2つに分離しており、互いに行き来は無い構造です。これはb=0.208の場合です。bの値がこれより僅かに低いと2つの領域は結合し、行き来があるように見えます。二つの領域が空間的に分離している状態から結合するのは神秘的です。近い内に粒子の移動経路を追っかけてみたいと思っています。またこの微分方程式はbの値を変えると様々な形状になります。このプログラムの全体は次です。

後半はgeoとrenderのいつもの組み合わせです。微分方程式を解いているのは前半です。point generator POPでポイントを発生させて、それをフィードバック系で動きを更新しています。計算式を入れるのがmath mix POPです。それではパラメータを見ていただきましょう。定数の設定はuniformのタブで行います。

次がcombineタプに微分方程式をかいていきます。全てアトリビュートですが、アトリビュートを渡して次々に変えていける機能が使えることによって、楽に微分方程式が解けます。設定は次です。


沢山かかないといけません。この図と、次の図を見比べていただくと、対応が取れ、どのように書いているかわかると思います。

math mixには角度をdegreeにする計算も入れています。

式を追っていって引っかかる点は、2.と4.の違いです。式だけをみると、dxdtはdxになるはずですが、x=dxdtにしています。これは、6.を見ていただくと、Poldに相当する計算はオペレータのフィードパックによって戻されるものです。実際に計算しているのはdPに相当しています。しかしx,y,z平面に表すには位置にしないといけないので、P(0), P(1), P(2)にしないといけません。これはx, y, zなわけです。このため、4.でx, y, zとしています。math mix POPの式だけで完結しているのではなく、オペレータのフィードバックと合わせて計算しているために、このようにしなければなりません。これを理解すると式を細かくして書いているにすぎません。GLSLでは直接微分方程式を書くので、math mix POPを使うメリットはないかもしれません。しかし全てオペレータで書こうとする人にはこれは大変便利です。

今回2階の線形微分方程式もパラメトリック方程式にしてPOPを使って解くつもりでしたが、長くなったので次回に致します。

まとめ

TouchDesignerのPOPを使うことで、GLSLを使わずに微分方程式を解くことができることを紹介しました。パラメトリック形式の非線形微分方程式を相空間で表すことを行いました。相空間にすることで微分方程式の性質が分かります。

コメント