nano_exit

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

プログラミング

pythonでヒストグラムを作成し、その半値全幅を算出する。

参考サイト NumPyでヒストグラムを作るnp.histogram関数の使い方 - DeepAge scipy.signal.peak_widths — SciPy v1.12.0 Manual import numpy as np from scipy.signal import find_peak, peak_widths from matplotlib import pyplot as plt # data file: dat…

sedで、不要な行を消去しながら、範囲を指定して置換し、結果を上書きする

参考サイト sed で指定した範囲の行を置換する - まくまくsed/awkノート sed | テキストの置換処理を得意とするスクリプト言語 sedでこういう時はどう書く? #Linux - Qiita text.txt内の1~10行目を無視したい。 sed -e '1,10d' text.txt 無視した後の残され…

2次元ヒストグラムにおける最適輸送距離

異なる2次元ヒストグラム間での最適輸送距離を計算してみた。 import numpy as np import itertools import ot from matplotlib import pyplot as plt n = 100 bins_ = 10 range_ = ([0,1],[0,1]) d_TF = True # input 2-dim. histogram-1 r = np.random.ran…

二次元ヒストグラムの計算およびプロット(python)

いつも忘れるので個人用のメモ参考ページ matplotlib - hist2d で2次元ヒストグラムを作成する方法 - pystyle [Python]Matplotlibで2次元ヒストグラムを作成する方法 - Qiita NumPyでヒストグラムを作るnp.histogram関数の使い方 - DeepAgeヒストグラムの棒…

numpyで異なる離散分布における各点間のノルムを総当たりに得る方法

最適輸送距離について調べていた時に、何をやっているのかパッとわからないノルムの取り方をしているコードがあった。 最適輸送入門 n = 100 # 点群サイズ mu = np.random.randn(n, 2) # 入力分布 1 nu = np.random.randn(n, 2) + 1 # 入力分布 2 C = np.lin…

FFTでフーリエ変換

昔の記事で、FFTでフーリエ変換する内容を紹介した。 koideforest.hatenadiary.com koideforest.hatenadiary.comそこから、フーリエ変換をパッと計算出来るヘルパー関数をまとめていなかったので、自分用にまとめる。 from scipy.fftpack import fft, fftfre…

多面体の内側に点があるかどうかを判定する。

多面体の頂点の座標が分かっているとする。 多面体の内側の点を原点に取り、対象とする点が多面体の内側に入っているかどうかを判断したい。もし対象点が多面体の外側にあるとき、「多面体の頂点ベクトルを(原点から見た)対象点の方向に射影させると、射影…

pythonでLebedev quadratureを使う(更新)

以前にquadpyについて紹介した。 koideforest.hatenadiary.com しかし、記事が古くなっていて、仕様がいろいろ変更されたようなので、更新する。 詳しい内容は公式のGitHubページを参照。 GitHub - nschloe/quadpy: Numerical integration (quadrature, cuba…

pandasに一からデータを入れる(自分用メモ)。

pandasの使い方をググると、多くの場合にはsampleのcsvファイルを用意してそれを読み込ませてから使うという流れのものが多い印象がある。 読み込ませるファイルの区切りは基本的にカンマかタブであることを前提として作られている。 しかし、数値計算を扱っ…

pythonでの==とisの違い。

次のコードを見て頂きたい。 x = 0; y = 0 if (x, y) is (0, 0): print( True ) else: print( False ) if (x, y) == (0, 0): print( True ) else: print( False ) ニュアンスはどちらも同じようなことをしたい訳だが、"is"では"False"が、"=="では"True"が出…

pythonでawkを呼んでファイルを編集する。

pythonを使って、awkでinput fileを編集しながらプログラムを回したい。参考サイト様: テキスト処理にたまに便利なAWK入門 - Qiita awkで処理結果を元になったファイルに上書きする | 俺的備忘録 〜なんかいろいろ〜 フォーマット文字列内での波括弧のエス…

外部プログラムをpythonでループさせて動かす(自分用のメモ)。

pythonを使って外部プログラムをループ動作させる。エラーが起こることを想定して、適当にエラーを起こさせるためのfortranプログラムのソースを用意。 ! test.f90 program test open( 10, file = 'test.inp', status = 'old' ) end program test 適当にコン…

ASEでバンド図のフェルミエネルギーを設定する話。

ASEを使ってQuantum ESPRESSOを動かすチュートリアルをやってみた。 Espresso — ASE documentation 第一原理計算高速チュートリアル · 物性実験家のための無料でできる第一原理計算入門すると、計算したフェルミエネルギーをバンド図のプロットで設定しよう…

gfortran での変数の次元の制約。

何も考えずにプログラムを作っていたら、配列の次元が7個を超えるとコンパイルできないらしい。 program test_array7 real( kind( 0d0 ) ) :: r( 1, 2, 3, 4, 5, 6, 7, 8 ) end program test_array7 これを gfortran でコンパイルすると test_array7.f90:3:4…

python で Lebedev quadrature を使う。

注意:情報を更新しました。 koideforest.hatenadiary.com注意:以下の内容は古いので、テストコードはそのままでは通りません。 以前にLebedev求積法について紹介した。 koideforest.hatenadiary.com最近ではpythonでもLebedev求積法が使えるmoduleがあるら…

fortran のオプショナル引数

練習として、オプショナル引数を使ったサンプルプログラムを作った。Fortran 入門: サブルーチンと関数(自作手続) program ex call ex_sub( 1, z = 3 ) contains subroutine ex_sub( x, y, z ) implicit none !integer, intent( in ) :: x, y, z integer, …

fortran における複素数の入力

以下のファイルの中身を複素数の変数に読み込ませたいとする。 # test input file: test.inp 1.00000 2.00000結構探したが、fortranで外部から複素数を読み込ませるときの上手い方法が見つからなかった。 結局、実数変数に一時的に格納し、後で複素数に変換…

fortran で End of file を検出する。

fortranでファイルを限界まで読み続けると、End of file でエラーが返って来る。この辺がなんとも原始的な香りを感じさせる。 この End of file を検出/処理するためには、以下の二通りが考えられる。 END で行番号へ飛ぶ。 Fortran 入門: ファイル操作 impl…

LAPACK・LAPACK95の使い方。

LAPACKの使い方でいつも困るので自分用も兼ねてまとめる。 LAPACKのインストールの仕方については沢山サイトがあるので割愛。 サブルーチンのリスト(マニュアル) LAPACK95 -- Fortran95 interface to LAPACK Index of LAPACK95 Routines LAPACK95のサブル…

三準位系の間接相互作用(プロット)

前回、三準位系について考察した。 koideforest.hatenadiary.com今回は、実際にエネルギー準位が相互作用によってどう変化するかをプロットする。 import numpy as np import sympy as sy from matplotlib import pyplot as plt # eigenvalues e, v12, v23 =…

「式の形」と「リーダブルコード」について

正射影ベクトルの公式というものがあるらしい。 正射影ベクトルの公式の証明と使い方 | 高校数学の美しい物語 これは、「ベクトルをベクトル方向に射影したベクトルを求める」というものである。この公式を見て思ったのは、「計算出来るけど『意味が』分かり…

多変数関数の連続性

変数が増えると、一見連続そうに見えても、不連続な場合がある。例1: import numpy as np from matplotlib import pyplot as plt def arbitrary_function( x, y ): return ( x - y ) / ( x + y + 1e-7 ) N = 1000 x_min, x_max = -1, 1 y_min, y_max = -1, …

pythonでの計算時間の測定とその出力

自分用のメモ import time time_start = time.time() # # calculation contents # time_end = time.time() delta = time_end - time_start second = delta % 60 minuite = ( delta % 3600 ) // 60 hour = delta // 3600 print( " {:>.1f} s".format( delta )…

Windows 10にWSLでUbuntuを入れたらOpenMPIで警告が出た時の話

OpenMPIをインストールした後、mpirunで実行ファイルを走らせると、以下のような警告文が出た。 WARNING: Linux kernel CMA support was requested via the btl_vader_single_copy_mechanism MCA variable, but CMA support is not available due to restric…

mpi4pyをOpenMPIでインストールした時の話

WSLで入れたUbuntuでpythonの環境が整いつつあったので、mpi4pyをpipで入れようとしたら、上手く行かなかった。 どうもインストールの際に内部でmpiccでコンパイルするときにコケていて、エラーの内容は-lmpeやら-llmpeやらが無いということだった。しかし、…

Windows 10にWSLでUbuntuを入れてもpython (matplotlib)で図が表示されなかった時の話

pyenvを使って、pythonおよびモジュールを管理出来るようになった。 koideforest.hatenadiary.comそこで、matplotlibでとりあえず図が出るか確認したところ、 from matplotlib import pyplot as plt plt.plot( range(2), range(2) ) plt.show() 何も出ず、う…

Windows10にWSLでUbuntuを入れてもpyenvが使えなかった時の話

前前回、前回と、Windows 10上でUbuntuを動かす上で、Proxyの設定が重要であることを学んで来た。 koideforest.hatenadiary.com koideforest.hatenadiary.comgit cloneが使えるところまで来たため、pyenvをインストールしたところ、pyenv installがコケてし…

Windows 10にWSLでUbuntuを入れてもgit cloneが使えなかった時の話

前回、Windows 10でaptを使えるようにしました。 koideforest.hatenadiary.comそれで次にgit cloneでpyenvを入れようとしたら fatal: unable to access 'https://github.com/pyenv/pyenv.git/': gnutls_handshake() failed: The TLS connection was non-prop…

Windows10にWSLでUbuntuを入れてもaptが使えなかった時の話

新しくWindows PCを用意して、WSL経由でUbuntuをインストールしたが、aptが使えなくて困っていた。以下のサイトを参考にした。 WSL(Windows Subsystem for Linux)のProxy設定方法 | 組込みエンジニアの思うところ Windowsでプロキシのユーザとパスワードを…

高速フーリエ変換する時の端点の話。

高速フーリエ変換ことFFT(ファイナルファンタジータクティクスではありません)は、結局は離散フーリエ変換な訳で、ある範囲のデータが無限に周期的に繰り返しているとしてフーリエ変換してくれます。 この時に、端の点のどこで周期性を課すのか、ややこし…