nano_exit

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

プログラミング

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

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

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

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

部分散乱振幅(サイト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プログラミング 非常に分かり易く説明されていて、個人的にかなり気に入っている。 基本的にはボトムアップ(端っこの部品から作っていく)で記述して行くので、トップダウンを意識して…

PyQt: ボタンの解決の順番

下記サイト様を参考に練習中 PyQtではじめるGUIプログラミングPyQt5 & python2.7 では、QApplication等の主要なmoduleはQtGuiではなく、QtWidgetsに入っている。 ややこしいことに、QWidgetというmoduleも同時に存在している。 #!/usr/bin/env python import…

MacにPyQt5をインストール:SIPが入らない。

下記のサイトを参考に、PyQt5をインストールする。 MacとLinuxでPyQtを準備する - Qiita Qt5.9.2をonline installerでインストール。容量24GBを持って行かれる。MacBook Airには些かキツイが仕様がない。SIPを入れようとしたところ、"make install"で"Operat…

try/except文を用いた欠損データの読み込み

データのフォーマットやらなんやらで、読み込めないデータが混ざっている時、その部分だけをNoneで欠損させて読み込ませたい。 データの区切りが空白" "を場合を想定すると、 f= open( filename, "r" ) lines = f.read().split("\n") f.close() for line in …

テイラー展開、パデ近似をpythonで簡単に表せる日が来た

mpmathというモジュールの中にテイラー展開をしてくれmpmath.taylorがいらっしゃる。 Function approximation — mpmath 1.0.0 documentation mpmath.taylorは展開係数の入ったリストを返してくれる。リストの中身は昇べきの順で並んでいる。一方、mpmath.pol…

化学シフト等、メッシュを変えずにグラフをシフト

グラフをただシフトさせるだけだったら、x軸のデータにシフト量を足し引きすればすぐに出来る。 問題は、例えばシフトさせる前と後で差を取りたい場合に、x軸が揃っていないと差が取れない点である。 つまり、横軸のメッシュは固定したまま、グラフだけ並行…

yield (generator) の有り難みとは?: python

fortran77及び90・95上がりからすると、昨今のモダンな言語のノリになかなかついて行けないでやんです(バカでごめんなさい)。そもそもファイルのreadに関して一行ずつ読むのがデフォルトのfotran脳的には、python様がどこでどうメモリを消費しているか、ま…

VASPでEMAXを増やして計算したらcore dumpする件について(Ubuntu12.0.4)

VASPのコンパイルの問題ではなく、Linux側でデフォルトの設定だとstackの上限が8MB程度と小さいことが原因(あくまで自分のケースでは)。オーバーフローとか別のエラーを吐いて欲しかった。。。ulimit -aでいろんな上限が見れる。 一時的にはulimit -s unli…

MKL11.3:逆行列計算ルーチンの罠

自分の今の環境では、MKL11.3を使ってfortran90でプログラムを弄っている。違う環境では、ここで言うことは当てはまらないかも知れない。逆行列を計算したい。私の願いはそれだけであった。一般の行列に対して対応可能なsubroutineは、GETRF (LU分解)とGETRI…

fortranとpython(読み込み)

fortranユーザーからpythonに移って来ると、ただテキスト編集したいのにも関わらず、fortranの癖に慣れてしまったが故にpythonがなかなか使えるようにならんかったのでちょっと整理。「ファイルを開いて中身を読んで閉じる」までをfortranとpythonで比較。 f…