ナンクル力学系

学んだ事を書き連ねていこう。

Archive for May 2008

PDF管理ソフトを作ってみた

leave a comment »

インターネットで論文が大量に手に入るのは良いけど,そのせいで放っておくとデスクトップがPDFだらけになってしまう.一つディレクトリを作ってぶちこんでおけばあとはGoogle Desktopがクロールしてくれるから良いかなとも思ったけれど,

  1. 検索の精度が悪い
  2. テキストデータじゃなくて画像データのPDFもある
  3. Google DesktopはPDFの最初のうん百文字しかインデックスしてないらしい

という訳でなかなか使い勝手は良くなかった.

そこで,wxPythonを使って作ってみたのがコレ:

起動したらPDFファイルをドロップしろと言う.

PDFファイルをドロップすると,Text:っていう部分にその中身(の最初の200行くらい)が表示される.

そのテキストから,まずタイトルを選択してマウスを離すと...

Title欄に選択した部分が入る.その次にAuthorの部分が光るので,

こっちも選択してマウスを放すと入力される.この状態で「Add PDF」を押す.

指定したフォルダ内に「“Author”; “Title”」の形式でフォルダが作られて,

その中に「“Title”.pdf」というファイルと「paper.txt」というファイルが入っている.

この「paper.txt」はPDFファイルの中身のテキストを全部を書き込んだもの.

ここまでやったら,後はGoogle Desktopで検索しようという魂胆.少なくとも論文名か著者名だったら絶対引っ掛かるはず.テキストファイルへの変換が上手く行ってれば,中身もちゃんと検索出来ると思う.あとPDF内のテキストが取れないやつでも,ホームページにはタイトル,著者名,要約くらいはあるのでそれをText欄にコピペすればあまり手間をかけずに整理が出来る.

ちなみに,PDF > TXTの変換はxdoc2txtを使用している.

こんなニッチなソフトを必要とする人が居るか謎だけど,一応ソースは公開:

exe化したら普通にフリーソフトとして公開出来るはずだけど,exe化はまだ手を出してないので今日はやめておく.眠いし.気が向いたらやろうかな.

Advertisements

Written by tkf

May 18, 2008 at 11:25 am

Posted in PC, programming

scipy.arrayで部分行列

leave a comment »

pythonの科学計算用ライブラリscipyのarrayの使い方が忘れやすいのでメモ.

scipy.arrayを使って行列から部分行列にアクセスする時には,

  • array[ 行開始:行終了, 列開始:列終了 ]
    または
  • array[ 行開始:行終了 ][ 列開始:列終了 ]
    ※ だたし,例えばarray[:][0:1]としても列ベクトルは取れない(array[:,0:1]なら大丈夫)ので,前者にそろえるのが良いと思います.

とします.省略可能なのは,

  • 開始の0
  • 終了が行か列の最後

ipythonでの実行例:

In [1]: import scipy

In [2]: a=scipy.array([[11,12,13],[21,22,23],[31,32,33]])

In [3]: a
Out[3]:
array([[11, 12, 13],
[21, 22, 23],
[31, 32, 33]])

In [4]: a[1:3,0:2]
Out[4]:
array([[21, 22],
[31, 32]])

In [5]: a[1:3,:2]
Out[5]:
array([[21, 22],
[31, 32]])

In [6]: a[1:,:2]
Out[6]:
array([[21, 22],
[31, 32]])

Written by tkf

May 15, 2008 at 12:00 pm

Posted in programming

Tagged with ,

もう少しで第一段階クリアかもしれない

leave a comment »

先週は色々と進展があった.ちょくちょく図を保存してたのでそれを貼ってみる.

まず,small-worldとかそいう大掛かりなことをやる前に定性的なニューラルネットの働きを理解しようと思ったので,2個のニューロンの性質を調べることにした.とりあえずNullclineでも書いてみようと思って,x軸だけ書いてみたのがこれ:

と,これ:

(とりあえず一個目のニューロンの荷重変数だけを動かしている.)

...なんかおかしい気がする.突起が立っているのは多分無限大に発散してるんだけど,こんなにいっぱい突起が出来るもんなのか?と思っていたら,式に現れているLogの中身の正負チェックをしていないだけだという,高校生並みのミスをしていることが発覚.情けなくなった.

そういう不具合は少しずつ消えていったものの,動かすパラメタが多すぎて手に負えなかったので過去の論文をあたると色々あった.もっと早く論文を探してれば良かったと思った.過去の研究者の努力を無駄にしてはいけないよな.という訳で,リミットサイクルとかが出せて大喜びした図:

3のニューロンでもリミットサイクル:

そしてカオス!:

ここまでは上の論文の内容をトレースしただけ.他に面白いアトラクタを出せないかと思って,ニューロンを9つに増やして,レギュラーネットワークっぽく組んで出したのがこれ:

ニューロンの時定数変えたりして頑張ったけど,けっきょく相互引き込みが起こって定数倍の周期軌道に落ち込んでいる感じ.

ここまでが先週.

今日もまた,ニューラルネットで面白いアトラクタの出し方の論文とかあさってみた.それで出来たのがこの図:

さっきの図と構造は同じだけど,ニューロンの時定数はそろえてある.その後,ランダムにニューロンをつなぎ変えてみた.ちょっとカオスっぽく見えない?かなあ.笑

明日もうちょっと頑張ろう.

そろそろ,研究テーマとの接点が見えてきたのであんまりブログに書かないほうが良い気がしてきたなあ.一応今はまだ「お勉強」色が強いので問題は無いはず.綺麗で面白い図とか,失敗して面白い図とか出来たら人に見せたいんだよな.あと,図を描くためのプログラム(↑はPythonで作った)も大丈夫そうな範囲で公開したい.書きなぐったスクリプトをちょっと整理してから,だなこれも.

Written by tkf

May 7, 2008 at 9:02 pm

Posted in 研究日誌

Tagged with

カオスとか非線形力学系を一人で学ぶための本まとめ

with 3 comments

カオスや非線形力学について,数学科や物理科以外の学生でも(もちろん数学科や物理科の学生さんも)一人で学べるような本を紹介します.また,最後に「こう読めば良いんじゃないか」という順番も示します.

ちなみに私は工学部の人なので,そんなに数学や物理に特化した授業を受けたわけではないです.参考までに,私がその本を読んだ時期も書いておきます.

[1] Kathleen T. Alligood, Tim Sauer, James A. Yorke,津田 一郎 訳 :カオス 第1巻 – 力学系入門カオス 第2巻 – 力学系入門カオス 第3巻 – 力学系入門
原書 :Chaos: An Introduction to Dynamical Systems

  • 必要な知識 : 微分積分,線形代数(と,その微分方程式との関係),微分方程式
  • 読んだ時期 : 4年の春(というか昨日読み終わった)

カオスの本は数学科や物理科でしか習わないような位相やルベーグ積分の知識などを要求されるような高度な本か,数式がほとんどなくて,説明も適当で,ストレンジアトラクタやフラクタルの図を見せて「ほら綺麗でしょ」という本が多いのではと思います.そんな本にイライラしている人にぴったりな本です.

数学科の人でも満足できる定理の証明があり,その他の学科の人でもついて行けるようにたくさんの例を示してる本はこの本以外に見たことがありません.また,より高度に数学的な内容を考えることが出来る「挑戦問題」と,実際の物理現象への応用を説明してくれる「研究室訪問」が各章末にあり,”何度でも美味しい”本だと思います.訳本は3分冊で分量も多く,最初は定理の証明はしない,などの読み方に工夫が必要になるかもしれません.

訳本は2007年出版なので比較的新しい本なのかと思ってましたが,原書は1997年出版なので10年以上も前の本ということになります.力学系が学部の正式なカリキュラムとして取り入れられている大学は少ないと思いますが,それでも日本のカオスなど力学系についての教育が10年も遅れてるのと思うと恐ろしくなります.一つの本でそこまで言うのは言いすぎですが,それくらい良い本だと思います.

[2] Steven H. Strogatz :Nonlinear Dynamics and Chaos: With Applications to Physics, Biology, Chemistry, and Engineering

  • 必要な知識 :微分方程式が解ければOK,あとちょっと線形代数
  • 読んだ時期 : 1年後半から2年冬くらい(忙しくて読んだり読まなかったりしてたので時間がかかった)

普通の微分方程式の授業しか受けたことが無ければ,微分方程式というのは解くものだ,と思っているでしょう.しかし,この本(の前半)は解かなくても分かる微分方程式の性質を調べます.難しい数式は一切出てきませんが,数式はいっぱい出てきます.その簡単な数式で現象がそこまで理解出来るのか,非線形力学系やカオスについてそこまで議論できるのか,という驚きにあふれています.実際,先の「カオス 力学系入門」[1]で取り上げられている話題のほとんどはこの本で網羅されていますし,この本にはあるのに[1]には無い話題もあります.(「飛び道具」的な感じはしますが.それも楽しいです.)ただ,定理の証明などは省かれている部分も多く,研究などで使う応用のためには追加調査が要るでしょう.

まずはカオスと非線形力学について触れよう,くいらいの気持ちで読めばそのほとんどが分かる,そいう本です.

[3] 藪野浩司 :工学のための非線形解析入門, 臨時別冊・数理科学2004年6月

  • 必要な知識 : 微分方程式が解ける
  • 読んだ時期 : 2年の秋

先の二つの本はカオスや非線形力学を網羅的に扱おうとした本ですが,この本は逆に工学に現れる非線形現象をどう解析するか?に的を絞っています.しかし,扱っているモデルはバネや振り子など,微分方程式のモデルではなじみのあるものだと思うので工学系でなくても読みやすい本だと思います.

この本が素晴らしいのは,無次元化という話題を詳細に扱っていることです.無次元化は現象を理解するのに大切な方法ですが,これを扱っている本はあまりありません.私も,先のStrogatzの本で初めて知りましたが,この本はその知識をより体系的にまとめてくれるのに役立ちました.

また,非線形現象の解析のために中心多様体理論,ベクトル場の標準形,摂動法,多重尺度法などかなり高度な内容を扱っていますが,定理の証明などは無く,それはどの条件の時に使えるか?などに言及することで,とにかく沢山の例を挙げています.定理は良いから,沢山の例を見たい,解きたい,という人にぴったりな本です.すぐにでも応用にも使えそうな,実戦向けの本です.


[4] 笠原 晧司 :新微分方程式対話

  • 必要な知識 : 微分方程式,線形代数
  • 読んだ時期 : 1年夏(だったかな...もはや忘れた)

この本はタイトルの通り,微分方程式の本です.カオスや非線形力学系という言葉は出てきません.しかし,普通の微分方程式の授業と非線形力学系の橋渡しをするのに丁度良い本です.この本で扱われている内容はカオスや力学系の本にも書かれていますが,端折られている場合が多いように感じます.まじめに非線形力学系の本を読もうと思ったら,その前にこの本をさらっと読むと良いと思います.学生と教授との対話形式(なぜか大阪弁?)なので,かなり軽く読めると思いますが,内容は結構濃いです.

この本ではかなり線形代数の知識が使われています.使われている知識を網羅した読みやすい本に,道具としての線型代数があります.私が「微分方程式対話」とそれに必要な「道具としての線型代数」の主な話題を短くまとめたテキスト「微分方程式の安定性」を公開してるので,それが参考になるかもしれません.(今パッとみたら結構文章が酷いですが.笑)

[5] 千葉 逸人 :解くための微分方程式と力学系,月刊 理系への数学で連載中(2008年5月現在)

  • 必要な知識 : 線形代数
  • 読んだ時期 : 最近,いくつかの月の記事を読みました

単行本化したら絶対買おうと思っている本です.簡単な微分方程式からスタートしますが,後半からは著者の千葉さんが今研究されている話題のような,新しいトピックにも触れています.非線形微分方程式の解の様子を理解するための高度な方法を知りたいならこのテキストを読むべきでしょう.沢山の例があり,適用方法も分かります.定理の証明が無い部分もありますが,それは単行本化される時に補完されることを願います.

ただ,限られた紙面での連載のためか,時々扱っている数学公式が難しい(少なくとも私は知りませんでした)場合があるので,自力での追加調査が必要になると思います.

本の読み方・読む順序

最終的には[1]を読むことを目標にするのが良いと思います.しかし,数学が得意でなければ難しいと思うので,そういう人はまず[2]を読むのが良いかもしれません.しかし,[2]は訳本が無いので英語が苦手な人には厳しいかもしれません.そういう人は,[4]か[5]で微分方程式と力学系の関係をさらっと抑えてから[1]を読めば良いと思います.

また,[1]は長いので,微分方程式の内容が理解できてる人はまず第2巻をさらっと読むことをお勧めします.そうすれば,一見つまらない写像の話に1巻全体を割く理由が分かって読みやすくなる可能性があるからです.(これは私がそう読んで,良かったと思えたからです.最初に1巻が手に入らなかった,という理由があったのですが.)

[3]-[5]は副読本として,それぞれのトピックを補強するのに役立つでしょう.

まとめると,

  • [2]→(微分方程式について補強が必要なら[4] or [5])→[1]
  • [3]は無次元化についての補足か,[5]で出た非線形微分方程式の解析方法をさらに応用するために使う.

という流れから,自分の数学・英語の力に応じて選択という感じです.あとは実際に本を書店か図書館で見たときのフィーリングでしょう.それが一番大事ですが.

この記事はずっと探していた内容でもあり,ずっと書きたかった内容でもあります.

「カオス」や「非線形」という言葉は理工学系の大学生なら一度は聞いたことがある言葉ではないでしょうか.書店に行っても沢山の啓蒙書が並んでいます.私も大学一年の時にSYNC(ストロガッツ著)という本を読み,非線形力学の可能性に興奮した一人です.

しかし,私は工学部の学生だったので普通のカオスの本や力学系の本を読むのは大変でした.それでも必要な知識を手に入れるために色々な本を読んだり,探したりしていて見つけたのが上で紹介した本です.この記事が私と同じような興味を持ちながら,情報が少ないためにどうしたら良いか分からないという人の役にたったら良いなと思います.

Written by tkf

May 6, 2008 at 2:55 pm