({{}})

({{, ({{"Lezione 2"}, {"Mathematica e didattica"}, {Crescenzio Gallo - Università di Foggia
crescenzio.gallo@unifg.it}})}})

Note:

Il materiale visualizzato durante questo seminario è disponibile per il download all'indirizzo http://www.crescenziogallo.it/unifg/seminario-mathematica-2014/

Il materiale utilizzato è tratto dai webinar pubblicati da Adalta e prodotti dal dott. Roberto Cavaliere (Mathematica Technical Sales Manager, r.cavaliere@adalta.it)

12-26 Giugno 2014

Agenda

Mathematica e didattica

Cosa abbiamo a disposizione

Come possiamo preparare il materiale

Quali principi ci supportanto e quali vantaggi

Come rendere disponibile ciò che realizziamo

Conclusioni

Vantaggi

Mathematica e didattica

Cosa abbiamo a disposizione

La componente storica: il calcolo numerico, simbolico e grafico

Ambiente pluridisciplinare per una didattica avanzata

Come possiamo preparare il materiale

Interfacce programmabili e personalizzabili

Semplice editing di testi scientifici e personalizzazione di grafici

Come rendere disponibile ciò che realizziamo

Computable Document Format

Mathematica e didattica - La componente storica: il calcolo numerico, simbolico e grafico

Mathematica da oltre venti anni rappresenta uno degli strumenti software maggiormente utilizzati in ambito di ricerca di base ed applicata in discipline quali la matematica, la fisica, l’ingegneria, l’economia, la statistica, ecc. 
La sua caratteristica di sistema ibrido numerico-simbolico gli permette di essere potente ma flessibile. La grafica completamente riscritta e ottimizzata dalla versione 6, ora offre una qualità elevatissima ed un’ampia gamma di funzioni dedicate.

Mathematica e didattica - Ambiente pluridisciplinare per una didattica avanzata

Mathematica dispone di funzioni di calcolo adatte a qualsiasi contesto tecnico scientifico, ad esempio Statistica, Ingegneria, Matematica, Biologia, Fisica, Chimica, ecc. Pertanto risulta evidente come si possa sfruttare tale software per l’insegnamento di una qualsiasi disciplina scientifica. Inoltre, grazie a set di funzioni dedicate a specifiche aree tematiche, quali ad esempio Business Graphics e Finance, Geographic Information Systems (GIS), Image Processing, High Performance Computing, Cuda/OpenCL-Link, Control Systems, Wavelet Analysis, Statistics nonchè la presenza di banche dati specialistiche (FinancialData, ChemicalData, AstronomicalData, GenomeData e molte altre) è possibile anche approfondire tali tematiche per una didattica avanzata.

Infine, la disponibilità di altre funzionalità quali ad esempio l’Import/Export di numerosi formati standard, la gestione delle stringhe, l’integrazione con Wolfram|Alpha, rendono Mathematica uno strumento idoneo ed innovativo anche per la didattica in discipline non necessariamente tecnico-scientifiche.

Mathematica e didattica - Ambiente pluridisciplinare per una didattica avanzata

ChemicalData

ChemicalData fornisce dati relativi a circa 44.000 compositi chimici

La formula della caffeina

ChemicalData["Caffeine"]

La sua struttura molecolare in 3D

ChemicalData["Caffeine", "MoleculePlot"]

Una serie di formule

GraphicsGrid[Partition[Show[ChemicalData[#],ImageSize->Tiny]&/@Take[ChemicalData["Amines"],16],4],Frame->All]

Una tabella formattata

vals = Table[ChemicalData[#, prop], {prop, {"FormulaDisplay", "MolecularWeight", "AlternateNames"}}] & /@ ChemicalData[{"Sulfur", "Compound"}];
Text[Grid[Prepend[vals[[1 ;; 10]], {"Chemical", "Molecular weight", "Alternate Names"}], Frame -> All, Background -> {None, {{{LightBlue, White}}, {1 -> LightYellow}}}, Alignment -> Left]]

Una applicazione importante in pochi step: il rapporto tra densità e punto di ebollizione per le varie classi di compositi

Manipulate[ListPlot[Table[{ChemicalData[chem,"Density"],ChemicalData[chem,"BoilingPoint"]},{chem,ChemicalData[grp]}],AxesLabel->{"density","boiling point"},ImageSize->Large],{{grp,"Alkanes","chemical class"},ChemicalData["Classes"]}]

AstronomicalData

La densità dei pianeti

Text[Grid[{AstronomicalData[#,"Name"],AstronomicalData[#,"Density"]}&/@AstronomicalData["Planet"],Frame->All,Background->LightYellow]]

Computa e visualizza la distribuzione dei pianeti minori a varie distanze dal sole

asteroidCount=BinCounts[Sort@Cases[(AstronomicalData[#,"SemimajorAxis"]/149597870691)&/@Join[AstronomicalData["InnerMainBeltAsteroid"],AstronomicalData["MainBeltAsteroid"],AstronomicalData["OuterMainBeltAsteroid"]],x_?NumberQ],{2,3.5,.005}];

ListPlot[asteroidCount,Joined->True,Filling->0,Mesh->All,ImageSize->Large,Ticks->{Table[{Rescale[x,{2,3.5},{0,301}],x},{x,2,3.5,.2}],Automatic}]

CountryData

Grafico della popolazione in rapporto con l’area del paese

ListLogLogPlot[Tooltip[{CountryData[#,"Area"],CountryData[#,"Population"]},CountryData[#,"Name"]]&/@CountryData["Countries"],ImageSize->Large]

I primi 20 paesi per estensione del territorio

Last/@Take[Reverse[Sort[{CountryData[#,"Area"],#}&/@CountryData[]]],20]

Text[Grid[Prepend[{CountryData[#,"Name"],CountryData[#,"Area"],CountryData[#,"Population"]}&/@Take[%,5],{"","area","population"}],Frame->All,Background->{None,{LightBlue,{LightYellow}}}]]

Tasso di alfabetizzazione in alcuni continenti (Africa, Europa e Asia)

Graphics[{EdgeForm[Gray],Catch[ColorData["Warm"][CountryData[#,"LiteracyFraction"]/._Missing:>Throw[White]]],CountryData[#,"SchematicPolygon"]}&/@CountryData["Africa"]]

Graphics[{EdgeForm[Gray],Catch[ColorData["Warm"][CountryData[#,"LiteracyFraction"]/._Missing:>Throw[White]]],CountryData[#,"SchematicPolygon"]}&/@CountryData["Europe"]]

Graphics[{EdgeForm[Gray],Catch[ColorData["Warm"][CountryData[#,"LiteracyFraction"]/._Missing:>Throw[White]]],CountryData[#,"SchematicPolygon"]}&/@CountryData["Asia"]]

Il grafico dei paesi confinanti in Sud America

GraphPlot[Flatten[Thread[#->CountryData[#,"BorderingCountries"]]&/@CountryData["SouthAmerica"]],VertexLabeling->True]

Una mappa con i nomi di tutte le nazioni

Graphics[{LightGreen,EdgeForm[Gray],Tooltip[CountryData[#,"Polygon"],#]&/@CountryData[]}]

Qualcosa in più: collegamenti con altre fonti di informazioni, ad esempio Wikipedia

<<WorldPlot`

africa = WorldPlot[{Africa,RandomColors}]

africa/. Tooltip[polygon_, name_]:>Tooltip[Hyperlink[Mouseover[polygon,{With[{p=Cases[polygon,_Polygon,∞]},{Black,p}]}],"http://en.wikipedia.org/wiki/"<>name],name]

WeatherData

WeatherData fornisce dati meteo in tempo reale da tutte le stazioni del mondo

WeatherData[{"Foggia",5}]

stazione="LIBF";

WeatherData[stazione, "Properties"]

WeatherData[stazione, "Temperature","DateValue"]

DateListPlot[WeatherData[stazione, "MeanTemperature", {{2005,1,1},{2011,9,30}, "Month"}], Joined->True,Filling->Bottom,ImageSize->Large]

DateListPlot[WeatherData[stazione, "Temperature", {{2011,1,1},{2011,6,1}, "Month"}], Joined->True,Filling->Bottom,ImageSize->Large]

min=WeatherData[stazione, "MinTemperature", {{2009, 1, 1}, {2009, 12, 31}, "Day"}];
max=WeatherData[stazione, "MaxTemperature", {{2009, 1, 1}, {2009, 12, 31}, "Day"}];

DateListPlot[{min,max}, Joined->True,Filling->{1->{2}},ImageSize->Large]

DictionaryLookup

Calcolare il numero di parole nel vocabolario che cominciano con ciascuna lettera dell’alfabeto

Length[DictionaryLookup[#~~___]]&/@CharacterRange["a","z"]

ListPlot[%,Filling->Axis]

Proviamo con il vocabolario Italiano (quello incluso in Mathematica)

Length[DictionaryLookup[{"Italian",#~~___}, IgnoreCase->True]]&/@CharacterRange["a","z"]

ListPlot[%,Filling->Axis]

Si noti che non ci sono parole che cominciano per y o Y

DictionaryLookup[{"Italian",("j"|"x"|"y"|"w")~~___}, IgnoreCase->True]

Questi sono i dizionari inclusi in Mathematica

DictionaryLookup[All]

Questo esempio mostra come cercare un termine che inizia con certe lettere, in tutti i dizionari

DictionaryLookup[{All,"molec"~~___}]

DictionaryLookup[{All,"computer"}]

Trovare tutte le parole palindrome

DictionaryLookup[x__/;x===StringReverse[x]]

In Italiano

DictionaryLookup[{"Italian",x__/;x===StringReverse[x]}]

Mathematica e didattica - Ambiente pluridisciplinare per una didattica avanzata

Una particolare sorgente di dati aggiunta in Mathematica 8 è quella fornita dal motore di computazione della conoscenza chiamato WolframAlpha. W|A include oltre dieci trilioni di data sets sugli argomenti più svariati. Ci sono diversi modi per richiamare WolframApha dall’interno di Mathematica, sia da linea di codice sia programmaticamente.

Esempi di domande:

Newton’s second law  
Dini surface
Fermat theorem
nutrition facts cheese
population history in Italy
how far is Milan from Rome
GDP history in Italy
boiling point of sulphur
earthquake in Italy 1980
killer whale vs. blue whale

Funzionalità avanzate

WolframAlpha può essere impiegato anche per imparare a usare Mathematica, infatti offre una serie di funzionalità di interpretazione del linguaggio naturale e conversione in comandi di Mathematica. Ovviamente bisogna usare frasi molto sintetiche e quanto più possibile un linguaggio vicino al linguaggio Mathematica.

Tramite la sequenza di tasti SHIFT + CTRL + = si può far comparire il simbolo  che indica un riquadro dentro il quale possiamo scrivere un’espressione in linguaggio naturale e WolframAlpha tenterà di trasformarla in input di Mathematica. Tale riquadro può essere integrato dentro qualsiasi linea di input di Mathematica.

Rivediamo come si può ottenere una serie di informazioni sulla superfice del Dini.

Il riquadro fornito è completo ma se vogliamo essere in grado di generare noi la figura usando codice Mathematica, possiamo sempre chiedere aiuto a WolframAlpha.

Infine, possiamo aggiungere richieste WolframAlpha interattive direttamente nel codice

LinguisticAssistant

Manipulate[LinguisticAssistant,{f,{Sin,Cos,Tan,Csc,Sec}}]

Allo stesso modo con la sequenza SHIFT + = si può far comparire il simbolo  che indica un input che verrà elaborato da WolframAlpha e se esiste una corrispondente espressione Mathematica verrà fornita altrimenti verrà dato un output in stile WolframAlpha.

Per ulteriori esempi e spunti si può consultare la pagina Wolfram | Alpha for educators

Mathematica e didattica - Ambiente pluridisciplinare per una didattica avanzata

Il principale vantaggio è ancora una volta l’enorme semplicità con cui si possono costruire applicazioni che richiedono dati di qualsiasi natura.

Si provi a fare un breve report sul prodotto interno lordo dei Paesi del G8.
Con Google: “GDP changes of G8 countries, since 1970”

Google search »

Con Mathematica:

TabView[Map[Tooltip[Show[CountryData[#,"Shape"],ImageSize->50],#]->DateListPlot[CountryData[#,{{"GDP"},{1970,2010}}]]&,CountryData["GroupOf8"]]]

e con WolframAlpha:

Mathematica e didattica - Interfacce programmabili e personalizzabili

In pochi e semplici passaggi è possibile creare applicazioni dinamiche ed interattive che permettono al docente ed allo studente di concentrarsi sui concetti e non sulle strutture di supporto.

Come nasce il concetto di computazione dinamica e interattiva

Mathematica ha rivoluzionato il concetto di computazione interattiva e dinamica, introducendo funzioni dinamiche che istantaneamente creano interfacce intuitive e interattive. Le computazioni sottostanti vengono eseguite in run-time.

Integrate[1/(x^3+1),x]

Mathematica e didattica - Interfacce programmabili e personalizzabili

Qualsiasi cosa in Mathematica può essere resa dinamica.

Esempio 1: semplificare l’illustrazione di un concetto

Plot[Sin[x],{x,0,5},PlotRange->{-5,5}]

voglio introdurre il concetto di frequenza

Plot[Sin[3 x],{x,0,5},PlotRange->{-5,5}]

e ampiezza

Plot[3 Sin[3 x],{x,0,5},PlotRange->{-5,5}]

Se voglio rendere più veloce il cambiamento al fine di poter concentrare poi la spiegazione sui due concetti, posso usare il comando Manipulate che mi permette di gestire in automatico i due parametri ampiezza e frequenza

Manipulate[
Plot[amp Sin[freq x],{x,0,5},PlotRange->{-5,5}],
{{amp,1,"Ampiezza"},1,5},
{{freq,1,"Frequenza"},1,5}]

Qualche ulteriore abbellimento

Manipulate[Plot[amp funzione[freq x],{x,0,5},PlotRange->{-5,5},Filling->Axis,PlotStyle->pcol,FillingStyle->fcol],
{{amp,1,"Ampiezza"},1,5},
{{freq,1,"Frequenza"},1,5},{{funzione,Sin,"Funzione"},{Sin,Cos,Tan,Csc,Sec}},{{pcol,Green,"Colore linea"},Red},{{fcol,LightGreen,"Riempimento"},LightRed}]

Mathematica e didattica - Interfacce programmabili e personalizzabili

Esempio 2: un semplice esercizio

Clear[a,b,c,x];
Manipulate[
Panel[Grid[{{"Equazione di partenza ", a (x^2)+b x +c },
{"Discriminante ((b^2)-4 a c)",b^2-4a c},
{"Soluzioni ",Replace[Reduce[a x^2+b x +c ==0,x,Reals], False->"Nessuna"]}}, Alignment->Left]],
{a,-5,5,1},
{b,-5,5,1},
{c,-5,5,1}]

volendo posso impostare un valore di partenza per ciascun parametro/slider

Clear[a,b,c,x];
Manipulate[
Panel[Grid[{{"Equazione di partenza ", a (x^2)+b x +c },
{"Discriminante ((b^2)-4 a c)",b^2-4a c},
{"Soluzioni ",Replace[Reduce[a x^2+b x +c ==0,x,Reals], False->"Nessuna"]}}, Alignment->Left]],
{{a,-1},-5,5,1},
{{b,1},-5,5,1},
{{c,-3},-5,5,1}]

Mathematica e didattica - Interfacce programmabili e personalizzabili

Esempio 3: spiegare il concetto del data fitting

dati=Table[{x,2.5x^2-8x+1.87+RandomReal[{-1,1}]},{x,-2,5,0.05}];

ListPlot[dati]

Manipulate[
Show[
ListPlot[dati],
Plot[a x^2+b x+c,{x,-2,5},PlotStyle->{Thick,Red}],PlotRange->{{-2,5},{-40,40}}],
{a,-10,10},
{b,-10,10},
{c,-10,10}]

Mathematica e didattica - Interfacce programmabili e personalizzabili

Esempio 4: applicazioni complete

Esempi presi dal sito http://demonstrations.wolfram.com 
esempio1

Manipulate[

Module[{h,k,type,label,label2, label3, label4},
h=Rationalize[center[[1]]];
k=Rationalize[center[[2]]];

type=Evaluate[Switch[conictype,
ellipse,(x-h)^2/a^2+(y-k)^2/b^2==1,
parabolax,(y-k)^2==4 p(x-h),
parabolay,(x-h)^2==4 p(y-k),
hyperbolax,(x-h)^2/a^2-(y-k)^2/b^2==1,
hyperbolay,-(x-h)^2/a^2+(y-k)^2/b^2==1
]];

label=Evaluate[Switch[conictype,
ellipse,HoldForm[(x-Style["h",Italic])^2/Style["a",Italic]^2+(y-Style["k",Italic])^2/Style["b",Italic]^2],
parabolax,HoldForm[(y-Style["k",Italic])^2],
parabolay,HoldForm[(x-Style["h",Italic])^2],
hyperbolax,HoldForm[(x-Style["h",Italic])^2/Style["a",Italic]^2-(y-Style["k",Italic])^2/Style["b",Italic]^2],
hyperbolay,HoldForm[(y-Style["k",Italic])^2/Style["b",Italic]^2-(x-Style["h",Italic])^2/Style["a",Italic]^2]
]];

label2=Evaluate[Switch[conictype,
ellipse,1,
parabolax,HoldForm["4" Style["p",Italic](x-Style["h",Italic])],
parabolay,HoldForm["4" Style["p",Italic](y-Style["k",Italic])],
hyperbolax,1,
hyperbolay,1
]];

label3=Evaluate[Switch[conictype,
ellipse,((Style["x",Italic]-h)/a)^2+(Style["y",Italic]-k)^2/(b)^2,
parabolax,(Style["y",Italic]-k)^2,
parabolay,(Style["x",Italic]-h)^2,
hyperbolax,(1/a)^2 (Style["x",Italic]-h)^2-(1/b)^2 (Style["y",Italic]-k)^2,
hyperbolay,-(Style["x",Italic]-h)^2/a^2+(Style["y",Italic]-k)^2/b^2
]];

label4=Evaluate[Switch[conictype,
ellipse,1,
parabolax,4p (Style["x",Italic]-h),
parabolay,4 p (Style["y",Italic]-k),
hyperbolax,1,
hyperbolay,1
]];

If[conictype===ellipse||conictype===hyperbolax ||conictype===hyperbolay,showdirect=False];
If[conictype===ellipse||conictype===parabolax ||conictype===parabolay,showasymp=False];

Show[
ContourPlot[Evaluate[type],{x,-7,7},{y,-7,7},MaxRecursion->2,ImagePadding->0],

If[showasymp&&Or[conictype===hyperbolax,conictype===hyperbolay],Graphics[{Dashing[Medium],Orange,Line[{{{h,k},{1000a+h,1000b+k}},{{h,k},{-1000a+h,1000b+k}},{{h,k},{1000a+h,-1000b+k}},{{h,k},{-1000a+h,-1000b+k}}}]}],{}],

If[showcenter,Graphics[{Red,PointSize[0.02],Point[{h,k}]}],{}],

If[showfoci,
Graphics[{Purple,PointSize[0.02],
Switch[conictype,
hyperbolax,Point[{{Sqrt[a^2+b^2]+h,k},{-Sqrt[a^2+b^2]+h,k}}],
hyperbolay,Point[{{h,Sqrt[a^2+b^2]+k},{h,-Sqrt[a^2+b^2]+k}}],
ellipse,If[a≥b,Point[{{Sqrt[a^2-b^2]+h,k},{-Sqrt[a^2-b^2]+h,k}}],Point[{{h,Sqrt[b^2-a^2]+k},{h,-Sqrt[b^2-a^2]+k}}]],
parabolax,Point[{p+h,k}],parabolay,Point[{h,p+k}]]
}],{}],

If[showdirect,
Graphics[{Darker[Green,0.2],Dashing[Medium],
Switch[conictype,
hyperbolax,Line[{{{-a^2/Sqrt[a^2+b^2]+h,-10},{-a^2/Sqrt[a^2+b^2]+h,10}},{{a^2/Sqrt[a^2+b^2]+h,-10},{a^2/Sqrt[a^2+b^2]+h,10}}}],
hyperbolay,Line[{{{-10,-b^2/Sqrt[a^2+b^2]+k},{10,-b^2/Sqrt[a^2+b^2]+k}},{{-10,b^2/Sqrt[a^2+b^2]+k},{10,b^2/Sqrt[a^2+b^2]+k}}}],
ellipse,If[a≥b,Line[{{{-a^2/Sqrt[a^2-b^2]+h,-10},{-a^2/Sqrt[a^2-b^2]+h,10}},{{a^2/Sqrt[a^2-b^2]+h,-10},{a^2/Sqrt[a^2-b^2]+h,10}}}],Line[{{{-10,-b^2/Sqrt[b^2-a^2]+k},{10,-b^2/Sqrt[b^2-a^2]+k}},{{-10,b^2/Sqrt[b^2-a^2]+k},{10,b^2/Sqrt[b^2-a^2]+k}}}]],
parabolax,Line[{{h-p,-10},{h-p,10}}],parabolay,Line[{{-10,k-p},{10,k-p}}]]
}],{}],

Graphics[Tooltip[{Point[{h,k}]},TraditionalForm[{h,k}]]],

Frame->False,Axes->True,PlotRange->7,GridLines->{Table[{n ,Lighter[Gray,0.7]},{n,-7,7,1}],Table[{n,Lighter[Gray,0.7]},{n,-7,7,1}]},BaseStyle->{12},ImageSize->{465,400},ImagePadding->10,PlotLabel->Grid[{
{Text@Style[TraditionalForm[Evaluate[label]],14,Darker[Blue,0.3]],Text@Style["=",14,Darker[Blue,0.3]],Text@Style[TraditionalForm[Evaluate[label2]],14,Darker[Blue,0.3]]},
{Text@Style[TraditionalForm[Evaluate[label3]],14,Darker[Blue, 0.3]],Text@Style["=",14,Darker[Blue,0.3]],Text@Style[TraditionalForm[Evaluate[label4]],14,Darker[Blue, 0.3]]}},
Alignment->Center]]
],
Row[{Control[{{a,2,"a"},1/5,6,1/10,ControlType->Slider,ImageSize->Tiny,Enabled->Not[Or[conictype===parabolax,conictype===parabolay]],ControlPlacement->Top}],Control[{{b,3,"b"},1/5,6,1/10,ControlType->Slider,ImageSize->Tiny,Enabled->Not[Or[conictype===parabolax,conictype===parabolay]],ControlPlacement->Top}],Control[{{p,1,"p"},-6,6,1/16,ControlType->Slider,ImageSize->Tiny,Enabled->Or[conictype===parabolax,conictype===parabolay],ControlPlacement->Top}]},Spacer[5]],


{{conictype,hyperbolax,""},{ellipse->"ellipse",parabolax->"parabola-x",parabolay->"parabola-y",hyperbolax->"hyperbola-x",hyperbolay->"hyperbola-y"},ControlType->RadioButtonBar,Appearance->"Vertical",ControlPlacement->Left},
{{center,{0,0},""},{-21/4,-21/4},{21/4,21/4},{1/4,1/4},ControlType->Locator,Appearance->None},

{{showfoci,True,"foci"},{False,True},ControlType->Checkbox,ControlPlacement->Left},
{{showcenter,True,"center"},{False,True},ControlType->Checkbox,ControlPlacement->Left},
{{showdirect,False,"directrix"},{False,True},ControlType->Checkbox,ControlPlacement->Left, Enabled->Or[conictype===parabolax,conictype===parabolay]},
{{showasymp,True,"asymptotes"},{False,True},ControlType->Checkbox,ControlPlacement->Left,Enabled->Or[conictype===hyperbolax,conictype===hyperbolay]},

ControlPlacement->Top,AutorunSequencing->{4,1,2, 5,6,7,9},
TrackedSymbols:>{a,b,p,center,conictype,showcenter,showfoci,showdirect,showasymp}
]

esempio2

Manipulate[
n1=(Sqrt[pt1.pt1]);
n2=(Sqrt[pt2.pt2]);
n12=(Sqrt[(pt1-pt2).(pt1-pt2)]);
Graphics[{Thick, Black, Line[{{0,0},pt1,pt2, {0,0}, {0,1}, {1,1}, {1,0}}], 
Blue, Circle[pt1, 1, {(3/2)Pi,ArcSin[(( n2)/( n12))]+(3/2)Pi}],
Text[Style["α",20], pt1 +{.25, -1.25}],Rotate[Text[Style[Row[{Style["a",Italic]," = ", N[n1]}],20],{-.2,(n1/2)}], (Pi/2)],
Red, Circle[pt2, 1, {Pi,Pi-ArcSin[(n1/( n12))]}],
Text[Style["β",20], pt2 +{-1.25, .25}],Text[Style[Row[{Style["b",Italic]," = ", N[n2]}],20],{(n2/2),-.2}],
Black, Rotate[Text[Style[Row[{Style["c",Italic]," = ", n12}],20],{(n2/2)+.2,(n1/2)+.2}], ((3Pi)/2)+ArcSin[(( n2)/( n12))]],
Black, Text[Style[Column[{Row[{"∠α = ", N[ArcSin[(( n2)/( n12))]]}],
Row[{"sin α = ",(( n2)/( n12))," = ",NumberForm[ N[(( n2)/( n12))],{5,5}]}],Row[{"cos α = ", (( n1)/( n12))," = ", NumberForm[ N[(( n1)/( n12))],{5,5}]}],Row[{"tan α = ", (( n2)/( n1))," = ", NumberForm[ N[(( n2)/( n1))],{5,5}]}]
}], FontSize->20], {7.5,8.5}]
},
ImagePadding->20,ImageSize->500, PlotRange->{{0, 10}, {0,10}}],
{{pt1,{0,10}},{0,1},{0,10}, {1,1}, Locator},
{{pt2,{10,0}},{1,0}, {10, 0},{1,1},  Locator}]

esempio3

maingraph[t_]:=Module[{},Show[{(* Plot the static sine and cosine curves *)ParametricPlot[{{u+1,Sin[u]},{Cos[u]-1,-u-2}},{u,0,2 π},PlotStyle->{GrayLevel[0.5],GrayLevel[0.5]},Axes->True, AxesOrigin->{-1,0},AxesStyle->{Opacity[0],Opacity[0]},TicksStyle->Directive[Black,Opacity[1],14],Ticks->{Table[{i π/2+1,i π/2},{i,0,4}],Table[{i (π/2)-2,-i π/2},{i,-4,0}]}],(* Plot the dynamic sine and cosine curves *)ParametricPlot[{{tt+1,Sin[tt]},{Cos[tt]-1,-tt-2}},{tt,.001,t}, PlotStyle->{{Purple,Thickness[.006]},{Blue,Thickness[.006]}}],(* Add the rest of the graphics *)Graphics[{{EdgeForm[{Thickness[Medium],Black}],GrayLevel[.95],Disk[{-1,0},1]},{Thickness[0.006],Circle[{-1,0},1,{0,t}]},{Thickness[0.003],Line[{{-1,0},{-1,0}+{Cos[t],Sin[t]}}]},{Thickness[0.003],Line[{{{-1,-2},{-1,-2 π-2}},{{1,0},{1+2 π,0}}}]},{Thickness[0.003],Dashing[{.005,.01}],Purple,Line[{{-1,0}+{Cos[t],Sin[t]},{t+1,Sin[t]}}]},{Thickness[0.003],Dashing[{.005,.01}],Blue,Line[{{-1,0}+{Cos[t],Sin[t]},{Cos[t]-1,-t-2}}]},{PointSize[.013],Point[{{t+1,Sin[t]},{Cos[t]-1,-t-2}}]},{Thickness[0.006],Line[{{{1,0},{1+t,0}},{{-1,-2},{-1,-2-t}}}]},{Thickness[.003],Purple,Line[{{{t+1,0},{t+1,Sin[t]}},{{-1,0}+{Cos[t],0},{-1,0}+{Cos[t],Sin[t]}}}]},{Thickness[0.003],Blue,Line[{{{Cos[t]-1,-t-2},{-1,-t-2}},{{-1,0},{-1+Cos[t],0}}}]},Text[Style["sine",18],{1+3 π/2,.7}],Text[Style["cosine",18],{0.8,-5},{0,0},{0,-1}],Text[Style["θ",14],{7.3,.3}],Text[Style["θ",14],{-.7,-8.3}],Text[Style["θ",18],{2.1,-1.5}],Text[Style["   = ",18],{2.4,-1.5}],Text[Style[NumberForm[t,3],18],{3.3,-1.5},{-1,0}]}]},PlotRange->{{-2.1,2 π+1.2},{-2 π-2.2,1.1}},ImageSize->{400,400}]];

Manipulate[Deploy[DynamicModule[{pt={Cos[θ],Sin[θ]}-{1,0}},LocatorPane[Dynamic[pt,{(pt={-1,0}+Normalize[#+{1,0}])&,(pt={-1,0}+Normalize[#+{1,0}];
θ=If[#-{1,0}=={2Pi,0},2Pi,Mod[ArcTan[#[[1]]+1,#[[2]]],2 Pi]])&}],Dynamic[maingraph[Mod[ArcTan[pt[[1]]+1,pt[[2]]],2 π]]]]]],{{θ,π/4},0,2 π},SaveDefinitions->True]

Mathematica e didattica - Testi e grafici

Con le nuove funzionalità di grafica e la nuova interfaccia è molto più semplice anche scrivere testi scientifici, ad esempio le dispense a corredo di una lezione interattiva, e creare/personalizzare i grafici.

Esempio di “assistente” per la scrittura di testi: la palette Classroom Assistant (menu Palettes)

Esempio di personalizzazione dei grafici: la palette Drawing Tools (menu Graphics)

Mathematica e didattica - Computable Document Format

Mathematica CDF Player

Il player CDF permette anche di sfruttare una collezione sterminata (oltre 7000) applicazioni messe a disposizione gratuitamente sul sito demonstrations.wolfram.com, grazie al supporto continuativo della Wolfram ed alla presenza di una consolidata community internazionale di utenti di Mathematica, che produce e condivide tali risorse.

Molte di queste demo sono pronte per essere usate in classe per una lezione davvero innovativa.

Conclusioni

A differenza di altri linguaggi, Mathematica non richiede una forte specializzazione nella progettazione e programmazione di semplici applicazioni didattiche. Ovviamente è necessario prendere dimestichezza con il linguaggio e con l’interfaccia front end, ma una volta imparati i costrutti principali sarà immediato e veloce sviluppare esempi e dimostrazioni utili da impiegare in classe o da consegnare ai propri studenti per l’approfondimento o l’esercitazione.

Workflow semplificato: un unico strumento integrato

Mathematica è disponibile per tutte le principali piattaforme

Altre fonti di informazione

Mathematica Documentation Center tutto l’help di Mathematica disponibile anche online

MouseOver risorse per imparare ad usare Mathematica

MouseOver per essere in contatto con altri docenti e scambiarsi materiali e pareri

MouseOver per tutti i tipi di materiali, inclusi package scritti da utenti esperti

MouseOver la più grande enciclopedia on line di matematica