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
Disdici quando vuoi 162x117
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Sintesi

<div>

Scarica il

</div>

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 funizioni. 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 comandio 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

128

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

grafico, altrimeni 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 gradico in scals 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 iste

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 sono deve essere visualizzata l'immagine. Si può

specificare la larghezza, oppure larghezza ed altezza.

ø MaxBend: definise 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 massino di divisione 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. E' 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:

Visualizziamo, adesso, la griglia, tarata in multipli di

8x, →<

Dettagli
Publisher
58 pagine