Estratto del documento

Daniele Lupo Appunti di Mathematica

Grafica e suoni

Introduzione

Abbiamo visto, fino ad adesso, come si possono elaborare funzioni, risolvere equazioni e così via.

Tuttavia, molte volte è necessario trovare il modo di poter visualizzare tramite grafici ed immagini i risultati così ottenuti. Per esempio, se si crea un filtro per un'immagine, viene naturale, invece di andare a guardare liste interminabili di numeri di cui non capite niente, fare direttamente un confronto fra l'immagine iniziale e quella finale, oppure rappresentare graficamente l'andamento di una funzione, o visualizzare un campo vettoriale.

Mathematica in questo campo ha numerose funzioni, che permettono di visualizzare praticamente ogni cosa voi vogliate. Ci sono comandi specifici per grafici a due e tre dimensioni, ed anche per la tipologia di grafico.

Come ultima nota, vedrete che questo capitolo sarà uno dei più lunghi (se non il più lungo). Non spaventatevi di ciò, e dal numero di pagine, perché il loro elevato numero è dovuto al fatto che saranno infarcite di numerose immagini. Con ciò, naturalmente, non voglio dire che starete per leggere un fumetto... Di carne al fuoco ce n'è tanta...

Grafica

Funzioni ad una variabile

Il comando principale con cui si disegnano le funzioni (fra cui quasi tutte quelle che avete visto finora) è Plot: x x disegna f nella variabile x da x a x

Plot[f, {x, , }]

min max min max

f f … disegna assieme più funzioni

Plot[{ , , }, {x,

1 2

x x

, }]

min max

Il comando ha moltissime opzioni che permettono di personalizzare il grafico, ma per ora ci basta sapere questo. Vediamo subito un esempio di come si disegna una funzione:

122

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

8x,

Plot@BesselJ@0, xD, 0, 10<D;

In[1]:= 1

0.8

0.6

0.4

0.2 2 4 6 8 10

-0.2

-0.4

Vediamo come il grafico sia automaticamente scalato nell'asse y.

Possiamo anche visualizzare più funzioni nello stesso grafico: 8x,

Plot@8BesselJ@0, xD, BesselJ@1, xD, BesselJ@2, xD<, 0, 10<D;

In[2]:= 1

0.8

0.6

0.4

0.2 2 4 6 8 10

-0.2

-0.4

Vediamo come le funzioni appaiano sovrapposte fra di loro. Naturalmente, in questo caso, dobbiamo specificare lo stesso dominio per ciascuna funzione, e quindi avremo bisogno di una sola variabile x per tutte e tre le funzioni. 123

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

Nel caso si voglia realizzare il grafico di una lista di funzioni definita con Table, le cose cambiano leggermente: supponiamo, infatti, di avere: 8n,

=

lista Table@ChebyshevT@n, xD, 8<D;

In[3]:= 8x, −1,

Plot@lista, 1<D

In[4]:= − = − More…

— Plot::plnr : lista is not a machine size real number at x 1..

− = − More…

— Plot::plnr : lista is not a machine size real number at x 0.918866.

− = − More…

— Plot::plnr : lista is not a machine size real number at x 0.830382.

— General::stop : More…

Further output of Plot::plnr will be suppressed during this calculation.

1

0.8

0.6

0.4

0.2 0.2 0.4 0.6 0.8 1

Graphics

Out[4]=

In questo caso possiamo vedere che non possiamo visualizzare le funzioni, restituendo degli errori ed un grafico vuoto. Questo perché, in questa notazione, prima vengono valutati i valori della x per generare il grafico, e dopo viene sostituita alle funzioni: in questo caso, invece è necessario prima valutare la tavola di valori, e poi andare a sostituire i valori di x. Questo si fa con il comando Evaluate: 124

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

x x prima specifica precisi valori di x, dopo valuta f per

Plot[f, {x, , }]

min max ogni valore di x

prima valuta f, sceglie specifici valori numerici x

Plot[Evaluate[f], {x,

x x

, }]

min max genera una lista di funzioni, e poi li disegna

Plot[Evaluate[Table[f,

… x x

]], {x, , }]

min max plotta un'equazione differenziale numerica

Plot[Evaluate[y[x] ottenuta tramite

solution], x NDSolve

/. {x, ,

min

Riproviamo ad effettuare, adesso, il plottaggio precedente, ma stavolta con Evaluate:

8x, −1,

Plot@Evaluate@listaD, 1<D

In[5]:= 1

0.5

-1 -0.5 0.5 1

-0.5

-1

Graphics

Out[5]=

Vediamo come adesso, avendo valutato prima la tavola di funzioni, questa adesso sia correttamente riconosciuta, permettendoci di disegnare i grafici di tutte le funzioni definite. Nel primo caso si mantiene la valutazione simbolica di lista, quindi Table non veniva sviluppata, e di conseguenza Mathematica non riconosceva le funzioni, impedendo di poter disegnare i grafici.

Quello che dovete ricordare, quindi, è che quando create una serie di funzioni con Table, dovete usare il comando Evaluate. Supponiamo di trovarci la soluzione numerica di un'equazione differenziale:

= +

eq y ''@xD Sin@y '@xDD y@xD x y@xD;

In[6]:= 125

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

8x,

NDSolve@8eq, y@0D 1, y '@0D 3<, y, 0, 4<D

In[7]:= 88y → <>D<<

InterpolatingFunction@880., 4.<<,

Out[7]=

Abbiamo visto che la soluzione viene data in forma di funzione pura, quindi, per quello che serve a noi, bisogna prima valutare la funzione sostituita, e poi andare a graficarla:

ê/. 8x,

Plot@Evaluate@y@xD %D, 0, 3<D

In[8]:= 50

40

30

20

10 0.5 1 1.5 2 2.5 3

Graphics

Out[8]=

In realtà, avremmo ottenuto lo stesso risultato anche senza Evaluate, ma il tempo impiegato sarebbe diverso; ê

=

eq2 y '@xD Sqrt@y@xDD Sin@x ^ 2D;

In[9]:= 8x,

NDSolve@8eq2, y@0D 3<, y, 0, 50<D

In[10]:= 88y → <>D<<

InterpolatingFunction@880., 50.<<,

Out[10]= 126

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

ê/. 8x,

Timing@Plot@Evaluate@y@xD %D, 0, 50<DD

In[11]:= 4.3

4.25

4.2

4.15 10 20 30 40 50

4.05

80.016 <

Second, Graphics

Out[11]= ê/. 8x,

Timing@Plot@y@xD %%, 0, 50<DD

In[12]:= 4.3

4.25

4.2

4.15 10 20 30 40 50

4.05

80.015 <

Second, Graphics

Out[12]=

Come potete vedere, il risultato grafico è lo stesso. Tuttavia il tempo impiegato per eseguire la funzione è diverso; con Timing, infatti, si calcola il tempo macchina per effettuare l'operazione che ha come argomento, e nel secondo caso abbiamo impiegato un tempo maggiore (sempre poco, effettivamente). 127

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

La differenza, in questo caso, sta in questo: nel primo grafico, usando Evaluate, prima abbiamo valutato la funzione, e quindi abbiamo ottenuto la funzione interpolata, e dopo siamo andati a sostituire i valori di x alla funzione, andando a trovare i valori e quindi a graficarli. Nel secondo caso, invece, prima andiamo a calcolarci il valore di x in cui valutare la funzione, e poi andiamo a valutare la funzione in quel punto; allora, dato che nella funzione c'è una regola di sostituzione, invece di applicarla solamente una volta, come nel primo caso, la applichiamo per ogni punto x che calcoliamo, andando ad eseguire quindi un tot numero di sostituzioni identiche, una per ogni punto che Mathematica usa per creare il grafico. Per funzioni complicate e con molti punti, questo può rallentare notevolmente il processo, specialmente su computer lenti.

Opzioni di disegno

Abbiamo visto come disegnare le funzioni. Tuttavia, a volte è utile poter personalizzare le opzioni di visualizzazione dei grafici, per modificarne lo stile, oppure per evidenziarne alcune caratteristiche particolari. Se andiamo a vedere le opzioni disponibili per il comando Plot, vediamo che ce ne sono parecchie:

Options@PlotD

In[13]:= 9AspectRatio 1

→ → →

, Axes Automatic, AxesLabel None,

Out[13]= GoldenRatio

→ → →

AxesOrigin Automatic, AxesStyle Automatic, Background Automatic,

→ → →

ColorOutput Automatic, Compiled True, DefaultColor Automatic,

8<,

DefaultFont $DefaultFont, DisplayFunction $DisplayFunction,

→ → →

Epilog FormatType $FormatType, Frame False, FrameLabel None,

→ → →

FrameStyle Automatic, FrameTicks Automatic, GridLines None,

→ → →

ImageSize Automatic, MaxBend 10., PlotDivision 30.,

8<,

→ → →

PlotLabel None, PlotPoints 25, PlotRange Automatic,

→ → →

PlotRegion Automatic, PlotStyle Automatic, Prolog

→ →

RotateLabel True, TextStyle $TextStyle, Ticks Automatic=

Alcune sono utili, altre invece non verranno usate quasi mai: vediamo il loro significato:

  • Axes: definisce se dobbiamo disegnare o no gli assi dei grafici. Se lo impostiamo su False gli assi non verranno disegnati.
  • AxesLabel: imposta il titolo delle etichette da imporre agli assi cartesiani, in modo da visualizzarli sul grafico; si usa principalmente per evidenziare la grandezza che corrisponde all'ascissa o all'ordinata.
  • AspectRatio: rappresenta il rapporto fra larghezza ed altezza del grafico: possiamo imporre un valore numerico
  • AxesOrigin: definisce il centro in cui verranno rappresentati gli assi cartesiani. Di default è impostato su Automatic, che definisce quindi il centro degli assi (0,0), se questo è visibile nel grafico, altrimenti viene impostato in modo che gli assi si trovino nei margini del grafico. Possiamo comunque impostarlo manualmente per avere l'origine, per esempio, nel massimo di una funzione, conoscendo il punto.
  • AxesStyle: con questa opzione possiamo imporre lo stile degli assi, per esempio modificandone il colore, oppure lo spessore delle linee.
  • Background: imposta il tipo di sfondo del grafico, impostando il colore, oppure, mediante scrittura più avanzata, magari un'immagine oppure un gradiente (anche se non ci sono mai riuscito a fare uno sfondo che non sia uniforme, ancora...).
  • ColorOutput: questa opzione specifica il tipo di output di colore che viene utilizzato per una funzione. Permette, per esempio, di disegnare un grafico in scale di grigi invece che a colori, oppure in colori RGB.
  • Compiled: specifica se una funzione deve essere compilata dal motore interno di Mathematica prima di poter calcolare i valori della funzione per il plottaggio: di solito si imposta di default su True, ma può essere impostato su False per alcuni tipi di grafico, se per esempio è necessaria un'alta precisione numerica, il che a volte con le funzioni compilate possono dare problemi. Credo sia l'opzione che ho usato di meno fra tutte...
  • DefaultColor: possiamo definire, con questa opzione, il colore standard per disegnare tutto quanto il grafico, nella sua totalità, e non, per esempio, solo il colore della funzione.
  • DefaultFont: definisce il tipo di font che deve essere usato per visualizzare l'eventuale testo presente nel grafico.
  • DisplayFunction: non è che abbia mai capito cosa faccia esattamente questa opzione: permette di definire come visualizzare il grafico. Se settato su Identity non è visualizzato... Mah!!!
  • Epilog: definisce una lista do oggetti grafici (quali punti e cerchi, per esempio), che devono essere aggiunti al grafico dopo che è stata disegnata la funzione principale. Si può usare, per esempio, per visualizzare ed evidenziale punti e zone del grafico.
  • FormatType: permette di definire lo stile della cella. Per esempio, se scriviamo una formula come titolo del grafico, possiamo, mediante questa opzione, visualizzarla in notazione standard, invece che come la visualizza Mathematica sotto forma di testo.
  • Frame: questa opzione, se settata su True, disegna una cornice intorno al grafico. Mediante le seguenti, opzioni, dopo, possiamo definire lo stile della cornice.
  • FrameLabel: definisce le etichette da applicare alla cornice. Se la impostiamo come {titolo1, titolo2}, appariranno rispettivamente sotto ed a sinistra, mentre se lo impostiamo a {titolo1, titolo2, titolo3, titolo4}, compariranno a partire dal basso, in senso orario.

129

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

  • FrameStyle: personalizza lo stile con cui viene disegnata la cornice, definendo colore, stile e spessore delle linee che compongono il frame: ogni lato può avere la sua personalizzazione{{personalizzax},{personalizzay}}.
  • FrameTicks: definisce in questo senso se devono comparire oppure no i marker degli assi nella cornice, definendo anche quali valori devono essere segnati.
  • GridLines: specifica se e come visualizzare la griglia nel grafico. Impostato su Automatic permette a Mathematica di creare la griglia automaticamente, altrimenti si possono definire separatamente il tipo di griglia per i due assi, definendo una lista del tipo {{valori x},{valori y}}, in cui compaiono i valori dell'asse x e dell'asse y in cui vogliamo che compaiano le linee della griglia. Una di queste liste può essere sostituita da Automatic, se ci interessa solamente un asse e vogliamo che l'altro sia definito automaticamente.
  • ImageSize: specifica le dimensioni in cui deve essere visualizzata l'immagine. Si può specificare la larghezza, oppure larghezza ed altezza.
  • MaxBend: definisce il massimo angolo di piegatura dell'angolo fra due segmenti. Questo perché il comando usa un algoritmo adattivo per poter disegnare il grafico, che avvicina i punti a seconda di quest'angolo, in modo da avere una curva risultante smussata e non con punti spigolosi, entro i limiti di PlotDivision. Aumentarlo a volte può servire per visualizzare per intero delle funzioni che Mathematica, senza impostare i limiti degli assi, non visualizza interamente all'interno del grafico.
  • PlotDivision: specifica l'ammontare massimo di divisioni che devono essere impiegate per visualizzare una curva. Più alto sarà questo valore, più smussata risulterà la curva, anche se aumenterà il tempo di calcolo. Da aumentare se si vede che la curva è formata da 'spezzate', che indica una divisione non sufficiente.
  • PlotLabel: aggiunge il titolo specificato al grafico, mettendolo sopra il disegno della funzione.
  • PlotPoints: definisce il numero di punti iniziali da usare per disegnare la funzione. È solo iniziale, perché l'algoritmo è adattivo, andando a modificarlo in funzione della curvatura della funzione. Come vedremo più avanti, invece, per il grafici a due variabili sarà più importante.
  • PlotRange: definisce l'area di visualizzazione del grafico: settato su All include tutti i punti calcolati, su Automatic aggiusta eliminando i punti troppo estremi, oppure può essere una lista pari a {minimo, massimo} se si vuole limitare solo l'asse y, oppure {{minimox, massimox},{minimoy, massimoy}} se si vuole specificare interamente l'area.
  • PlotRegion: specifica quale area dell'immagine generata dalla funzione plot deve essere riempita con il grafico, lasciando vuoto il resto. 130

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

  • PlotStyle: definisce lo stile con cui disegnare il grafico. Se si disegna una sola funzione, è possibile definire l'unico stile, mentre, se si disegnano più funzioni, è possibile decidere se definire lo stile per tutte le funzioni, oppure gestirle separatamente, tramite le liste.
  • Prolog: come Epilog, con la differenza che le forme descritte in Prolog vengono disegnate prima della funzione, e quindi appariranno sotto, invece che sopra.
  • RotateLabel: definisce se l'etichetta dell'asse y deve essere ruotata in modo da essere parallela all'asse, con True, oppure, con False, se deve essere mantenuta orizzontale.
  • TextStyle: specifica lo stile e le opzioni del font del testo che verrà visualizzato.
  • Ticks: definisce i marker che devono essere visualizzati negli assi della funzione, se quello usati di default non ci vanno bene. O si definisce la lista solo per l'asse x, oppure si definisce la doppia lista se ci interessa definire entrambi gli assi.

Vediamo, adesso, alcuni esempi su come possiamo utilizzare queste opzioni: supponiamo di definire la seguente funzione: +

f@x_D := Sin@xD ^ 2 Sqrt@xD

In[14]:=

Adesso, disegnamola tramite il comando Plot:

8x,

Plot@f@xD, 0, 10<D

In[15]:= 3

2

1 2 4 6 8 10

Graphics

Out[15]=

Proviamo ad aggiungere un frame: 131

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

8x, →

Plot@f@xD, 0, 10<, Frame TrueD

In[16]:= 3

2

1

0 0 2 4 6 8 10

Graphics

Out[16]= p:

Anteprima
Vedrai una selezione di 13 pagine su 58
Manuale di Mathematica 05 Pag. 1 Manuale di Mathematica 05 Pag. 2
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 05 Pag. 6
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 05 Pag. 11
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 05 Pag. 16
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 05 Pag. 21
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 05 Pag. 26
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 05 Pag. 31
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 05 Pag. 36
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 05 Pag. 41
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 05 Pag. 46
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 05 Pag. 51
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 05 Pag. 56
1 su 58
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi