Wolfram Mathematica

Zdeněk Buk

zdenek.buk@fel.cvut.cz
Katedra počítačů, FEL, ČVUT

17.9.2014, Jihlava

Úvod

Co je Mathematica?

Základní pojmy

Kernel, FrontEnd

Notebook

Buňka

vstupní, výstupní, textová, grafická, atd.

hierarchické členění dokumentu

Ukázka:

Nadpis kapitoly

Zde je text kapitoly...

Podkapitola

Toto je ukázkový text ukázkové podkapitoly ukázkové kapitoly ukázkového dokumentu.

f(x)=(1/(1+(e^(-λx))))

Do technického textu se často hodí vkládat různé vzorce, výše uvedený je ukázkou císlovaného matematického výrazu. Text a ostatní prvky dokumentu lze neomezeně kombinovat a hierarchicky členit,  lze ho samozřejmě prokládat také výpočty :

Solve[a x^2+b x+c==0,x]

Expand[(a+b)^2]

Ukázka jednoduché vizualizace :

Plot[{x,x^2,x^3},{x,-1,1},PlotStyle->Thick]

Druhá podkapitola

Toto je text druhé podkapitoly pro ukázku hierarchického členění dokumentu. Text lze prokládat výpočty a grafy, ale tyto nemusí být pouze statické. Lze vytvářet plně interaktivní dokumenty...

Manipulate[Plot[{Sin[x],Sin[a x+b]},{x, 0,2π},PlotStyle->Thick],{{a,1,"Frekvence"},1,8},{{b,0,"Fáze"},0,2π}]

Princip práce se systémem Mathematica

Interaktivní dokumenty

Kombinace textu

výpočtů

grafiky, atd.

Ukázka práce

1+1

Expand[(a+b)^2]

Plot[Sin[x],{x,0,2π}]

K čemu se dá využít?

Výpočty

Symbolické výpočty

Numerické výpočty

Neomezená přesnost

1/10

2π

N[π,100]

100!

1.23456`10

2.3456`4

1.23456`10+2.3456`4

Simplify[Sin[x]^2+Cos[x]^2]

Expand[(1+x)^3]

Vizualizace

Funkce

Plot, Plot3D

Plot[Sin[x],{x,0,2π}]

Plot3D[Sin[x+y],{x,0,2π},{y,0,2π}]

Plot3D[{Sin[x+y],Sin[x+y+π]},{x,0,2π},{y,0,2π}]

DensityPlot, ContourPlot

ContourPlot[Sin[x^2+y^2],{x,-π,π},{y,-π,π}]

DensityPlot[Sin[x^2+y^2],{x,-π,π},{y,-π,π},Mesh->10]

ParametricPlot, ParametricPlot3D

ParametricPlot[{Cos[t],Sin[t]},{t,0,2π}]

ParametricPlot[{Cos[t]t,Sin[t]t},{t,0,4π}]

ParametricPlot3D[{Cos[t],Sin[t],t/10},{t,0,8π}]

ParametricPlot3D[{Sin[u]Sin[v],Sin[u]Cos[v],Cos[u]},{u,0,π},{v,0,2π}]

StreamPlot, VectorPlot

StreamPlot[{x,y},{x,-3,3},{y,-3,3}]

VectorPlot[{x,y},{x,-3,3},{y,-3,3}]

Data

ListPlot, ListPlot3D

ListPlot[Prime[Range[25]],Filling->Axis]

ListLinePlot[Prime[Range[25]],Filling->Axis]

ListPointPlot3D[Table[Sin[j^2+i],{i,0,3,0.2},{j,0,3,0.2}],Filling->Bottom,PlotStyle->PointSize[Large]]

ArrayPlot, MatrixPlot

SeedRandom[1]
ArrayPlot[RandomReal[{0,1},{3,5}],Mesh->True]

SeedRandom[1]
MatrixPlot[RandomReal[{0,1},{3,5}],Mesh->True]

BarChart, BarChart3D

BarChart[{{1,2,3},{1,3,2},{5,2}},ChartLegends->{"a","b","c"}]

BarChart3D[Range[8],ChartStyle->"DarkRainbow"]

PieChart

PieChart[{{1,2,3},{1,3,2},{5,2}},ChartLegends->{"a","b","c"}]

PieChart3D[{{1,2,3},{1,3,2},{5,2}},ChartLegends->{"a","b","c"}]

PieChart3D[Range[5]]

Histogram, Histogram3D

Histogram[{
RandomVariate[NormalDistribution[0,1],1000],
RandomVariate[NormalDistribution[3,1/2],1000]
}]

Histogram3D[{
RandomVariate[NormalDistribution[0,1],{1000,2}],
RandomVariate[NormalDistribution[3,1/2],{1000,2}]
}]

BoxWhiskerChart, DistributionChart

BoxWhiskerChart[RandomVariate[NormalDistribution[0,1],1000]]

DistributionChart[RandomVariate[NormalDistribution[0,1],1000]]

DistributionChart[RandomVariate[NormalDistribution[0,1],1000],ChartElementFunction->"HistogramDensity"]

Struktury

Graph[{1->2,2->3,3->1,1->1}]

TreeGraph[{1\[DirectedEdge]2,1\[DirectedEdge]3,1\[DirectedEdge]4,4\[DirectedEdge]5,4\[DirectedEdge]6},EdgeStyle->Arrowheads[.08]]

RandomGraph[WattsStrogatzGraphDistribution[30,0.2,2]]

CommunityGraphPlot[%,FindGraphCommunities[%]]

Speciální vizualizace

AngularGauge[42,{0,100}]

VerticalGauge[42,{0,100}]

HorizontalGauge[42,{0,100}]

BulletGauge[60,88,{0,20,40,60,80,100}]

ClockGauge[]

Import/export/zpracování dat

data={{"X","Y"},{1,2},{2,4},{3,4},{4,7},{5,8}};

TableForm[data]

TableView[data]

Export["~/Desktop/data.xls",data]

data=Rest[First[Import["~/Desktop/data.xls"]]]

g=ListPlot[data]

lm=LinearModelFit[data,x,x]

Show[{g,Plot[lm[x],{x,1,Length[data]+1}]}]

$ImportFormats

$ExportFormats

CountryData["CzechRepublic","Shape"]

ChemicalData["Caffeine"]

ChemicalData["Caffeine","MoleculePlot"]

DateListPlot[WeatherData["Jihlava","Temperature",{2010}]]

FinancialData["AAPL"]

DateListPlot[FinancialData["AAPL","Jan. 1, 2005"]]

FinancialData["EUR/CZK"]

Prezentace/publikace

Jednoduché ukázky…

Základní výpočty

Expand[(a+b)^10]

FullSimplify[(a^10)+10 (a^9) b+45 (a^8) (b^2)+120 (a^7) (b^3)+210 (a^6) (b^4)+252 (a^5) (b^5)+210 (a^4) (b^6)+120 (a^3) (b^7)+45 (a^2) (b^8)+10 a (b^9)+(b^10)]

Solve[a (x^2)+b x+c==0,x]

Solve[2 (x^2)+x-1==0,x]

Plot[2 (x^2)+x-1,{x,-2,2}]

solution[a_,b_,c_]:=Solve[a (x^2)+b x+c==0,x];
plot[a_,b_,c_]:=Plot[a (x^2)+b x+c,{x,-2,2}];

SeedRandom[123]
Grid[{Text[Style[TraditionalForm[#[[1]](x^2)+#[[2]]x+#[[3]]==0],20]],Grid@solution[Sequence@@#],plot[Sequence@@#]}&/@RandomInteger[{-2,2},{5,3}],Frame->All]

Series[Sin[x],{x,0,20}]

Plot[{Sin[x],N@Normal[Series[Sin[a],{a,0,2}]]/.a->x},{x,-10,10}]

Free-Form Linguistic Input

DateListPlot[%]

Wolfram Alpha

Novinky ve verzi 10

Vizualizace

Grafická témata

Možnost snadného nastavení vzhledu grafu

Plot[{Sin[x],Sin[2x],Sin[3x]},{x,0,2π}]

Plot[{Sin[x],Sin[2x],Sin[3x]},{x,0,2π},PlotTheme->"Business"]

Plot[{Sin[x],Sin[2x],Sin[3x]},{x,0,2π},PlotTheme->"Monochrome"]

Plot[{Sin[x],Sin[2x],Sin[3x]},{x,0,2π},PlotTheme->"Marketing"]

Plot[{Sin[x],Sin[2x],Sin[3x]},{x,0,2π},PlotTheme->{"Marketing","LargeLabels"}]

Plot[{Sin[x],Sin[2x],Sin[3x]},{x,0,2π},PlotTheme->{"Detailed","LargeLabels"}]

Plot3D[Sin[x+y^2],{x,-3,3},{y,-2,2},PlotTheme->{"Business","LargeLabels"}]

Nové vizualizační funkce

NumberLinePlot

NumberLinePlot[Prime[Range[10]]]

NumberLinePlot[Interval[{0,1}]]

NumberLinePlot[Interval[{0, ∞}]]

MandelbrotSetPlot

MandelbrotSetPlot[]

MandelbrotSetPlot[{-0.65+0.47I,-0.4+0.72I},MaxIterations->200,ColorFunction->"RedBlueTones"]

JuliaSetPlot

JuliaSetPlot[-1]

JuliaSetPlot[0.365-0.37I,PlotLegends->Automatic]

Entity (Free-Form Linguistic Input)

data=(Entity["Apollo 11", Entity["MannedSpaceMission","Apollo11"], "Entity[\"MannedSpaceMission\", \"Apollo11\"]", "manned space mission"])

FullForm[data]

data["Crew"]

data["Properties"]

data["LunarLandingDate"]

data["Image"]

LinguisticAssistant["Properties"]

LinguisticAssistant["Image"]

LinguisticAssistant["Image"]

Klasifikace a predikce

Funkce Classify

trainingset = {1->"A",2->"A",3.5->"B",4->"B"};

c=Classify[trainingset]

c[2.6]

c[2.6,"Probabilities"]

Plot[c[x,{"Probability","A"}],{x,0,5}]

Ukázka na reálných datech (Titanic)

dataset = ExampleData[{"MachineLearning","Titanic"},"Data"];

RandomSample[dataset, 10] // TableForm

c=Classify[dataset,Method-> "LogisticRegression"]

c[{"3rd", 10, "female"},{"Probability","survived"}]

p[class_,age_,sex_]:=c[{class,age,sex},{"Probability","survived"}];

Plot[{p["1st",x,"female"],p["3rd",x,"female"],p["1st",x,"male"],p["3rd",x,"male"]}, {x,0,100},PlotLegends->{"female, 1st class", "female, 3rd class", "male, 1st class", "male, 3rd class"}, Frame->True,FrameLabel-> {"Age (years)", "Survival probability"}]

Ukázka rozpoznávání číslic

cl=Classify[{->0,->0,->0,->1,->1,->1,->2,->2,->2,->3,->3,->3,->4,->4,->4,->5,->5,->5,->6,->6,->6,->7,->7,->7,->8,->8,->8,->9,->9,->9}];
Dynamic[{i=ImageCrop@ImageClip[ImageAdjust[img=CurrentImage[]],{0,0.3},{0,1}];img,i,cl[i]}]

Funkce Predict

trainingset = {1->1.3,2->2.4,3->6.4,4->10.1};

p=Predict[trainingset]

Show[Plot[p[x], {x,0,5}],ListPlot[List @@@ trainingset]]

Predikce na reálných datech (Boston Housing Data)

p=Predict[trainingData=ExampleData[{"MachineLearning","BostonHomes"},"TrainingData"], PerformanceGoal->"Quality"]

pm=PredictorMeasurements[p,ExampleData[{"MachineLearning","BostonHomes"},"TestData"]]

pm["ComparisonPlot"]

PredictorInformation[p]

Použití ve výuce

Wolfram Alpha

Demonstration Projects

Ukázky

Binární vs. Grayův kód

Kometa

Duha

Pohyb fotonů

Elementy oběžných drah

Mapy

Příprava interaktivních prezentací

Pokročilejší ukázky

Jak my používáme systém Mathematica ve výuce

Ukázka programování interaktivní aplikace

Wolfram Symbolic Transfer Protocol