■
線形リー群についての備忘録
(まともに参考にしないほうがいい)
例として2次元回転群SO(2)を考えよう
これの元を
とする
A(0)を単位元とする
A(t)のすべての元を考えて取り扱うのは難しいので単位元のまわりにげんていして考えよう
これは線形近似で
とかける
変形すると
ここで
とした
この微分方程式の解は
の形になる
JJサクライで時間発展とか平行移動とかでまずは微小な変化について考えていたけどそこの議論と実は同じ
そしてJJサクライで生成演算子と呼ばれているのは実はここで言うXのこと
ここで注意が必要なのがこれは単位元の周辺でしか成り立っていないということ
これをすべての元について適応させるには条件がある
コンパクトで連結なとき任意の元は
でひとつの指数関数で表すことができる
コンパクトではない時は任意の元は
のようになる ひとつの指数関数では表すことは出来ない
ノンコンパクト群とはパラメーターの変域が無限空間に渡るもの
コンパクト群はパラメーターの変域が有限である群
GL(2,R)群の元
について考えよう
logの中身が負なのでこれは複素数
ということは単位源からM(GR(2,R)郡の元)に直接行くのにGR(2,C)を経由してしまっている!
そこでGR(2,C)を経由せずにGR(2,R)だけで単位源からMに到達するために、少し迂回をするルートを取る。
と
を経由する必要がある
なので
の形で表される
■
この前javacが必要になることがあって焦ってjdkの新しいのを入れてしまったからか、javaのバージョンアップをしたからか
原因はわからないけどUnityでAndroidビルドが出来なくなってたのでその解決をした
何を血迷ったのかアンドロイドスタジオの更新もしてしまって簡単だったはずの問題がややこしくなってしまった(´・ω・`)
Unity2017.3のデフォルトでAndroidやるとき
— 絵麻さんを養って幸せな家庭を築く (@izm) 2018年2月13日
AndroidStudioをインストールするとき、Android SDK Toolsをインストールせずに
tools_r25.2.3-windows
を別でダウンロードして Android\Sdk\tools
に配置する。
jdkも最新の9.04を使うとgradleでコケたりするので
jdk-8u161-windows-x64.exe
を使う。
基本的にこれをするだけ
tools_r25.2.3-windowsは本家サイトにはおいてなくて怪しいサイトにしか置いてなかった(怖い)(本家サイトでどこに置かれてるか知ってる人いれば教えて)
androidsdkoffline.blogspot.jp
これでapk作成はできるようになったんだけどkey着きでapk作成が出来なかった
halcyonsystemblog.blog.fc2.com
このサイトを見てコマンドを打って手動でkeyつきapk作成をした
zipalign -v -p 4 pao.apk piyo.apk
apksigner sign --ks hoge.keystore piyo.apk
こんな方法を使わずに普通にビルドできる方法を知ってる人がいれば教えてください
Juliaについての備忘録
Juliaについての備忘録(参考にしないほうがいいです)
^インストール
#Julia言語 【結論】自分のパソコンでJulia言語をJupyter上で手っ取り早く使いたい人は JuliaPro personal 版(無料)をインストールしてください。【結論終】https://t.co/vec8BJkbPk
— 黒木玄 Gen Kuroki (@genkuroki) 2018年1月20日
Julia Box を使えばブラウザだけで利用できます。https://t.co/7MSmde47fQ
ーーーーーーwindows
上のツイートに書かれてあるようにjuliapProを使ってインストールした
メールアドレスとパスワードを求められるので入力するとこんなメールが届く。
ここでJuliaPro-0.6.2.1 (for Windows)をクリックするとwindows版のインストーラー(700MBぐらい?)を入手できる
後はそれに従ってインストールする(2GBぐらい)
JuliaはPythonと連携を取ることができるが
Julia Proフォルダの中にもPythonが入っていて最初はそれと連携をとろうとしているので
以前から入っていたpythonと連携を取らせるためには
Jupyter Notebook Viewer
を参考に
ENV["PYTHON"]="C:\\hoge\\python.exe"
Pkg.add("PyPlot")
でこれまで用いていたpythonのpathを指定する。
ーーーーーーubuntu
ubuntuもJuliaProを使ってインストールした
JuliaPro-0.6.2.1 (for Linux)をクリックすると冷凍されたファイルが手に入る。
https://juliacomputing.com/docs/JuliaProQuickStartGuide-Linux.pdf
スタートガイドには
install_juliapro.shが必要だと書かれているがこれは
さっきのメールのJuliaPro Installer (for Linux)をクリックするとinstall_juliapro.txtが手に入るのでそれを.shに拡張子を変える
インストールに必要なものもさっきのスタートガイドP.3に指定されているのでそれをインストールする
sudo apt-get update
sudo apt-get -y install gcc
sudo apt-get -y install python2.7-dev
sudo apt-get -y install libzmq5
sudo apt-get -y install hdf5-tools
sudo apt-get -y install default-jdk
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64
これで install_juliapro.sh <冷凍されたファイルの場所> <解凍する場所> を実行
最初にインストールに必要なものがそろってるかのチェックが行われる。
私の環境ではインストールに必要なものチェックがうまくいってなかった
(
apt list $req_app | grep installed
みたいな操作が行われていたがこれがちゃんと動いてなかった
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
ので
)
インストールに必要なものは揃っているはずだしこのチェック部分をコメントアウトして無理矢理動かした(おいおい)
私の知り合いは install_juliapro.shを使わずその場に解凍して使おうとしたらしいけれどPythonとの連携がうまくいかなかったらしい
jupyterでjuliaを使おうとするのに手間取ってしまった
#Julia言語
— 黒木玄 Gen Kuroki (@genkuroki) 2018年2月8日
ポイントは2つ
(1) Pkg.add("IJulia") の前に JUPYTER 環境変数をjupyter.exeへのフルパスに設定しておくこと。Julia内で
ENV["JUPYTER"]="C:\\Anaconda3\\Scripts\\jupyter.exe"
のように設定することも可能。
(2) Pkg.add("PyPlot") の前に PYTHON 環境変数で~以下略
ここに書いてある方法で解決した
jupyter.exeへのpathを調べるには
ターミナルでwhich jupyterを使えばよい
^書き方
bicycle1885.hatenablog.com
↑のサイトが結構わかりやすい
C++でいうクラスのようなものがないのがちょっと悲しい(あるなら教えて)
typeとimmutableというのがあるがこれはあくまでもデータ型であってメンバ関数を取ることはできない。
それらを受け取って処理する関数を外に作成しろということらしい。
indexが1から始まる(Fortranに合わせているらしい)
^感想
パッケージ追加がパッケージ追加後プリコンパイルしているようでクッソ遅い
計算は早いらしいがjulia自身の起動が遅いので小回りが利かない。
私の書いたプログラムはpythonに比べて早くならなかったので否定的な感想ばかりになってしまったけど
スピン系を扱ってる知り合いはテンソル積が簡単にかけるうえに速度が速いので結構気に入っているらしいです
hogehogehogehoge
昔pythonで書いたコードをJuliaで書き直してッ見た
早くなるのかな~~と思ったら早くなってなかったのでう~~ん
まあ完全に同じ方法をとっているわけではないので単純な比較はできないんだけどもぉpythonより遅いというのはどうもなぁ(´・ω・`)
まあpythonで書いたコードは結構numpyで高速化してたからなぁ
juliaはindexが1から始まる(Fortranと合わせているらしい)
あとクラスはなくて構造体みたいな使い方をするType,immutableというのが存在する
あとパッケージ追加システムがパッケージインストールした後プリコンパイルしてるみたいでクッソ遅い
あと計算は早いらしいけど起動がクッソ遅いので小回りが利かない感じであんまり使いやすくない
エラーメッセージもようわからんなぁ(´・ω・`)
忘れないうちにjulia備忘録的なものを書いておこう(´・ω・`)
hogehogepiyopiyo
Juliaについて書くかと思ったけど眠いので寝ますね
windowsでは
Jupyter Notebook Viewer
これを参考に開発環境を整えることができました
ubuntuではまだです
これまで数値計算はいったん簡単に書けるpythonで書いてアルゴリズムを確認してから
速度のことを考えてC++に書き写すということをしてきましたが
Juliaでそんなことしなくて済むようになってくれればうれしいですね
(おまけ)
github.com
カオスのライブラリもあって簡単に標準写像も書けました
パッケージのインストールPkg.add("hoge")が遅くてめんどくさいっすね
文法はこれからちょっとずつ勉強していきます
調和振動子のエネルギー固有状態の式についてオーバーフローを起こさない計算法
この前の続きです
この前はをオーバーフローを起こさずに計算する方法についてと
それが量子的な調和振動子のエネルギー固有状態に出てくるという話をしました。
↓エネルギー固有状態の式
ここで
としてみました。
Cとかx0が何かはここに書いてる
調和振動子 - Wikipedia
Hnはエルミート多項式なのですが、これがやべーやつ
なのでが計算できるようになっても結局オーバーフローします
さっきのΦについての式をHnについて書き直してみましょう
これをさっきの
に代入してまとめると
なのでn=0 とn=1について計算すれば計算出来ちゃいます
def zenka_oscn(n, x): if (n == 1 or n == 0): return occeogenfanclist[n](x) else: return ((2 / n) ** 0.5) * x/x0 * zenka_oscn(n - 1, x) - (((n - 1) / n) ** 0.5) * zenka_oscn(n - 2, x)
これを単純に計算しようとすると重いのでフィボナッチ数列の場合のようにメモ化(キャッシュ化?)してみましょう
pythonのメモ化はクッソ簡単です
頭に@lru_cache(maxsize=hoge)をつけるだけです。やっぱりpython便利
from functools import lru_cache @lru_cache(maxsize=None) def zenka_oscn(n, x): if (n == 1 or n == 0): return occeogenfanclist[n](x) else: return ((2 / n) ** 0.5) * x/x0 * zenka_oscn(n - 1, x) - (((n - 1) / n) ** 0.5) * zenka_oscn(n - 2, x)
これめっちゃ賢いなぁ~~と感心したのですがどうでしょう?
numpy.liag.eighの使い方について
numpy.liag.eighはnumpyのエルミート行列の固有値固有ベクトルを求める場合に使います
こんな感じ
eigval, eigvec = LA.eigh(a)
僕はこれの使い方をちゃんとわかっていませんでした
eigvecは2次元配列です何個目の固有ベクトルかとその固有ベクトルの何番目の成分かというので2次元になっています
つまり
eigvec[a][b]
とあらわされます
C++とかにおける二次元配列の扱いに慣れているとevec[a][b]は[a個目の固有ベクトル][この固有ベクトルのb番目の成分]と並んでいると勘違いしてしまいますね(僕だけかもしれないが)
しかしeighで帰ってくる固有ベクトルはevec[この固有ベクトルのa番目の成分][b個目の固有ベクトル]という順番で並んでいます。
マニュアルを読んでみてください。そう書かれてますね
numpy.linalg.eigh — NumPy v1.14 Manual
(この並びにしてる理由は行列の掛け算則に乗るようにしてるのだと思いますが確申が持てません 間違ってたら指摘して)
僕はこれを数ヶ月勘違いしたまま「データが取れないデータが取れない」とうんうん悩んでました当たり前ですね
皆さんもこういうライブラリを使うときはちゃんとマニュアルを読んで使いましょうね