ScientificConstants パッケージの応用例
|
初期化
|
|
>
|
with(ScientificConstants);
|
|
|
分子量
|
|
10 グラムのサンプル中にあるアセトンの分子量はどのくらいか ?
アセトンの化学式は、 です。そこで、分子量は以下のようになります:
>
|
3*Element( C, atomicweight )+6*Element( H, atomicweight )+Element( O, atomicweight ):
|
これは、現在のデフォルト単位系 SI において、キログラム (kg) 単位で計測された値です。この計測値を単位変換するためには、convert/units 関数を使用します。
>
|
convert( %, units, kg, amu );
|
定義によると、分子あたりの原子質量単位の数は、グラム毎モルの数に等しくなります。そこで、10 を上記の結果で割ります。
これは、サンプルのモル数になります。
分子量を計算するために、上記の結果にアボガドロ数を掛け合わせます。
>
|
%*evalf( Constant( N['A'] ) );
|
|
|
静止軌道
|
|
静止軌道の半径を算出します。
球対称な物体の周囲を回る、円形の軌道速度を表す式は以下のようになります:
>
|
vCirc := sqrt( G*M/R );
|
ここで、G は重力定数、M は立体の質量、そして R は軌道の半径を表します。
現在、静止軌道については、1 日当たり メートルの軌道速度が必要となります。これをメートル毎秒に直すと以下のようになります:A
>
|
convert( 2*Pi*R, units, m/d, m/s );
|
これを vCirc に当てはめます。
R について解きます。実でない解を無視するために、RealDomain パッケージを使用します。
>
|
use RealDomain in
rGeo := solve( eqn1, R );
end use;
|
G をその値で置き換え、さらに M を地球の質量で置き換えます。そして評価を行います。
>
|
evalf( eval( rGeo, {G=Constant( G ), M=Constant( M[Earth] ) } ) );
|
>
|
convert( %, units, m, km );
|
この結果が、静止軌道の半径 (単位キロメートル(km)) となります。
|
|
イオン化エネルギーの周期性
|
|
周期表の元素のイオン化エネルギー (単位電子ボルト) を、原子番号が大きくなる順にプロットします。
>
|
ionEn := map( an -> [an, evalf( Element( an, ionizationenergy ) )],[ GetElements(ionizationenergy,output=atomicnumbers)]):
|
>
|
plots[pointplot]( ionEn, style=line, labels=["atomic number","eV"] );
|
|
|
崩壊活動
|
|
ヨウ素131 を例に取り、放射性崩壊活動の減少をプロットします。
活動を表す式は以下の通りです:
>
|
A := A0*exp(-lambda*t);
|
ここで、A0 は初期の活動、 は同位体の平均寿命、t は経過時間を表します。
平均寿命は、 として半減期に関連しています。
>
|
lambda := 0.693/evalf( Element( I[131], halflife ) );
|
A0 = 1 としてプロットを行います。
>
|
A0:=1:
plot( A, t=0..6e6, labels=["time (s)","Activity"] );
|
|
|
核種の簡単な図
|
|
>
|
#all isotopes
isos := map( i -> [i[2]-i[1],i[1]], {GetIsotopes( output=atomicnumbers )} ):
nops( isos );
|
>
|
#stable isotopes
isos_stable := map( i -> [i[2]-i[1],i[1]], {GetIsotopes( abundance, output=atomicnumbers )} ):
nops( isos_stable );
|
>
|
#unstable isotopes
isos_unstable := isos minus isos_stable:
|
>
|
isos_st_p := plots[pointplot]( isos_stable, color=green, legend="stable" ):
|
>
|
isos_unst_p := plots[pointplot]( isos_unstable, color=grey, legend="unstable" ):
|
>
|
plots[display]( [isos_st_p, isos_unst_p], symbol=CROSS, labels=["neutron number", "atomic number"], labeldirections=[HORIZONTAL,VERTICAL] );
|
|
|
核子あたりの結合エネルギー
|
|
質量数の関数として、核子あたりの平均結合エネルギーをプロットします。
安定した奇遇核 (例:奇数) の選択:
>
|
bindEn := map( i -> [i[2], convert( evalf( Element( i, bindingenergy ) ), units, J, MeV )/i[2]], select( j -> type( j[2], odd ), [GetIsotopes( abundance, bindingenergy, output=atomicnumbers )]) ):nops(bindEn);
|
>
|
plots[pointplot]( bindEn, symbol=CIRCLE, symbolsize=5, labels=["mass number", "MeV per nucleon"], labeldirections=[HORIZONTAL,VERTICAL], view=[0..220, 7.5..9] );
|
|
ScientificConstants パッケージの紹介へ戻る
Index for Example Worksheets へ戻る
|