クーの自由研究

マスターのかえるのクーは、弟子達の召喚術により新たな依り代を得てⅡ世として復活しました。

複素数の使える開発言語は何がよいの?

年の瀬で新年の準備をしております

こんにちわ、こんばんわ。かえるのクーの助手の「井戸中 聖」(いとなか せい)でございます。

はい。サボっていましたとも。夏に強化学習によるサッカーチーム対戦を企画したものの、『そもそも「多チームに勝てる」ノウハウはどのように学習されていくのか。』『(汎用的に)対戦に強いことの本質は何なのか』の思考実験をしはじめたところ、迷宮、袋小路にはまり、抜け出せなくなってしまいました。

進展がないので、興味は複素数関連に戻ってきている今日このごろです。

(なので、サッカートーナメント「ローカルため池杯2023」は順延となっております。申し訳ございません)

 

私の複素数の興味とは?

そもそも、すべての事象(この世)が結局、「波(振幅と位相がある!)」の重ね合わせ(の「とある」因果関係空間の一例)ならば、それを表すのは「実数」ではなく「複素数」(もしくはそれ以上の次元のベクトル)が適しているのでは?とずっと感じています。(幼少のころの電磁気や量子力学の授業では複素数ばかりでした。もうすっかり慣れて、複素数に親近感しかありません)

   

複素数を用いた機械学習は、いろいろ研究はされていますが、主流ではないようです。

最近、数理科学別冊本「複素ニューラルネットワーク(SGC-126)」(紙)を入手しました。おもしろいです。(この系列はちょっとしたときにパラパラめくっていろいろ考えることが多いので、私的には断然「紙」が重宝します)

 

複素数を実際に使う例は諸先輩が行われているので参考にします。

どの言語でやればよいの?

ChatGPT先生にいろいろ聞いたところ、私のニーズでは「PythonJuliaを使用し、得意分野(ライブラリや既存実装など)を生かしながら2言語を連携させればよい。場合によってはFortranも使用検討しよう!」とあいなりました。

ファイル:Python-logo-notext.svg - Wikibooks     

それ以外の言語でも複素数が普通に使えるものがありますが、いろいろ質問していくと「それはちょっと。。。」と思う壁があります。なので、私には上記3択っぽいです。

Fortranは幼少のころにすこしやっていたので基本は分かります。Pythonは母国語でOKです。Juliaをまったく知らないので勉強が必要です。

Python一択でよい気もするのですが、Juliaがいろいろよさげなので視野にいれます。

帰ろうぜ あの街角へ Hertbreak oh'my my my my .....

Javaが最近頑張っているけど、どうなの?

Javaは言語として素(プリミティブ)の「複素数」をサポートしておらず、複素数計算に適したライブラリが事実上存在しません!(apache Mathはいい線いっているが、複素数の配列(計算)が弱いです。Nd4j(numpyを目指している?バックエンドは高速版BLASやCudaが使用できる)は実数ベースはOKなのですが、複素数は「やる気あったけど、そこまで手がまわらない」状況のようで、使えません。)

昔のNd4jのバージョンのDOCを読む限り使える感があったのですが、その版のソースをみると

のようにUnsupportedOperationEception() と、全然実装してありません。(履歴をみる限り、動く実装ができた版は一度もなかった模様)現時点に至ってはドキュメントからも消えており、棚溢れ回答でも「本体はやるきなくしてる。たぶん今後も無理」とのことなので、見込みはなさそうです。Javaでnumpyの(ある程度)互換(もちろん複素数も!)ができるのであれば、最有力候補だったので残念です。

 

しばらく(来年は?)Juliaを勉強します

こんなときはUdemyがよいですね。日本語のモノは少ないので、頑張って英語で学習します。

蛇足「買ってよかった2023

RaspberryPi Picoの拡大接写をネットで写すのに、手持ちのWebカメラではマクロ(接写)焦点が全く合わず、昔のビデオカメラを使いHDMI→USB変換したところ良好でした。ビデオカメラはSony製で5cm程度まで高画質で寄れる(Picoが画面からはみでるので、そこまで寄る必要はないですが)のでとても重宝しました。Zoom操作も自在で、オートフォーカスなので便利です!

なので、「お安い(といっても2000円程度)中華製HDMI→USB変換器」は買って良かったです。