2021年10月7日木曜日

分配関数、密度汎関数、などの複素解析性

磁性体の分配関数はZ(\beta,B)と書ける。このZ(\beta,B)は磁場Bの解析関数である。

これから作った自由エネルギーはB=0で特異点を持ちうる。ルジャンドル変換で作った汎関数F(\beta,M)は磁気モーメントMの解析関数となるがconvexではない。convexなものを作るにはその凸包(convex hull)を取る必要がある。

密度汎関数法。まずLDAで求められる密度汎関数について考えてみる。これは密度の解析関数となっている。そのconvex hullをとったものが「Levyの拘束付き探索法」に対応している。

いずれにせよ、解析関数、解析的方法で漸近的に真の解にせまっていくしかないのだろう。

「自己相似型摂動理論」のひとつがくりこみ群

 摂動理論では、微少量で展開する。

 dA(= A(J) + dA(J)/dJ ×dJ

このようにdA/dJがJの関数として与えられていれば、Jで積分していくことができる。このような構造になっているには、自己相似的な摂動論(微小変化に対して、元の関数のパラメーターが少し変わるだけになる)ということになる。

自己相似の意味で「スケーリングがくりこみ群に対応する」というのは正しい。が、自己相似的な摂動論はもう少し一般的な意味を持ち得る。


自己相似型摂動理論と、スケーリング則の混同

self-consistentな解と固定点


2021年7月4日日曜日

単位を角括弧に入れるべきでない。あいまいな角括弧ルール。深刻なのは教育的問題

 物理量は 数字x単位 であるので、

L=1 m でないといけない。

ところが、歴史的な理由からか日本の教科書には角括弧でM=1[kg]などと書くことがある。理解しづらい。M=1000[g]とどう違うのか?という議論になってしまう。

角括弧の意味を正当化しようとして、ルールを決めようとするんだけど、どうにもローカルルールになってしまう。本質的な妥当性がないのでいたしかたない。あちこちで不具合が出る。ローカルルールの通用する個々の業界では困らないだろうけども。


深刻なのは教育的問題だろう

でたらめな角括弧ルールのせいで単位が理解できていない。組み立て単位がわからない。違う物理量を結びつけるのが物理定数ということがわからない。「ものを比べる」ということの意味がわからない。

例えば、物理的な次元を明瞭にしたいだけなら(多くの場合そういうことだと思える)、

長さL  (次元 m)

とでも書き、L  (次元 km)と書いても同じ意味である、とすべき。いくらかくどくてもきちんと書かないと混乱が起きる。わかってればどっちでもいい、ということではない。


2021年6月8日火曜日

matplotlibはdateオブジェクトを認識する

 MobilityReportHomework

https://colab.research.google.com/drive/1GzSjUvEivOgN0CGMFlGT7KKVRrMbNg1j?usp=sharing


#日付オブジェクトへの変換
from datetime import date
sss="2019-12-04"
print(type(sss),sss)
ddd=date.fromisoformat(sss)
print(type(ddd),ddd)


これのリストをX軸に使うことができる

2021年6月4日金曜日

emacs でコンパイル時のエラー行にジャンプ

 M-x compile

ctrl+x `

でエラー行にジャンプ


https://flex.phys.tohoku.ac.jp/texi/emacs-jp/emacs-jp_158.html

gfortan -gをつけましょう。コンパイラのトレースバック機能はだいぶと良くなってきた.

gfortran,以下のように -O2と-gが両立するようだ。コンパイラのトレースバック機能がだいぶと良くなってきた。

 mpif90  -O2  -g -fimplicit-none -ffixed-line-length-132 -DMPIK  -JOBJ.gfortran -IOBJ.gfortran -c ../wanniergw/htbplot.F -o OBJ.gfortran/htbplot.o 

2021年5月29日土曜日

assumed-size array foobar(3,*)を「大きさ引き継ぎ配列」とするのはひどい誤訳ではないのかな?

f90の形状引き継ぎfoobar(:,:)はとてもよいが、モジュールに入れたサブルーチンをuseしないと引き継ぎが保証されないようだ。呼び出し側と呼び出される側を同じファイルに入れてもコンパイラは形状一致をチェックするので、いささかの混乱がある。

どうしてもf77のライブラリを利用することになるがトップダウンでf90化していく必要はある。subroutineの引数でデータを渡すのは避けるべき。指示(入力のみ)を書くべき。module変数のprotectで出力する。use,olnyとprotectの併用でデータフローのしっかり読めるコードになる。f77コードをトップダウンで(上位レベルから)モジュール化していくのがよい。依存関係やI/Oが明瞭になる。

ある種の単純化された「数値計算向けオブジェクト指向」というものがある。

f77ルーチンにsize(foobar)でサイズを取りたいが、このときfoobar(:)でいかないといけない。ただし、(:)だとシェープチェックも入ってくるので次元合わせまで要求されてしまう。