Wskaźnikowanie graficzne wskaźników refleksów dyfrakcyjnych

Projekt zaliczeniowy kursu: Mathematica I: kurs wstępny

Dawid Kabała
Zaawansowane Materiały i Nanotechnologia, I rok
Wydział Fizyki, Astronomii i Informatyki Stosowanej
Uniwersytet Jagielloński
Kraków 2010

Wstęp

Pomiary refleksów na rentgenogramie pozwalają na ustalenie kątów odbłysku 2θ. Posługując się tymi kątami oraz znając długości fal λ stosowanego promieniowania, wylicza się z równania Bragga odległości międzypłaszczyznowe dhkl badanej substancji 
(Subscript[d, hkl])=(λ/(2Sin(2θ))).				(1)
Następnym krokiem jest określenie układu krystalograficznego, do którego należy substancja oraz parametrów komórki elementarnej. Wymaga to przyporządkowania występującym na rentgenogramie pikom określonych płaszczyzn (hkl). Każda płaszczyzna krystaliczna może dawać refleksy nie tylko pierwszego rzędu, lecz także rzędów wyższych. Stąd wskaźniki refleksów mogą być wielokrotnościami wskaźników płaszczyzn, od których pochodzą (wskaźniki refleksów odróżniamy od wskaźników płaszczyzn, pisząc je bez nawiasów). Wartości liczbowe poszczególnych wskaźników mają dzielnik (n), będący rzędem refleksu: 100 (1), 200 (2), 300 (3) itd.
Proces, który prowadzi do wyznaczenia symboli refleksów dyfrakcyjnych nazywa się wskaźnikowaniem.
Podstawą graficznych metod wskaźnikowania, jest możliwość przedstawienia zależności między otrzymanymi z rentgenogramu wartościami (Subscript[d , hkl]) lub do niej proporcjonalnymi i parametrami komórki elementarnej.
Praktycznie metody te znajdują zastosowanie do wskaźnikowania refleksów dyfrakcyjnych kryształów z układu regularnego, tetragonalnego i heksagonalnego. Dla układów o niższej symetrii metod tych się nie stosuje ze względu na ich skomplikowany opis.

Wskaźnikowanie układu regularnego
Równanie opisujące układ regularny ma postać:
(Subscript[d, hkl])=((Subscript[a, 0])/(Sqrt[(h^2)+(k^2)+(l^2)])).			(r)
Wskaźniki są całkowite, zatem suma kwadratów także jest całkowita.
Z równania (r) wynika, że dla danego hkl w tym układzie (Subscript[d, hkl]) jest funkcją parametru komórki elementarnej (Subscript[a, 0]) i jest do tej wielkości proporcjonalna.
Graficznie zależność tą wyraża prosta przechodzaca przez początek układu współrzednych.
Każda trójka wskaźników odpowiada odpowiedniej prostej. Wskaźnikowanie odbywa się wg zależności (Subscript[d, hkl])((Subscript[a, 0])), dla określonych odległości (Subscript[d, hkl]) wyznaczonych z równania (1). Zmienia się wartość (Subscript[a, 0]) (przesuwając punkty wzdłuż osi pionowej), do momentu kiedy punkty odpowiadające pikom pokryją się z odpowiednimi liniami. Poszczególnym refleksom przydziela się wskaźniki odpowiadające liniom, z którymi się przecinają.
Wartość (Subscript[a, 0]) można odczytać z wykresu lub obliczyć z równania.
Jeśli wartość (Subscript[a, 0]) jest znana najprościej od razu ustawić jej wartość.

Wskaźnikowanie układu tetragonalnego
Równanie kwadratowe wskaźników układu tetragonalnego ma postać:
(1/((Subscript[d, hkl])^2))=(((h^2)+(k^2))/((Subscript[a, 0])^2))+((l^2)/((Subscript[c, 0])^2)).			(t1)
Równanie to można zapisac jako:
((Subscript[d, hlk])^2)=(((Subscript[a, 0])^2)/(((h^2)+(k^2))+(l^2) (1/(((Subscript[c, 0])^2)/((Subscript[a, 0])^2))))).			(t2)
Po zlogarytmowaniu:
2Log[(Subscript[d, hkl])]=2Log[(Subscript[a, 0])]-Log[(((h^2)+(k^2))+(l^2) (1/(((Subscript[c, 0])^2)/((Subscript[a, 0])^2)))].	(t3)
Czynnik Log[(Subscript[a, 0])] jako stały w równaniu może zostać pominięty. Wówczas można je zapisać w postaci proporcji:
(Subscript[d, hkl])∼(((Subscript[c, 0])^2)/((Subscript[a, 0])^2))∼((h^2)+(k^2))+(l^2) (1/(((Subscript[c, 0])^2)/((Subscript[a, 0])^2)))	(t)
Powyższa zależność służy do zbudowania układu krzywych, które odpowiadają określonym wskaźnikom, przy czym dla l = 0 będą to linie pionowe.
Na wykresie d(c/a), dla wyznaczonych z równania (1) refleksów dopasowuje się krzywe i odpowiadające im wskaźniki. Z refleksów typu hk0 oblicza się wartość (Subscript[a, 0]) korzystając z modyfikacji wzoru (t1):
(1/((Subscript[d, hk0])^2))=(((h^2)+(k^2))/((Subscript[a, 0])^2)).
Podobnie wylicza się parametr c z refleksów 00l i równania:
(1/((Subscript[d, 00l])^2))=((l^2)/((Subscript[c, 0])^2)).

Wskaźnikowanie układu heksagonalnego
Równanie kwadratowe wskaźników układu heksagonalnego jest podobne do równania dla układu tetragonalnego i wyraża się wzorem:
(1/((Subscript[d, hkl])^2))=(4/3)(((h^2)+h k+(k^2))/((Subscript[a, 0])^2))+((l^2)/((Subscript[c, 0])^2))	
Po przekształceniu analogicznym jak w układzie tetragonalnym:
(Subscript[d, hkl])∼(((Subscript[c, 0])^2)/((Subscript[a, 0])^2))∼(4/3)((h^2)+h k+(k^2))+(l^2) (1/(((Subscript[c, 0])^2)/((Subscript[a, 0])^2)))
Ze względu na analogię równań obu układów wykorzystuje się  także analogiczną procedurę konstrukcji wykresu i wskaźnikowania.

Literatura
Z. Bojarski, E. Łągiewka, Materiały do ćwiczeń z rentgenowskiej analizy strukturalnej, Uniwersytet Śląski 1982

Inicjalizacja

ClearAll["Global`*"]

EvaluationNotebook[]

Zdefiniowanie długości fali, dla których program wskaźnikuje:

Cuα1 = 1.5418(*[nm]*);
Cuβ = 1.39217(*[nm]*);

Dane: kąty 2θ odpowiadające refleksom

Przykładowa lista wskaźnikowanych refleksów dla układu cF, otrzymana dla NaCl metodą dyfraktometrii proszkowej, przy użyciu lampy Cu.

Lista = {27.5013,28.6889,31.84335,40.9772,45.5648,56.5890,59.28823,66.35109,67.1076,74.53102,75.40127,84.08097,95.63397,101.24429,110.15606,119.61483};

Obliczenia

iloscpozycji=Length[Lista] (*sprawdzenie długości listy*);

dna=Table[Cuα1/(2 Sin[Lista[[n]]*Pi/360]),{n,1,iloscpozycji}](*z rówania (1) wyliczono odległości d dla fali o dł. α*);

dnb=Table[Cuβ/(2 Sin[Lista[[n]]*Pi/360]),{n,1,iloscpozycji}](*z rówania (1) wyliczono odległości d dla fali o dł. β*);

npika=Length[dna];

npikb=Length[dnb];

cP=(*układ redularny z komórką prymitywną*)
Manipulate[Show[ListPlot[Table[{dna[[n]],a},{n,1,npika}],
PlotMarkers->Table[{Row[{Overscript["+",s]}],20},{s,1,npika}],(*punkty zaznaczono krzyżykami i podpisano numerami pików*)
AxesOrigin->{0,0},AxesLabel->{"\!\(\*SubscriptBox[\"d\", \"hkl\"]\) / [A]","\!\(\*SubscriptBox[\"a\", \"0\"]\) / [A]"},PlotRange->{0,Max[{a+2,b+2}]},PlotStyle->Black],
ListPlot[Table[{dnb[[n]],b},{n,1,npikb}],PlotMarkers->{"+",20},AxesOrigin->{0,0},AxesLabel->{"\!\(\*SubscriptBox[\"d\", \"hkl\"]\) / [A]","\!\(\*SubscriptBox[\"a\", \"0\"]\) / [A]"},PlotRange->{0,Max[{a+2,b+2}]},PlotStyle->Darker[Red]],
Plot[Tooltip[(*umożliwia zobaczenie wskaźnika przez najechanie na linię mu odpowiadającą*)
Sqrt[1] x,"1 0 0"],{x,0,8},PlotStyle->Darker[Gray]](*z przekształconego rówania (r) otrzymano linię odpowiadającą wskaźnikowi*),
Plot[Tooltip[Sqrt[2] x,"1 1 0"],{x,0,8},PlotStyle->Lighter[Black]],
Plot[Tooltip[Sqrt[3] x,"1 1 1"],{x,0,8},PlotStyle->Black],
Plot[Tooltip[Sqrt[4]x,"2 0 0"],{x,0,8},PlotStyle->Gray],
Plot[Tooltip[Sqrt[5]x,"2 1 0"],{x,0,8},PlotStyle->Darker[Brown]],
Plot[Tooltip[Sqrt[6] x,"2 1 1"],{x,0,8},PlotStyle->Brown],
Plot[Tooltip[Sqrt[8] x,"2 2 0"],{x,0,8},PlotStyle->Lighter[Brown]],
Plot[Tooltip[Sqrt[9] x,"\!\(\*UnderscriptBox[\"3 0 0\", \"2 2 1\"]\)"],{x,0,8},PlotStyle->Darker[Purple]],
Plot[Tooltip[Sqrt[10] x,"3 1 0"],{x,0,8},PlotStyle->Purple],
Plot[Tooltip[Sqrt[11] x,"3 1 1"],{x,0,8},PlotStyle->Lighter[Purple]],
Plot[Tooltip[Sqrt[12] x,"2 2 2"],{x,0,8},PlotStyle->Lighter[Pink]],
Plot[Tooltip[Sqrt[13] x,"3 2 0"],{x,0,8},PlotStyle->Pink],
Plot[Tooltip[Sqrt[14] x,"3 2 1"],{x,0,8},PlotStyle->Darker[Pink]],
Plot[Tooltip[Sqrt[16] x,"4 0 0"],{x,0,8},PlotStyle->Darker[Magenta]],
Plot[Tooltip[Sqrt[17] x,"\!\(\*UnderscriptBox[\"4 1 0\", \"3 2 2\"]\)"],{x,0,8},PlotStyle->Magenta],
Plot[Tooltip[Sqrt[18] x,"\!\(\*UnderscriptBox[\"4 1 1\", \"3 3 0\"]\)"],{x,0,8},PlotStyle->Darker[Red]],
Plot[Tooltip[Sqrt[19] x,"3 3 1"],{x,0,8},PlotStyle->Red],
Plot[Tooltip[Sqrt[20] x,"4 2 0"],{x,0,8},PlotStyle->Darker[Orange]],
Plot[Tooltip[Sqrt[21] x,"4 2 1"],{x,0,8},PlotStyle->Orange],
Plot[Tooltip[Sqrt[22] x,"4 2 1"],{x,0,8},PlotStyle->Lighter[Orange]],
Plot[Tooltip[Sqrt[24] x,"4 2 2"],{x,0,8},PlotStyle->Yellow],
Plot[Tooltip[Sqrt[25] x,"\!\(\*UnderscriptBox[\"5 0 0\", \"4 3 0\"]\)"],{x,0,8},PlotStyle->Darker[Yellow]],
Plot[Tooltip[Sqrt[26] x,"\!\(\*UnderscriptBox[\"5 1 0\", \"4 3 1\"]\)"],{x,0,4},PlotStyle->Lighter[Green]],
Plot[Tooltip[Sqrt[27] x,"\!\(\*UnderscriptBox[\"5 1 1\", \"3 3 3\"]\)"],{x,0,4},PlotStyle->Green],
Plot[Tooltip[Sqrt[30] x,"5 2 1"],{x,0,8},PlotStyle->Darker[Green]],
Plot[Tooltip[Sqrt[32] x,"4 4 0"],{x,0,8},PlotStyle->Lighter[Blue]],
Plot[Tooltip[Sqrt[35] x,"5 3 1"],{x,0,8},PlotStyle->RGBColor[0,1,1]],
Plot[Tooltip[Sqrt[36] x,"\!\(\*UnderscriptBox[\"6 0 0\", \"4 4 2\"]\)"],{x,0,4},PlotStyle->Darker[Blue]],
(*w odpowiednie skali to największe sensowne zagęszczenie linii*)
ImageSize->size](*zmiana powiększenia obrazu jest istotna przy wskaźnikowaniu*),
{{a,5.63,"\!\(\*SubscriptBox[\"a dla Cu α\", \"1\"]\)"},0,10,0.005},{{b,5.43,"\!\(\*SubscriptBox[\"a dla Cu β\", \"1\"]\)"},0,10,0.005},{{size,1000,"Skalowanie"},500,3000,500},Text[""],Text[Style["Wskaźnikowane piki",26]],Grid[Table[{" nr piku",l,"  2θ =",Lista[[l]]," "},{l,1,iloscpozycji}],Alignment->Left,BaselinePosition->Center, Frame->True],LabelStyle->Directive[Black, Large],ControlPlacement->Left];

cF=
Manipulate[Show[
ListPlot[Table[{dna[[n]],a},{n,1,npika}],
PlotMarkers->Table[{Row[{Overscript["+",s]}],20},{s,1,npika}],AxesOrigin->{0,0},AxesLabel->{"\!\(\*SubscriptBox[\"d\", \"hkl\"]\) / [A]","\!\(\*SubscriptBox[\"a\", \"0\"]\) / [A]"},PlotRange->{0,Max[{a+2,b+2}]},PlotStyle->Black],
ListPlot[Table[{dnb[[n]],b},{n,1,npikb}],PlotMarkers->{"+",20},AxesOrigin->{0,0},AxesLabel->{"\!\(\*SubscriptBox[\"d\", \"hkl\"]\) / [A]","\!\(\*SubscriptBox[\"a\", \"0\"]\) / [A]"},PlotRange->{0,Max[{a+2,b+2}]},PlotStyle->Darker[Red]],
Plot[Tooltip[Sqrt[3] x,"1 1 1"],{x,0,8},PlotStyle->Black],
Plot[Tooltip[Sqrt[4]x,"2 0 0"],{x,0,8},PlotStyle->Gray],
Plot[Tooltip[Sqrt[8] x,"2 2 0"],{x,0,8},PlotStyle->Lighter[Brown]],
Plot[Tooltip[Sqrt[11] x,"3 1 1"],{x,0,8},PlotStyle->Lighter[Purple]],
Plot[Tooltip[Sqrt[12] x,"2 2 2"],{x,0,8},PlotStyle->Lighter[Pink]],
Plot[Tooltip[Sqrt[16] x,"4 0 0"],{x,0,8},PlotStyle->Darker[Magenta]],
Plot[Tooltip[Sqrt[19] x,"3 3 1"],{x,0,8},PlotStyle->Red],
Plot[Tooltip[Sqrt[20] x,"4 2 0"],{x,0,8},PlotStyle->Darker[Orange]],
Plot[Tooltip[Sqrt[24] x,"4 2 2"],{x,0,8},PlotStyle->Yellow],
Plot[Tooltip[Sqrt[27] x,"\!\(\*UnderscriptBox[\"5 1 1\", \"3 3 3\"]\)"],{x,0,4},PlotStyle->Green],
Plot[Tooltip[Sqrt[32] x,"4 4 0"],{x,0,8},PlotStyle->Lighter[Blue]],
Plot[Tooltip[Sqrt[35] x,"5 3 1"],{x,0,8},PlotStyle->RGBColor[0,1,1]],
Plot[Tooltip[Sqrt[36] x,"\!\(\*UnderscriptBox[\"6 0 0\", \"4 4 2\"]\)"],{x,0,4},PlotStyle->Darker[Blue]],
ImageSize->size],
{{a,5.63,"\!\(\*SubscriptBox[\"a dla Cu α\", \"1\"]\)"},0,10,0.005},{{b,3.43,"\!\(\*SubscriptBox[\"a dla Cu β\", \"1\"]\)"},0,10,0.005},{{size,500,"Skalowanie"},500,3000,500},Text[""],Text[Style["Wskaźnikowane piki",26]],Grid[Table[{" nr piku",l,"  2θ =",Lista[[l]]," "},{l,1,iloscpozycji}],Alignment->Left,BaselinePosition->Center, Frame->True],LabelStyle->Directive[Black, Large],ControlPlacement->Left];

cI=
Manipulate[Show[ListPlot[Table[{dna[[n]],a},{n,1,npika}],PlotMarkers->Table[{Row[{Overscript["+",s]}],20},{s,1,npika}],AxesOrigin->{0,0},AxesLabel->{"\!\(\*SubscriptBox[\"d\", \"hkl\"]\) / [A]","\!\(\*SubscriptBox[\"a\", \"0\"]\) / [A]"},PlotRange->{0,Max[{a+2,b+2}]},PlotStyle->Black],
ListPlot[Table[{dnb[[n]],b},{n,1,npikb}],PlotMarkers->{"+",20},AxesOrigin->{0,0},AxesLabel->{"\!\(\*SubscriptBox[\"d\", \"hkl\"]\) / [A]","\!\(\*SubscriptBox[\"a\", \"0\"]\) / [A]"},PlotRange->{0,Max[{a+2,b+2}]},PlotStyle->Darker[Red]],
Plot[Tooltip[Sqrt[2] x,"1 1 0"],{x,0,8},PlotStyle->Lighter[Black]],
Plot[Tooltip[Sqrt[4]x,"2 0 0"],{x,0,8},PlotStyle->Gray],
Plot[Tooltip[Sqrt[6] x,"2 1 1"],{x,0,8},PlotStyle->Brown],
Plot[Tooltip[Sqrt[8] x,"2 2 0"],{x,0,8},PlotStyle->Lighter[Brown]],
Plot[Tooltip[Sqrt[10] x,"3 1 0"],{x,0,8},PlotStyle->Purple],
Plot[Tooltip[Sqrt[12] x,"2 2 2"],{x,0,8},PlotStyle->Lighter[Pink]],
Plot[Tooltip[Sqrt[14] x,"3 2 1"],{x,0,8},PlotStyle->Darker[Pink]],
Plot[Tooltip[Sqrt[16] x,"4 0 0"],{x,0,8},PlotStyle->Darker[Magenta]],
Plot[Tooltip[Sqrt[20] x,"4 2 0"],{x,0,8},PlotStyle->Darker[Orange]],
Plot[Tooltip[Sqrt[22] x,"4 2 1"],{x,0,8},PlotStyle->Lighter[Orange]],
Plot[Tooltip[Sqrt[24] x,"4 2 2"],{x,0,8},PlotStyle->Yellow],
Plot[Tooltip[Sqrt[26] x,"\!\(\*UnderscriptBox[\"5 1 0\", \"4 3 1\"]\)"],{x,0,4},PlotStyle->Lighter[Green]],
Plot[Tooltip[Sqrt[30] x,"5 2 1"],{x,0,8},PlotStyle->Darker[Green]],
Plot[Tooltip[Sqrt[32] x,"4 4 0"],{x,0,8},PlotStyle->Lighter[Blue]],
Plot[Tooltip[Sqrt[34] x,"\!\(\*UnderscriptBox[\"5 3 0\", \"4 3 3\"]\)"],{x,0,8},PlotStyle->RGBColor[0,1,1]],
Plot[Tooltip[Sqrt[36] x,"\!\(\*UnderscriptBox[\"6 0 0\", \"4 4 2\"]\)"],{x,0,4},PlotStyle->Darker[Blue]],
ImageSize->size],
{{a,5.63,"\!\(\*SubscriptBox[\"a dla Cu α\", \"1\"]\)"},0,10,0.005},{{b,5.43,"\!\(\*SubscriptBox[\"a dla Cu β\", \"1\"]\)"},0,10,0.005},{{size,1000,"Skalowanie"},500,3000,500},Text[""],Text[Style["Wskaźnikowane piki",26]],Grid[Table[{" nr piku",l,"  2θ =",Lista[[l]]," "},{l,1,iloscpozycji}],Alignment->Left,BaselinePosition->Center, Frame->True],LabelStyle->Directive[Black, Large],ControlPlacement->Left];

tP=
Manipulate[Show[Graphics[ListPlot[Table[{dna[[n]],a},{n,1,npika}],PlotMarkers->Table[{Row[{Overscript["+",s]}],20},{s,1,npika}],AxesOrigin->{0,0},AxesLabel->{"\!\(\*SubscriptBox[\"d\", \"hkl\"]\) / [A]","\!\(\*SubscriptBox[\"a\", \"0\"]\) / [A]"},PlotRange->{{0,20},{0,Max[{a+2,b+2}]}},PlotStyle->Black]],
Graphics[ListPlot[Table[{dnb[[n]],b},{n,1,npikb}],PlotMarkers->{"+",20},AxesOrigin->{0,0},AxesLabel->{"\!\(\*SubscriptBox[\"d\", \"hkl\"]\) / [A]","\!\(\*SubscriptBox[\"a\", \"0\"]\) / [A]"},PlotRange->{{0,20},{0,Max[{a+2,b+2}]}},PlotStyle->Darker[Red]]],
ParametricPlot[Tooltip[{(1)+((0^2)/y^2),y},"1 0 0"],(*sparametryzowane rówanie t pozwala uniknąć dzielenia przez 0*)
{y,0.1,10},PlotStyle->Darker[Gray],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(2)+((0^2)/y^2),y},"1 1 0"],{y,0.1,10},PlotStyle->Lighter[Black],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4)+((0^2)/y^2),y},"2 0 0"],{y,0.1,10},PlotStyle->Black,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(5)+((0^2)/y^2),y},"2 1 0"],{y,0.1,10},PlotStyle->Gray,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(8)+((0^2)/y^2),y},"2 2 0"],{y,0.1,10},PlotStyle->Darker[Brown],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(9)+((0^2)/y^2),y},"3 0 0"],{y,0.1,10},PlotStyle->Brown,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(10)+((0^2)/y^2),y},"3 1 0"],{y,0.1,10},PlotStyle->Lighter[Brown],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(13)+((0^2)/y^2),y},"3 2 0"],{y,0.1,10},PlotStyle->Darker[Purple],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(16)+((0^2)/y^2),y},"4 0 0"],{y,0.1,10},PlotStyle->Purple,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(18)+((0^2)/y^2),y},"3 3 0"],{y,0.1,10},PlotStyle->Lighter[Purple],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(20)+((0^2)/y^2),y},"4 2 0"],{y,0.1,10},PlotStyle->Lighter[Blue],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(0)+((1^2)/y^2),y},"0 0 1"],{y,0.1,10},PlotStyle->Pink,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(0)+((2^2)/y^2),y},"0 0 2"],{y,0.1,10},PlotStyle->Darker[Pink],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(1)+((1^2)/y^2),y},"1 0 1"],{y,0.1,10},PlotStyle->Darker[Magenta],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(2)+((1^2)/y^2),y},"1 1 1"],{y,0.1,10},PlotStyle->Magenta,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(2)+((2^2)/y^2),y},"1 1 2"],{y,0.1,10},PlotStyle->Darker[Red],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(1)+((3^2)/y^2),y},"1 0 3"],{y,0.1,10},PlotStyle->Red,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4)+((2^2)/y^2),y},"2 0 2"],{y,0.1,10},PlotStyle->Darker[Orange],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(5)+((1^2)/y^2),y},"1 2 1"],{y,0.1,10},PlotStyle->Orange,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(5)+((1^2)/y^2),y},"1 2 2"],{y,0.1,10},PlotStyle->Lighter[Orange],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(5)+((3^2)/y^2),y},"1 2 3"],{y,0.1,10},PlotStyle->Yellow,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4)+((4^2)/y^2),y},"2 0 4"],{y,0.1,10},PlotStyle->Darker[Yellow],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(9)+((1^2)/y^2),y},"3 0 1"],{y,0.1,10},PlotStyle->Lighter[Green],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ImageSize->size],
{{a,1,"\!\(\*SubscriptBox[\"a dla Cu α\", \"1\"]\)"},0,3,0.005},{{b,0.9,"\!\(\*SubscriptBox[\"a dla Cu β\", \"1\"]\)"},0,3,0.005},{{size,1000,"Skalowanie"},500,3000,500},Text[""],Text[Style["Wskaźnikowane piki",26]],Grid[Table[{" nr piku",l,"  2θ =",Lista[[l]]," "},{l,1,iloscpozycji}],Alignment->Left,BaselinePosition->Center, Frame->True],LabelStyle->Directive[Black, Large],ControlPlacement->Left];

hP=
Manipulate[Show[Graphics[ListPlot[Table[{dna[[n]],a},{n,1,npika}],PlotMarkers->Table[{Row[{Overscript["+",s]}],20},{s,1,npika}],AxesOrigin->{0,0},AxesLabel->{"\!\(\*SubscriptBox[\"d\", \"hkl\"]\) / [A]","\!\(\*SubscriptBox[\"a\", \"0\"]\) / [A]"},PlotRange->{{0,20},{0,Max[{a+2,b+2}]}},PlotStyle->Black]],
Graphics[ListPlot[Table[{dnb[[n]],b},{n,1,npikb}],PlotMarkers->{"+",20},AxesOrigin->{0,0},AxesLabel->{"\!\(\*SubscriptBox[\"d\", \"hkl\"]\) / [A]","\!\(\*SubscriptBox[\"a\", \"0\"]\) / [A]"},PlotRange->{{0,20},{0,Max[{a+2,b+2}]}},PlotStyle->Darker[Red]]],
ParametricPlot[Tooltip[{(4/3)*(1)+((0^2)/y^2),y},"1 0 0"],{y,0.1,10},PlotStyle->Darker[Gray],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(3)+((0^2)/y^2),y},"1 1 0"],{y,0.1,10},PlotStyle->Lighter[Black],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(4)+((0^2)/y^2),y},"2 0 0"],{y,0.1,10},PlotStyle->Black,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(7)+((0^2)/y^2),y},"2 1 0"],{y,0.1,10},PlotStyle->Gray,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(12)+((0^2)/y^2),y},"2 2 0"],{y,0.1,10},PlotStyle->Darker[Brown],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(9)+((0^2)/y^2),y},"3 0 0"],{y,0.1,10},PlotStyle->Brown,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(13)+((0^2)/y^2),y},"3 1 0"],{y,0.1,10},PlotStyle->Lighter[Brown],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(19)+((0^2)/y^2),y},"3 2 0"],{y,0.1,10},PlotStyle->Darker[Purple],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(16)+((0^2)/y^2),y},"4 0 0"],{y,0.1,10},PlotStyle->Purple,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(27)+((0^2)/y^2),y},"3 3 0"],{y,0.1,10},PlotStyle->Lighter[Purple],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(28)+((0^2)/y^2),y},"4 2 0"],{y,0.1,10},PlotStyle->Lighter[Blue],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(0)+((1^2)/y^2),y},"0 0 1"],{y,0.1,10},PlotStyle->Pink,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(0)+((2^2)/y^2),y},"0 0 2"],{y,0.1,10},PlotStyle->Darker[Pink],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(1)+((1^2)/y^2),y},"1 0 1"],{y,0.1,10},PlotStyle->Darker[Magenta],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(3)+((1^2)/y^2),y},"1 1 1"],{y,0.1,10},PlotStyle->Magenta,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(3)+((2^2)/y^2),y},"1 1 2"],{y,0.1,10},PlotStyle->Darker[Red],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(1)+((3^2)/y^2),y},"1 0 3"],{y,0.1,10},PlotStyle->Red,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(4)+((2^2)/y^2),y},"2 0 2"],{y,0.1,10},PlotStyle->Darker[Orange],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(7)+((1^2)/y^2),y},"1 2 1"],{y,0.1,10},PlotStyle->Orange,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(7)+((1^2)/y^2),y},"1 2 2"],{y,0.1,10},PlotStyle->Lighter[Orange],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(7)+((3^2)/y^2),y},"1 2 3"],{y,0.1,10},PlotStyle->Yellow,PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(4)+((4^2)/y^2),y},"2 0 4"],{y,0.1,10},PlotStyle->Darker[Yellow],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ParametricPlot[Tooltip[{(4/3)*(9)+((1^2)/y^2),y},"3 0 1"],{y,0.1,10},PlotStyle->Lighter[Green],PlotRange->{{0,20},{0,Max[{a+2,b+2}]}}],
ImageSize->size],
{{a,1,"\!\(\*SubscriptBox[\"a dla Cu α\", \"1\"]\)"},0,3,0.005},{{b,0.9,"\!\(\*SubscriptBox[\"a dla Cu β\", \"1\"]\)"},0,3,0.005},{{size,1000,"Skalowanie"},500,3000,500},Text[""],Text[Style["Wskaźnikowane piki",26]],Grid[Table[{" nr piku",l,"  2θ =",Lista[[l]]," "},{l,1,iloscpozycji}],Alignment->Left,BaselinePosition->Center, Frame->True],LabelStyle->Directive[Black, Large],ControlPlacement->Left];

Obraz=TabView[{"cP"->cP,"cF"->cF,"cI"->cI,"tP"->tP,"hP"->hP},2];(*pozwala na swobodną zmianę rodzaju wskaźnikowanej struktury*)

Ilustracja graficzna

Wskaźnikowanie wykonuje się przesuwając markery suwakami po lewej stronie, aby pokryły się w jak największym stopniu z liniami na obrazie. Skalowanie ułatwia precyzyjniejsze ustawienie wskaźników.
Po lewej stronie znajduje się także lista refleksów, odpowiadających markerom, numerowanych na rysunku od lewej strony.
Poniżej wynik wskaźnikowania dla NaCl.
Wyznaczona stała sieciowa dla długości fali  1.5418 nm wynosi 5.63, co jest zgodne z wartością tablicową.

Obraz