忍者ブログ
一般向け/高校生向け楽しい化け学


×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



結晶のX線回折の結果を解析するプログラム(言語;C++)を作ってみました。



筆者手製のXRD解析プログラムの実行イメージ


ピーク角度2θの値を入力すると、格子定数と各ピークに対するミラー指数と面間隔を算出してくれます。

ただし立方晶にのみ対応。(←ここがしょぼい。)

プログラミングは趣味で、たまにちょこちょこ作ってます。
(ただし趣味の域は超えないので難しいのは作れない。)


◎ X線回折(X-ray diffraction;XRD)とは

結晶試料にX線を当てると、いくつかの特定の入射角度で強く反射(散乱)する。

そのピーク角度を測定し結晶情報を得る分析手法。

これはX線が結晶中のある原子面で反射したとき、次の深さの面での反射光と干渉して強めあったときに現れる。

高校物理の波動で習ういわゆる「光路差が半波長の整数倍のとき~~」というヤツで、入射角θで強めあっているときは

2dsinθ = nλ  (d・・・原子面間隔、n・・・整数、λ・・・X線の波長)

という「ブラッグの反射条件」(高校物理の教科書に載っている)が成り立つ。

よって測定されたピーク角度から面間隔がわかり、いくつかのピークを総合することでその結晶の格子定数aが求まる。

逆に使えば種類不明の結晶が何の化合物であるかという同定もできる。


試料が立方晶(面心立方格子・体心立方格子・ダイヤモンド格子etc)のとき、

A = n2λ2/(4a2) ・・・(A)

とおくと、測定されたどのピーク角度θでも

sin2θ/A ・・・(B)

は整数になるという性質がある。

したがって測定された全てのθの値に対して(B)式の値が整数になるAを見つければ(A)式より格子定数aが求まるということである。


本プログラムでは次のような手順でAを決定している。

測定されたθがθ1、θ2・・・・θnのとき

(1) sin2θ1/A = 1となるAを求める。

(2) (1)のAが全てのθで(B)式が整数に近くなるか(±0.2くらい許容)を調べる。

(3) (2)がダメだったら sin2θ1/A = 2、3、4・・・ となるAを求め(1)、(2)を繰り返し、Aを決定する。


ここまでで求めたAは、sin2θ1/Aが整数であると仮定したときで、それ以外のθではいくらかずれているため不完全である。

全ての sin2θ1/A が整数に最も近くなるAを解とすべきである。

具体的に言うと、全てのθの

{(sin2θ/A)-(sin2θ/A に最も近い整数)}2 ・・・(C)

の和が最小になるAがよい。
(二乗しているのは値を正にするため。)

(C)式を数学的に表記すると

    ・・・・(C')

になる。(「round(x)」は「xの四捨五入」を表す。)

したがって(3)で求めたA(粗解A'とする)を基準としてA'近傍でAを変化させ、(C')を最小化するAを求め、それを解として返す。


・・・・という手順である。

実際に実行するとこんな感じです↓

クリックで拡大



筆者手製のXRD解析プログラムの実行画面(試料は酸化マグネシウム)


※ XRDのピーク角度は「2θ」が測定されるので、それを入力します。

格子定数a、面間隔d、ミラー指数(h k l)が算出されます。
(ミラー指数;面を表す番号;反射された面が具体的にどこであったかということ)


という休日の過ごし方(笑)
PR
ブログ内検索
Twitter @Chemis_twit (管理人)
Copyright 放課後化学講義室 All rights reserved



忍者ブログ [PR]