Wolfram Mathematica v chemii

Výpočetní nástroj

Použití WM místo kalkulačky.

Výhody:

snadná změna zadání příkladu

rychlý přepočet

postupné zobrazení zadání,řešení, výsledku

odpadá psaní na tabuli, diktování

Nevýhody:

nezvyklé zobrazení

chybí jednotky

někdy je třeba ukázat jiný postup

Ukázky

Hmotnostní zlomek látky

Příklad 1 zadání

Kolik g vody je třeba přidat ke 12 g kyseliny octové tak, aby vznikl 8 % roztok?

Řešení příkladu1

Solve[0.08==(12/(12+(Subscript[m, v])))]

Látková koncentrace roztoku

Příklad 2 zadání

Určete látkovou koncentraci kys. sírové v jejím vodném roztoku, který vznikl ředěním 4 g 97.2% kyseliny ve vodě na objem 0.250 (dm^3).

Příklad 2 řešení

a) stanovení hmotnosti 100% kyseliny
4 g ... ... .97.2 %
x g ... ... ... 100 %
POZOR!!!! Jedná se o nepřímou úměrnost! Čím koncentrovanější kyselina, tím méně je jí třeba!!!!

Clear[x]

x=(4*97.2)/100

b) výpočet n

Clear[n,m,M]

n=m/M

m=3.89;M=ChemicalData["H2SO4","MolecularWeight"];n

c) výpočet c

Clear[c,n,V]

c=n/V

n=0.04;V=0.250;c

Databáze

WM poskytuje obrovské množství údajů o prvcích, sloučeninách, jejich vlastnostech a struktuře.

ElementData

ElementData["Properties"]

ElementData["Gas"]

ElementData["Carbon","AtomicWeight"]

ElementData["Gold","AtomicNumber"]

ElementData[79,"Abbreviation"]

ElementData[79,"Name"]

ElementData["Oxygen","KnownIsotopes"]

ElementData["Pb","Phase"]

ElementData["Sodium","Density"]

ElementData["I","IsotopeAbundances"]

ElementData["C","IsotopeAbundances"]

ChemicalData

ChemicalData["Classes"]

ChemicalData["Trinitrotoluene","ColorStructureDiagram"]

ChemicalData["H3PO4","MoleculePlot"]

ChemicalData["NaOH","MolecularWeight"]

ChemicalData["H2SO4","Density"]

ChemicalData["H2SO4","Density","Units"]

IsotopeData

IsotopeData[1]

IsotopeData["Potassium"]

IsotopeData[{"Uranium",238},"AtomicNumber"]

IsotopeData[{92,238},"NeutronNumber"]

ProteinData

ProteinData["A2M","MoleculePlot"]

ProteinData["NAT1","MolecularWeight"]

ProteinData["NAT1","Sequence"]

Tabulky

Získané údaje pro více látek je vhodné předkládat v tabulkách nebo seznamech. Ty mohou sloužit jako zadání úkolů, řešení, podpora výkladu.

Ukázky

Určete, zda je prvek plynný

Zadání

a=11;b=40

Grid[{Table[ElementData[z,"Abbreviation"],{z,a,b,3}],Table[z,{z,a,b,3}]},Frame->All]

Řešení

a=11;b=40

Grid[{Table[ElementData[z,"Abbreviation"],{z,a,b,3}],Table[z,{z,a,b,3}],Table[ElementData[z,"Gas"],{z,a,b,3}]},Frame->All,Background->{None,{3->Yellow}}]

Přehled kyselin

kyseliny={"HCl","HF","H2SO4","HNO3","H3PO4","H2SO3","H2CO3"}

GraphicsGrid[Prepend[Outer[ChemicalData,kyseliny,{"Name","MolecularFormulaDisplay","CHStructureDiagram","MoleculePlot","MolecularWeight","Density"}],{"Název","Molekulový vzorec","Strukturní vzorec","Prostorový vzorec","Molekulová hmotnost","Hustota"}],ImageSize->Medium,Frame->All,Background->{None,{{{LightPurple,White}},{1->Yellow}}}]

Kyselina stearová

sa={"StearicAcid"}

ta={Table[ChemicalData[z,"Name"],{z,sa}],Table[ChemicalData[z,"MolecularFormulaDisplay"],{z,sa}],Table[ChemicalData[z,"CHStructureDiagram"],{z,sa}],Table[ChemicalData[z,"Density"],{z,sa}],Table[ChemicalData[z,"Phase"],{z,sa}]};

Grid[MapThread[Prepend,{ta,{"Název","Molekulový vzorec","Strukturní vzorec","Hustota","Skupenství"}}],Frame->All]

Grafy

Využití grafů je od výkladu po zajímavosti. Většina vytvořených grafů je interaktivní, 2 D s popisy os a legendou. Lze vytvářet i 3 D grafy, upravovat poměr os, zvýraznit body, použít vodicí čáry, ...

Ukázky

Porovnání teploty tání halogenů a alkalických kovů

ttdataalk=Table[{{ElementData[z,"AtomicNumber"],ElementData[z,"MeltingPoint"]},ElementData[z,"Name"]},{z,ElementData["AlkaliMetal"]}];ttdatahal=Table[{{ElementData[z,"AtomicNumber"],ElementData[z,"MeltingPoint"]},ElementData[z,"Name"]},{z,ElementData["Halogen"]}];

ListPlot[{(Tooltip[#[[1]],StringJoin[ToString[#[[1]]//First],", ",#[[2]]," (",ToString[#[[1]]//Last],")"]])&/@ttdatahal,(Tooltip[#[[1]],StringJoin[ToString[#[[1]]//First],", ",#[[2]]," (",ToString[#[[1]]//Last],")"]])&/@ttdataalk},ImageSize->500,Joined->True,PlotMarkers->Automatic,PlotStyle->{Directive[Orange,Thick],Directive[Blue,Thick]},MeshStyle->Automatic,AxesLabel->{"Protonové číslo","Teplota tání"},PlotLegends->{"halogeny","alkalické kovy"}]

Které prvky patří mezi nejdéle známé?

objev=Table[{{z,ElementData[z,"DiscoveryYear"]},ElementData[z,"Abbreviation"]},{z,1,120}];

ListPlot[(Tooltip[#[[1]],StringJoin[ToString[#[[1]]//First],", ",#[[2]]," (",ToString[#[[1]]//Last],")"]])&/@objev,Filling->Axis,AxesLabel->{"Protonove cislo","Rok objevení"},ImageSize->500,PlotRange->Full,AxesOrigin->{0,0}]

Křivka rozpustnosti NaCl

rozpdata={{0,26.28},{10,26.32},{20,26.39},{30,26.51},{40,26.68},{50,26.86},{60,27.07},{70,27.3},{80,27.55},{90,27.81},{100,28.15}}

ListLinePlot[rozpdata,AxesLabel->{"Teplota","Množství látky"},MeshStyle->Blue,ImageSize->500,PlotStyle->Directive[RGBColor[0,1,0],AbsoluteThickness[2]],PlotMarkers->Automatic,PlotLegends->"Rozpustnost NaCl"]

ListLinePlot[rozpdata,AxesLabel->{"Teplota","Množství látky"},MeshStyle->Blue,ImageSize->500,PlotStyle->Directive[RGBColor[0,1,0],AbsoluteThickness[2]],PlotMarkers->Automatic,PlotLegends->"Rozpustnost NaCl",AxesOrigin->{0,0}]

Křivka rozpustnosti KN(Subscript[O, 3])

rodata=Transpose[{{0,10,20,30,40,50,60,70,80,90,100},{11.6,17.7,24.1,31.5,39.1,46.2,52.5,58.0,62.8,67.1,71.1}}]

ListLinePlot[rodata,AxesLabel->{"Teplota","Množství látky"},MeshStyle->Blue,ImageSize->500,PlotStyle->Directive[RGBColor[1,1,0],AbsoluteThickness[2]],PlotMarkers->Automatic,PlotLegends->"Rozpustnost (Subscript[KNO, 3])"]

Manipulate

Vhodné spíše pro samostatnou práci studentů, shrnuje velké množství dat do jednoho místa. Někdy je třeba pomoci se žákům zorientovat.

Ukázky

Vlastnosti kovů

Skupensví a barva kovů

kskupenstvidata=Table[{z,ElementData[z,"AtomicNumber"],ElementData[z,"AtomicWeight"],ElementData[z,"Phase"],ElementData[z,"Color"]},{z,ElementData["Metal"]}];

a=ListPlot[(Tooltip[{#[[2]],#[[3]]},StringJoin[#[[2]]//ToString,", ",#[[1]],", ",#[[4]]//ToString,", ",#[[5]]//ToString]])&/@kskupenstvidata,Filling->Axis,AxesLabel->{"Protonové číslo","Atomová hmotnost"},ImageSize->500,PlotRange->Full,AxesOrigin->{0,0}];

Hustota kovů

khustotadata=Table[{z,ElementData[z,"AtomicNumber"],ElementData[z,"Density"],ElementData[z,"LiquidDensity"]},{z,ElementData["Metal"]}];

b=ListPlot[(Tooltip[{#[[2]],#[[3]]},StringJoin[#[[2]]//ToString,", ",#[[1]],", ",#[[3]]//ToString,", ","hustota  taveniny" #[[4]]//ToString]])&/@khustotadata,Filling->Axis,AxesLabel->{"Protonové číslo","Hustota"},ImageSize->500,PlotRange->Full,AxesOrigin->{0,0}];

Tvrdost kovů

ktvrdostdata=Table[{z,ElementData[z,"AtomicNumber"],ElementData[z,"MohsHardness"]},{z,ElementData["Metal"]}];

c=ListPlot[(Tooltip[{#[[2]],#[[3]]},StringJoin[#[[2]]//ToString,", ",#[[1]],", ",#[[3]]//ToString]])&/@ktvrdostdata,Filling->Axis,AxesLabel->{"Protonové číslo","Tvrdost"},ImageSize->500,PlotRange->Full,AxesOrigin->{0,0}];

Tepelná vodivost kovů

kvodivostdata=Table[{z,ElementData[z,"AtomicNumber"],ElementData[z,"ThermalConductivity" ]},{z,ElementData["Metal"]}];

d=ListPlot[(Tooltip[{#[[2]],#[[3]]},StringJoin[#[[2]]//ToString,", ",#[[1]],", ",#[[3]]//ToString]])&/@kvodivostdata,Filling->Axis,AxesLabel->{"Protonové číslo","Tepelná vodivost"},ImageSize->500,PlotRange->Full,AxesOrigin->{0,0}];

Teplota varu kovů

kvardata=Table[{z,ElementData[z,"AtomicNumber"],ElementData[z,"BoilingPoint" ]},{z,ElementData["Metal"]}];

e=ListPlot[(Tooltip[{#[[2]],#[[3]]},StringJoin[#[[2]]//ToString,", ",#[[1]],", ",#[[3]]//ToString]])&/@kvardata,Filling->Axis,AxesLabel->{"Protonové číslo","Teplota varu"},ImageSize->500,PlotRange->Full,AxesOrigin->{0,0}];

Teplota tání kovů

ktanidata=Table[{z,ElementData[z,"AtomicNumber"],ElementData[z,"MeltingPoint" ]},{z,ElementData["Metal"]}];

f=ListPlot[(Tooltip[{#[[2]],#[[3]]},StringJoin[#[[2]]//ToString,", ",#[[1]],", ",#[[3]]//ToString]])&/@ktanidata,Filling->Axis,AxesLabel->{"Protonové číslo","Teplota tání"},ImageSize->500,PlotRange->Full,AxesOrigin->{0,0}];

Manipulate

grafy = {{a, "Skupenství a barva"}, {b, "Hustota"}, {c, "Tvrdost"}, {d, "Tepelná vodivost"}, {e, "Teplota varu"}, {f, "Teplota tání"}}; Manipulate[grafy[[l]] // First, {{l, 1, "Výběr vlastností"}, Table[p -> grafy[[p]][[2]], {p, 1, 6, 1}], ControlType -> PopupMenu}]

Manipulate Stupnice pH

Clear[a]

pHfunkce[a_]:=-Log10[10^a]

pHcolorsHex={"b20000","f23f00","f28f00","f2ab00","f2d200","f2ff00","a7a722","80a722","599050","58827f","588cb7","586eb7","003E63","00315C"}

pHRGB=Table[((FromDigits[#,16])/255.)&/@a,{a,(StringTake[#,{{1,2},{3,4},{5,6}}])&/@pHcolorsHex}]

Manipulate[Column[{"c[(Subscript[H, 3])(SuperPlus[O])]: "<>((10.^a)//TraditionalForm//ToString),"pH: "<>ToString[pHfunkce[a]],"Roztok: "<>ToString[If[pHfunkce[a]<7,"kyselý",If[pHfunkce[a]>7,"zásaditý","neutrální"]]],Graphics[{RGBColor@@pHRGB[[-a]],Rectangle[]},ImageSize->250]},Center],{{a,-7,"koncentrace [(Subscript[H, 3])(SuperPlus[O])]"},-1,-14,1,Appearance->"Open"},SaveDefinitions->True,ControlPlacement->Top]

Grafické znázornění hmotnostního zlomku

Manipulate[Column[{ToString[ms/(ms+mr)//N],Show[Plot[x/(x+mr),{x,0,100},PlotRange->{0,1},AxesLabel->{"(Subscript[m, s])","w"},PlotStyle->{Orange,Thick}],ListPlot[{{ms,ms/(ms+mr)}},PlotStyle->Directive[PointSize[Large],Purple]]],Show[Plot[ms/(ms+x),{x,0,100},PlotRange->{0,1},AxesLabel->{"(Subscript[m, r])","w"},PlotStyle->{Magenta,Thick}],ListPlot[{{mr,ms/(ms+mr)}},PlotStyle->Directive[PointSize[Large],Purple]]]}],{{ms,60,"hmotnost rozpouštěné látky, (Subscript[m, s])"},1,100},{{mr,60,"hmotnost rozpouštědla, (Subscript[m, r])"},1,100}]

Shrnutí

KLADY vizualizace dat, zrychlení práce, snazší pochopení?, oživení výuky, propojení s ICT, M, zajímavosti, podpoří šikovné studenty, jiný pohled na chemii

ZÁPORY spousta práce, časově náročná práce ve WM, vymýšlení příkladů vhodných do WM - omezení

HLAVNÍ PŘÍKAZY

tabulky, seznamy 	Table[výraz,{proměnná,start,stop}]

dynamické modely	 Manipulate[výraz,{parametr,min,max,krok}]

vykreslování funkcí	 Plot[funkce, {x,(Subscript[x, min]) , (Subscript[x, max])}]