nano_exit

基礎的なことこそ、簡単な例が必要だと思うのです。

プログラミング

pythonでペンローズタイリング

ペンローズタイリングとは、ペンローズが開発した非周期的な図形の敷き詰め方である。 以下のサイトで、ペンローズタイリングの方法と、そのpythonスクリプトが公開されている。 Penrose Tiling Explained図の描画には、pycairoが使われていて、事前にインス…

頂角が小さい二等辺三角形の底辺について

回転運動の説明を読んでいる時に、角度が小さい時の差ベクトルの近似について気になったので考えて見た。 等速円運動 [物理のかぎしっぽ]以下の図のような二等辺三角形における底辺(青)、円弧(赤)、そして垂線(緑)を考える。 図では頂角は30度でプロッ…

sympyで(平面の)Greenの定理を確認

sympyの練習を兼ねて、平面に対するGreenの定理で、問題を解いてみる。 平面のグリーンの定理 [物理のかぎしっぽ]以下の積分を求めてみる。 原点で最大値を取り、等方向的で、境界でゼロを持つような、何かしらの密度を積分する、と思えば解りやすいだろうか…

多重項を数える(2)

以前に、軌道内の多重項を求めるスクリプトを書いた。 koideforest.hatenadiary.comここではそれらを用いた上で、さらに軌道間で多重項を合成する。 軌道の記号と値を行き来する関数 def spec2l( spec ): if spec in { "s", "S" }: l = 0 elif spec in { "p"…

多重項を数える(1)

前回、binary表現を使って、電子配置を作ることを試みた。 koideforest.hatenadiary.com次のステップとして多重項を数え上げるため、電子配置を作るのと同時に角運動量とスピンも一緒にリストで保存するように改良した。 def add_electron( configurations0,…

バイナリーと量子力学

例えば2p軌道とかのp軌道の場合、一電子状態は以下のどれかに対応する。(1,u), (1, d), (0, u), (0, d), ( -1, u), ( -1, d)これを、binary形式、「電子がいる軌道=1」、「電子がいない軌道=0」とすれば、例えば、(1,u)と(1, d)が占有されているとき、110000…

XMCDのSum ruleをpythonで処理

とあるスクールで、講師が事前に用意したOriginのマクロを使ってXMCDのSum ruleから磁気モーメントを求めるという講習があったが、Originを使いたいと全く思わなかったため、一人でpythonスクリプトを黙々と作っていた。ローレンツ関数やら誤差関数やらで適…

MacOSでpythonをインストールし直す

python2を主に使っていたが、仕事上ちゃんとpython3の環境を整えなければならなくなり、その際の記録。いろいろお試し感覚でごちゃごちゃ入れていて、 System由来のpython2 手動経由のpython2 MacPorts経由のpython2 pyenv経由のmicroconda (python3) が混在…

横軸と縦軸のデータをすぐに保存&読込 (python)

pythonで作業していて、パッとデータを保存する、もしくは読み込む方法。 結局は、横軸と縦軸の各一次元データ(横ベクトル)を結合して縦長のデータにする部分が面倒くさい。 しかし、それは numpy.c_ で解決することがわかった。 Pythonで配列や行列の結合…

ガウス関数のフーリエ変換 (scipy.fftpack)

ガウス関数はフーリエ変換しても、数式上は(幅は変わるが)またガウス関数になる。 高速フーリエ変換(FFT)とフーリエ変換との関係を以前まとめたため、FFTを用いてガウス関数をフーリエ変換する。 koideforest.hatenadiary.comここではscipy.fftpackを用…

散乱振幅からサイトT行列を復元する。

実験結果か何かで、散乱振幅の角度分布が得られているとする。 ここからサイト行列を復元する方法を考える。 サイト行列が求まれば、そこからArgand diagramを作って、(準)共鳴準位があるとかないとか、追加で情報が得られる(もし角度分布のエネルギー依…

部分散乱振幅(サイトT行列)のアーガンド図

仕事で図を作る必要があったので、練習がてらまとめた。位相シフトなどの概念にについては、wikipedia等を参照して頂きたい。 散乱振幅 - Wikipedia 簡単に言うと、「ポテンシャルが無い時の波は、ポテンシャルによってどれくらい変調されたか?」を表す量で…

水素様原子波動関数 (python)

以前、pythonにおける水素様原子のためのLaguerre陪関数について確認した。 koideforest.hatenadiary.comせっかくなので、pythonで規格化まで含めた水素様原子波動関数のスクリプト(原子単位系)を作った。 from scipy.special import assoc_laguerre from …

X線吸収の多重散乱理論でよく使いそうな関数 (python)

ほぼ自分用のメモ from scipy.special import spherical_jn, spherical_yn, sph_harm from sympy import * from sympy.physics.wigner import clebsch_gordan, gaunt # spherical Bessel function def jl( l, rho ): return spherical_jn( l, rho ) # spheri…

EXAFS振動のフーリエ変換について

「EXAFS振動をフーリエ変換する」というフレーズはX線吸収分光をやっていると腐る程見かけるが、実際にはArtemisやらLarchやらのソフトで流し込んで、実際に気にするところはパラメータのフィッティングだけということがほとんどな気がする。 ここでは「そも…

メタン(CH4)の分子軌道とLiebフラットバンド

四つ足で御馴染みのメタンの分子軌道が、固体におけるLiebフラットバンドが現れる構造と同じということで、テンションが上がった。以下の簡単な飛び移りだけを考えたハミルトニアン行列の固有値と固有ベクトルを求める。 対角成分(各原子上でのエネルギー)…

立体角積分 - Lebedev quadrature

数値計算で立体角積分をしたいとき、安直に二重積分するよりも、Lebedev求積法を使った方が効率が良い。 Lebedev quadrature - Wikipedia http://people.maths.ox.ac.uk/beentjes/Essays/QuadratureSphere.pdf効率が良いという意味は、メッシュ数が少なくて…

行列要素を視覚的にチェックする方法

行列要素をなんとか可視化したくて、三次元プロット散布図で表現してみた。 Pythonでデータを可視化するmatplotlib初級(3D散布図編) - しぷぜん from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np N = 20 row …

Legendre多項式の直交性を python (scipy) で確かめる

いつもnumpyの多項式の使い方を忘れるので、Legendre多項式の直交関係式で練習する。 ルジャンドル多項式 - Wikipediascipy.special.legendreでLegendre多項式を作ると、poly1dというタイプの関数が帰ってくるので、そのままxを代入できる(下記リンク or サ…

sympyの虚数単位を通常に戻してnumpyが使えるようにする

sympy moduleを一部使ってゴニョゴニョ計算させて、それを元にnumpy moduleで処理(例えば逆行列計算)させようとした時に虚数単位が引っかかって怒られることがあった。 sympyの代数表記を数値表記に戻す方法として"N()"や"~.evalf()"があるが、これではsym…

Sympyを使って平方完成をする。

Sympyはpythonモジュールの一つで、Mathematicaっぽく数式記号そのままで式を扱えるものである。 しかし、どうも式変形をゴリゴリ進めるノート的な使い方をするよりかは、ややこしい項が出て来た時に展開が合ってるかとか手計算が合っているかサッと電卓的に…

ASE: 構造クラスターを得るスクリプト

半径Rの構造クラスターをASEで作る。 例として単体アルミニウムを使う。 import math from ase.spacegroup import crystal from ase.visualize import view # parameters LC = 4.05 R = 7. NSL = math.ceil( 2. * R / LC ) # make bulk structure aluminium …

ASE: 窒素分子のCu(111)の二原子層における吸着構造の最適化

Python module のASE を使って、吸着構造を最適化。 ここでは簡単な有効媒質理論を使うが、calculatorを選ぶことで、AbinitとかVASPとかも使えるらしい。 Introduction: Nitrogen on copper — ASE documentation 元サイトのチュートリアルに少し追加して、吸…

PythonのLaguerre陪関数について

Wikipediaには日頃からよくお世話になっているが、自分で確認するのは大事だなと感じた事件。水素原子の波動関数の可視化とかカッコイイなぁと思い、ネットサーフィン中に以下のサイト様を訪問。 scipyの特殊関数 - 篠突く雨の日記自分も早速コピーしてやっ…

モンテカルロ積分で水素原子のエネルギー期待値を確認

「スレーター型軌道の数値積分は大変」と呪文のように聞かされて続けて心にハードルが出来てしまったので、ここらで打破することを試みた。 前回、多次元のモンテカルロ積分をまとめた。 koideforest.hatenadiary.com 今回はスクリプトを組んで、どれくらい…

ラグランジュの未定乗数法と等高線プロット

ラグランジュの未定乗数法を直感的に非常に分かりやすく描いてあるサイト様を発見。 ラグランジュの未定乗数法の解説と直感的な証明せっかくなので、実際に等高線プロット使って図示してみた。 図で考えているのは、 のような、何かポテンシャル的な場がで与…

matplotlibの等高線プロットでCDのジャケットを作る

等高線プロットを練習してたら何かカッコイイのが出来たので、CDジャケット風にしてみた。 import numpy as np import matplotlib.pyplot as plt N = 5 x = y = np.arange( N ) X, Y = np.meshgrid( x, y ) z = np.random.rand( N * N ) Z = z.reshape( N, N…

python: matplotlib.pyplot: インスタンスを使わない一通りのまとめ

いつも忘れるので、個人的なメモ参考にしたサイトの皆様 グラフの体裁を整える — matplotlib 1.0 documentation matplotlibでの凡例(ラベル)の表示場所・形式を変更する - ゆるふわめも matplotlibで忘れがちな文法まとめ - Qiita 【Python】matplotlibによ…

MacPortsを使ってMacBook AirにPOV-Rayをインストールしてみた

第一原理計算に必要な原子座標を作るのに便利なpython module "ASE"でPOV-Rayが使われていたので、MacPorts経由でインストールしてみた。sudo port -install povrayここまでで、特にエラーメッセージは出ず。 気になるメッセージとしては、pythonのバージョ…

PyQt: トップダウンで作るラーメンタイマー

下記サイト様を参考にラーメンタイマーを作成する。 PyQtではじめるGUIプログラミング 非常に分かり易く説明されていて、個人的にかなり気に入っている。 基本的にはボトムアップ(端っこの部品から作っていく)で記述して行くので、トップダウンを意識して…