物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

数学/物理

Python: 重イオンのEnergy loss と Energy loss straggling

まず、各定数の確認する。 import numpy as np elementary_charge = 1.602176634*10**-19 # 電気素量 C c_light_m = 299792458 # 光速 m/s electron_mass_kg = 9.1093837015*10**-31 # 電子質量 kg permittivity_vacuum = 8.8541878128*10**-12 # 真空の誘電…

Python: 4桁の原子量

standard_weights = [1.008, 4.003,\ 6.941, 9.012, 10.81, 12.01, 14.01, 16.00, 19.00, 20.18,\ 22.99, 24.31, 26.98, 28.09, 30.97, 32.07, 35.45, 39.95,\ 39.10, 40.08, 44.96, 47.87, 50.94, 52.00, 54.94, 55.85, 58.93, 58.69, 63.55, 65.38, 69.72,…

Python: イオンの質量

この記事の Awkward のバージョンは1.X.Xです 単一原子の基底状態のイオンの質量をPythonで求める。データは nds.iaea.org から引っ張ってきた。APIの説明。 def get_ion_mass(z, a, q): import os gs_filename = "ground_states.csv" if not os.path.exists…

Python numpyのpolyfitで二次元データを二次関数(y=ax^2+bx+c)でフィッティング、係数と誤差を得る

phst.hateblo.jp の二次関数版 import numpy as np # データ生成 x = np.array([10.09659323, 10.40523609, 10.72069954, 11.03063238, 11.33665493, 11.6391395, 11.9381814, 12.23925842, 12.5349865, 12.82765475, 13.11407145, 13.40273189, 13.69487096…

Python: 正規分布同士の分離度と重なりの割合

分離度(Resolution, R)=2.5のヒストグラムがどういうのか想像できなかったので作ってみた。分離度はそれぞれの分布を正規分布としたとき、隣り合うピークの平均値の差 と、各ピークの標準偏差を使い、以下の式で定義している。 半値全幅 FWHM は なので、 と…

Python mzfit (zfit) で マルチガウシアンフィッティング (Windows非対応)

サイエンスの界隈でよく使われているzfitと、zfitを簡単に使うためのラッパーであるmzfitを使ってみる。 pypi.org pypi.org zfitが依存しているfittingのコアの部分である ipopt はWindowsに非対応なので、WindowsユーザーはWSLなどを使ってLinux環境で実行…

PTEPのSubject Index 全リスト (と簡易日本語訳)

PTEPのSubject Indexの全リストに直接アクセスする場合はこのページ publication.jps.jp PTEPのトップページからアクセスする場合は以下のように辿るべし Subject Index

Woods-Saxon potentialをPythonで描画する

import numpy as np from matplotlib import pyplot as plt v0 = 14 A = 15 a = 0.5 r0 = 1.25 R = r0*A**(1/3) x = np.linspace(0.0, 10.0) y = -v0/(1+np.exp((x-R)/a)) plt.plot(x, y, "b-") plt.title(r"Woods-Saxon potential") plt.text(3, -v0*0.8, r…

C++ Eigenを使った正規分布のフィッティング手法

過去に、ROOTとPythonで正規分布のフィッティングをした。 phst.hateblo.jp だが、ROOTはWindowsでx64と共存しないので、x64と共存するライブラリだけを使ったフィッティングを試みた。まずは、 ガウス分布のフィッティング用のサンプルデータ Sample data …

単スリットのフラウンホーファー回折のシミュレーション

http://www.sci.keio.ac.jp/gp/87B7D75A/A6070F75/6E345155.pdf 単スリットについて考えてみた。 スリット幅が波長に比べて十分広いか、スクリーンの位置が十分遠い場合には、回折による干渉模様を観察できる。 数式をPDFファイルからパクって書いておく。 :…

Pythonでエアリー関数を使う

from scipy import special import numpy as np import matplotlib.pyplot as plt x = np.linspace(-15, 5, 201) (ai, aip, bi, bip) = special.airy(x) plt.plot(x, ai, label="ai") plt.plot(x, bi, label="bi") plt.ylim(-0.5, 1.0) plt.legend() plt.sho…

学生による実験レポートのコピペについて

実験レポートの(やってはいけない)コピペは、起きてほしくはないが、よく起こる。 レポートのクオリティを上げたいとき、比較的よく書けている他人の実験レポートの一部や全部をコピペし、間違いを修正し、加筆するのは、クオリティを上げるという観点だけで…

ダブルΛハイパー核 NagaraイベントをROOTとPythonを使ってMCで発生させてみる

3体崩壊で、粒子が完全にランダムに崩壊したとすると、粒子1と粒子2の不変質量の2乗と、粒子1と粒子3の不変質量の2乗分布が一様になるように崩壊する。 ROOT のライブラリを使って、これを実際に発生してみる。BΞとΔBΛΛは0としている。 #include <iostream> #include <fstream> </fstream></iostream>…

直交座標系のずれ量を飛跡の角度に相当するRadial Lateral空間に変換するコード

放射線の飛跡のように、座標(cx, cy) 角度 (ax = dx/dz, ay = dy/dz)で表すことの出来る量の比較をする時、しばしば飛跡の進行方向(Radial方向)と垂直方向(Lateral方向)に分離して考えることがある。 飛跡1 (cx1, cy1, ax1, ay1)、飛跡2 (cx2, cy2, ax2, ay2…

高い飛跡密度における飛跡再構成アルゴリズム (日本語訳)

arxiv.org の付録Bの日本語訳です。一部に筆者の意訳を含みます。 原子核乾板は、その高分解能により各フィルムに記録された膨大な量のイベント又はオーダーの飛跡の陽子反応を再構成することができる。 これは、位置分解能0.4 μmと角度分解能2mradのベクト…

講演会 川村静児氏「重力波:アインシュタインの奏でる宇宙からのメロディー」質疑応答 @2018年 ぎふサイエンスフェスティバル

会場内でメモしたため間違っているところがあるかもしれません。 Q. インフレーション理論で物理現象(特殊相対性理論)は成立しているのか? A. 場が広がってるだけなので成立できる。 Q. インフレーションの音はシミュレーションはされているのか? A. されて…

原子核乾板の元素組成と密度

更新履歴を含めた情報は、Gitlabで管理しています。参考文献がHatena Blogの仕様で崩れているため、下記のGitlab版も参照してください gitlab.com 参考文献一覧 ^ref01 ^ref03 ^ref05 ^ref07 ^ref09 ^ref11 原子核乾板の密度と組成について 原子核乾板 (Nucl…

直交座標から球面座標系(極座標)に変換するときの誤差伝搬

Error propagation when converting from rectangular coordinate system to spherical coordinate system 飛跡のベクトルが次のように得られたとする Assume that a vector of trajectory is obtained as follows Range、Theta、Phiは次のようになる Range,…

tan空間角度と、ラジアン空間の角度の話

3次元角度がtan空間で次のように与えられたとき ベクトル1 ベクトル2 角度差は cosθはドット積を用いて のように与えられるので、 よってΔθは となる arccosはC++だとacosで計算可能。

δtanθ - tanθグラフをδθ - tanθグラフに変換する

より正しい記述へ phst.hateblo.jp tanθを0.1刻みで、δtanθの値が一律で0.1のときにδθを計算するコードの例。 #include <vector> void main() { std::vector<double> x, y; //tanθ δtanθ for (int i = 0; i < 20; i++) { x.emplace_back(i * 0.1 + 0.05); y.emplace_back(0.1</double></vector>…