Anteprima
Vedrai una selezione di 7 pagine su 30
Manuale di Mathematica 03 Pag. 1 Manuale di Mathematica 03 Pag. 2
Anteprima di 7 pagg. su 30.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 03 Pag. 6
Anteprima di 7 pagg. su 30.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 03 Pag. 11
Anteprima di 7 pagg. su 30.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 03 Pag. 16
Anteprima di 7 pagg. su 30.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 03 Pag. 21
Anteprima di 7 pagg. su 30.
Scarica il documento per vederlo tutto.
Manuale di Mathematica 03 Pag. 26
1 su 30
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

Calcolo Simbolico 2

ü Introduzione

Abbiamo visto, finora, come elaborare in modo banale alcune espressioni. In fondo, però, fino ad

adesso non abbiamo veramente eseguito calcoli utili, e non abbiamo risolto un bel niente. Mi

dispiace, ma era doveroso scrivere tutto quanto, perchè a mio avviso prima di camminare bisogna

cominciare col saper stare in piedi. Non si può apprezzare la potenzialità di un programma come

Mathematica se prima non se ne conoscono le basi. Andare subito a risolvere un'equazione

differenziale del 10° ordine serve a ben poco, se non si sa dove andare a parare, con il risultato che si

pensa che non si può usare il programma e che non riesce a fare quello che vogliamo, e quindi lo

cestiniamo.

Adesso, però, ne sappiamo abbastanza, e soprattutto si è fatta quel poco di pratica che serve per non

spaventarci a scrivere cose nuove, e per essere sicuri che, quando si scriverà una formula complicata,

in fondo si saprà scrivere nel modo giusto.

Occhio, però!!!! Non abbiamo mica finito di imparare! Per esempio, non abbiamo ancora visto come

si definiscono le funzioni, ma lo faremo fra poco e, soprattutto, le useremo per poterci finalmente

lavorare sopra. Cominceremo a fare elaborazioni banali, come le derivazioni, ma pian piano le cose

si faranno più complesse, più complete e più utili. Dato che questo è un capitolo che mostra le

funzionalità base di Mathematica, sarà, credo uno dei più lunghi. Comunque, niente paura. E' niente

rispetto a quello che potrete sapere, e i concetti matematici che useremo saranno sicuramente digeriti

da molto tempo, per voi.

Ma adesso bando alle ciance, o miei discepoli e diletti sottoposti per la mia futura conquista del

mondo!!! Costruiremo la verità che più ci piace!!!

ü Funzioni

Abbiamo visto alcune delle funzioni tipiche di Mathematica. Per lo più, si tratta di funzioni per

manipolare dati, ma ha anche un numero incredibile di funzioni matematiche, naturalmente:

êê

BesselJ@4, 8D N

In[1]:= −0.105357

Out[1]= Binomial@5, 3D

In[2]:= 10

Out[2]= 77

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

RiemannSiegelTheta@5D

In[3]:= RiemannSiegelTheta@5D

Out[3]= N@%D

In[4]:= −3.45962

Out[4]=

E così via nei secoli dei secoli... Ma che succede se vogliamo una funzione personalizzata fatta da

noi? Semplice, ce la facciamo!!! Il modo normale per poter definire delle funzioni è il seguente;

funzione@x_D := espressione

Notate due cose importanti: quando defininiamo la funzione, l'argomento (o gli argomenti) devono

essere obbligatoriamente accompagnati dal segno di underscore, il che indica un pattern: senza

addentrarci troppo, l'underscore indica a Mathematica che x può essere una qualsiasi espressione

(reale, complesso, incognita etc). Per ora ci basta sapere che è così che si definiscono le funzioni.

L'altra cosa da notare è che il segno = è sostituito dal segno := con i due punti che precedono

l'uguale: questo significa che Mathematica deve valutare l'espressione non subito, ma solo quando

viene invocata; per ora ci basti sapere che si definisce così anche questo. Più avanti capiremo meglio

tutte queste precisazioni...

Allora, definiamo la nostra funzione d'esempio:

+

f@x_D := x ^ 3 Sin@Cos@xDD

In[5]:=

Se vogliamo calcolare la funzione in un punto, basta utilizzarla come qualsiasi altra espressione:

f@2D

In[6]:= +

8 Sin@Cos@2DD

Out[6]= f@6.D

In[7]:= 216.819

Out[7]= +

f@a bD

In[8]:= Ha 3

+ + +

bL Sin@Cos@a bDD

Out[8]=

Inoltre, è possibile naturalmente definire funzioni a più variabili:

+ +

g@x_, y_, z_D := x ^ 2 y ^ 3 z ^ 4

In[9]:= 78

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

Il simbolo di underscore serve ad indicare a Mathematica che l'argomento della funzione può essere

un argomento qualsiasi. A volte, invece, non vogliamo che sia così: per esempio, potremmo voler

definire delle funzioni ricorsive, e quindi ci piacerebbe far sapere a Mathematica che gli argomenti

della funzione possono essere solamente numeri interi. Possiamo naturalmente fare anche questo:

vediamo l'esempio più classico possibile ed immaginabile di funzione ricorsiva, considerando

(guardacaso) i numeri di Fibonacci; F ,F sono posti uguali ad 1, e un generico F è definito come la

n

1 2

somma dei due precedenti. Per poter definire questa funzione, dobbiamo prima definire i primi due

numeri: = =

fibo@1D fibo@2D 1;

In[10]:=

Adesso definiamo la funzione di Fibonacci:

− + −

fibo@x_IntegerD := fibo@x 1D fibo@x 2D

In[11]:=

Proviamo a vedere se funziona...

fibo@10D

In[12]:= 55

Out[12]=

mentre, se vogliamo calcolarci la funzione per un valore non intero, Mathematica non calcola la

funzione, perchè l'argomento non corrisponde con quello che si aspetta:

fibo@3.5D

In[13]:= fibo@3.5D

Out[13]=

Effettivamente, funziona. Vediamo di spiegare in modo semplice quello che ho fatto. prima di tutto,

per definire la funzione, ho definito la funzione in punti particolari. In questa maniera eseguo una

specie di overloading: infatti, quando prima si definisce la funzione in un punto generico x, e poi la

si definisce in generale, se poi la calcolo proprio in x Mathematica, che è un programma furbo, evita

di calcolarsi la funzione, dato che ha già il risultato bello e pronto. Logico no? In questo modo,

abbiamo evitato di mettere i valori iniziali nella pancia della funzione, che ne avrebbe complicato la

definizione, tramite comandi If e così via. In realtà, si dovrebbe pure considerare il caso dei numeri

interi negativi, ma si dovrebbe considerare il costrutto If, che considereremo più avanti.

Inoltre, abbiamo anche visto l'uso di Integer: in questo modo abbiamo detto a Mathematica che

quell'argomento poteva essere soltanto intero. Naturalmente, abbiamo anche altri tipi di insiemi di

numeri: Reals, Rationals, Algebraics, Complex e così via. In questa maniera possiamo imporre delle

condizioni specifiche, evitando dei messaggi di errore che possono capitare quando abbiamo delle

funzioni che accettano determinati tipi di argomenti.

79

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

Derivazione

Le funzioni, ovviamente, possono essere derivate: la funzione di derivazione in Mathematica è

indicata con la lettera D: ∑

ÅÅÅÅ

ÅÅ

x] derivata (parziale) f

D[f, ∑x

∑ ∑

ÅÅÅÅ

ÅÅÅÅÅ ÅÅÅÅ

ÅÅÅÅÅ

x x … derivata multipla ... f

D[f, , , ]

1 2 ∑x ∑x

1 2 ∑ n f

ÅÅÅÅ

ÅÅÅÅÅ

n}] derivata di ordine superiore

D[f, {x, ∑x n

differenziale totale d f

Dt[f] d

ÅÅÅÅ

ÅÅÅÅ

x] derivata totale f

Dt[f, d x

Data la natura simbolica di Mathematica, siamo in grado di effettuare derivazioni anche su funzioni

non definite:

D@r@qD, qD

In[14]:= @qD

r

Out[14]= D@q@tD p@tD, tD

In[15]:= @tD @tD

+

q@tD p p@tD q

Out[15]=

Tuttavia, riprendiamo le funzioni che avevamo scritto poco sopra

+

f@x_D := x ^ 3 Sin@Cos@xDD

In[16]:= + +

g@x_, y_, z_D := x ^ 2 y ^ 3 z ^ 4

In[17]:=

e proviamo a derivarle:

D@f@xD, xD

In[18]:= −

2

3 x Cos@Cos@xDD Sin@xD

Out[18]= D@g@x, 5, zD, zD

In[19]:= 3

4 z

Out[19]=

Potete vedere come sia facile effettuare le derivazioni di funzioni che possono essere anche molto

complesse. Ovviamente possiamo effettuare anche derivate di ordine superiore:

80

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

8x,

D@x ^ n, 10<D

In[20]:= H−9 H−8 H−7 H−6

H−5 H−4 H−3 H−2 H−1

+ + + +

nL nL nL nL

Out[20]= −10+n

+ + + + +

nL nL nL nL nL n x

In aggiunta a questo, possiamo definire derivate miste di ordine superiore. Vediamo l'esempio,

definendo la seguente funzione: ê ê

par@x_, y_, z_D := Sin@x Cos@yDD Log@x ^ 2 y xD

In[21]:= Hx,yL

Una volta definita, possiamo calcolarci, per esempio par@x, y, zD possiamo elencare

semplicemente nel giusto ordine le variabili nel comando D:

êê

D@par@x, y, zD, x, yD FullSimplify

In[22]:= H−x HCos@yD H−1

1 + + +

Cos@x Cos@yDD Log@x yD y Log@x yDL Sin@yDL

Out[22]= H2 3

x y Log@x yD 2

+ 2 y Cos@yD Log@x yD Sin@yDL Sin@x Cos@yDDL

x

Possiamo anche definire la derivata totale con Dt

Dt@x ^ n, xD

In[23]:= I n +

n

x Dt@n, xD Log@xDM

Out[23]= x

La derivata totale è la derivata della funzione quando ogni parametro dipende dall'argomento, quindi

non esistono costanti. Sono importanti, per esempio, quando si effettua il calcolo delle sensibilità di

un sistema.

Possiamo anche specificare, se non ci interessa la derivata totale, quali parametri devono essere

costanti nel calcolo della derivata, e quali, invece, devono essere considerati in funzione della

variabile di derivazione. Questo può essere fatto mediante l'opzione NonConstants, che specifica la

lista di parametri della funzione che NON devono essere considerati costanti. Per esempio,

definendo la funzione come segue:

nc@x_, y_D := c d f@c x, yD y

In[24]:=

Proviamo a fare la derivata in x:

D@nc@x, yD, xD

In[25]:= @c

H1,0L

2

c d y f x, yD

Out[25]= 81

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

Tutti i parametri sono considerati costanti, come possiamo vedere dal risultato; adesso, invece

imponiamo che il parametro c dipenda da x: 8c<D

D@nc@x, yD, x, NonConstants

In[26]:= 8c<D @c

Hc 8c<DL

→ + H1,0L

d y D@c, x, NonConstants f@c x, yD

Out[26]= + → x, yD

c d y x D@c, x, NonConstants f

In questo caso si vede che dove compariva la c elaborata dalla derivata, adesso compare la derivata

di questo parametro, permettendo di vedere come cambia il risultato...

Comunque, se le conoscete sarete ben lieti di poterle utilizzare, scommetto. Per quanto riguarda la

derivazione, non c'è molto altro da dire, data la semplicità del comando.

Integrazione

Dopo aver definito l'integrale, il passo successivo è quello di vedere come si fa l'integrale, che di

solito è più difficile da calcolare a mano, specie se si va oltre il semplice polinomio o prodotto di

seni e coseni: possiamo definire l'integrale definito, indefinito, multiplo:

Ÿ

x] integrale indefinito f d x

Integrate[f, Ÿ

x, y] integrale multiplo indefinito d x d y f

Integrate[f, Ÿ x max

x x integrale definito f d x

Integrate[f, {x, , }] Ÿ Ÿ

min max x min x y

max max

x integrale multiplo definito d x d y f

Integrate[f, {x, ,

min x y

min min

x y y

}, {y, , }]

max min max

Vediamo subito alcuni esempi di utilizzo dell'integrazione:

Integrate@Cos@xD ^ 2, xD

In[27]:= x 1

+ Sin@2 xD

Out[27]= 2 4 8x,

Integrate@Exp@−x ^ 2D, 0, Infinity<D

In[28]:= è!!!

π

Out[28]= 2

Notate come potete facilmente, grazie al calcolo simbolico, calcolare risultati anche con intervallo di

integrazione infinito, e come il risultato non sia approssimato, ma preciso. Naturalmente, se vi

piacciono i risultati approssimati potete sempre farlo:

N@%D

In[29]:= 0.886227

Out[29]= 82

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

Ma questo era solo per rinfrescarvi la memoria. Questo in quanto ci sono casi che non sono

risolvibili, e che quindi Mathematica lascia come sono:

8x,

Integrate@x ^ x, 1, 6<D

In[30]:= ‡ 6 x

x x

Out[30]= 1

In questo caso Mathematica non è in grado di risolvere analiticamente l'integrale (e se non ci riesce

lui dubito che qualche altra cosa nell'universo ci riesca), comunque potete sempre, in questi casi,

avere un'approssimazione del risultato, con la precisione che vi serve di più:

N@%, 60D

In[31]:= 17128.1112747406400791140548362465275891008756059805763169174

Out[31]=

Mathematica riesce anche ad integrare funzioni che richiedono l'uso di altre funzioni speciali, e che

quindi è tremendamente difficile tentare di risolvere a mano:

ê

Integrate@Log@1 x ^ 2D x, xD

In[32]:= D

1

− 2

PolyLog@2, x

Out[32]= 2

Integrate@Sin@x ^ 2D, xD

In[33]:= FresnelSA$%%%%%%

$%%%%%%

π 2 xE

Out[33]= π

2

Possiamo anche integrare in regioni di spazio. Se imponiamo limiti solo per le variabili, integreremo

in regioni rettangolari; in questo caso la regione è triangolare:

8x, 8y,

+

Integrate@x ^ 2 y ^ 2, 0, 1<, 0, x<D

In[34]:= 1

Out[34]= 3

Bisogna fare attenzione al fatto che il raggio d'integrazione che scriviamo per ultimo è quello che

viene calcolato prima. Infatti, se vogliamo scrivere la formula in forma tradizionale, possiamo usare

l'opzione TraditionalForm selezionando l'espressione ed utilizzando con CTRL+SHIFT+T:

Hx L

‡ ‡

1 x + ‚ ‚

2 2

y y x

0 0 83

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

Inoltre, con il comando Boole possiamo anche definire altri tipi di regioni di integrazione che con gli

indici normali non si possono indicare. Per esempio, questo è un modo per calcolare un integrale in

un intervallo di integrazione circolare: 8x, 8y,

+ ≤ −1, −1,

Integrate@Sin@xD ^ 2 Boole@x ^ 2 y ^ 2 1D, 1<, 1<D

In[35]:= Hπ

1 − π BesselJ@1, 2DL

Out[35]= 2

Come potete vedere, il comando di integrale permettere di risolvere casi anche abbastanza

complicati. Tuttavia, come vedremo più avanti, dove non riesce il calcolo simbolico, riesce quello

numerico.

ü Sommatorie e produttorie

Con Mathematica possiamo risolvere facilmente anche produttorie e sommatorie particolarmente

ostiche; il programma è in grado, nella maggior parte dei casi in cui qualsiasi sommatoria o

produttoria converge, di dare il risultato esatto, anche quando ci sono espressioni particolarmente

complicate e, anche in questo caso, dove non ce la fa il calcolo simbolico ce la fa quello numerico.

Le funzioni per eseguire sommatorie e produttorie sono se seguenti:

i

i i la sommatoria f

max

Sum[f, {i, , }]

min max i=i

min ⁄ ⁄

i i di}] sommatoria con i crescente con passo di

Sum[f, {i, , ,

min max j

i max

i i sommatoria nididicata f

max

Sum[f, {i, , }, {j,

min max j= j

i=i

min min

¤

j j

, }]

min max i

i i produttoria f

max

Product[f, {i, , }]

min max i=i

min

Ci sono casi banali, dove il valore iniziale e finale sono finiti, ed in questo caso Mathematica calcola

semplicemente la somma normale:

ê 8i,

Sum@x ^ i i, 1, 7<D

In[36]:= 2 3 4 5 6 7

x x x x x x

+ + + + + +

x

Out[36]= 3 6 7

2 4 5

Possiamo anche specificare il passo, se vogliamo

8x, ê ê

Sum@Sin@xD, 0, Pi 2, Pi 6<D

In[37]:= è!!!

3 3

+

Out[37]= 2 2

Una cosuccia interessante è che Mathematica è in grado i calcolare anche la sommatoria nel caso che

i limiti dell'indice siano incognite: 84

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

8x,

+

Sum@x ^ 3 x, n<D

In[38]:= L

H1 H2

1 + + + 2

n nL n n

Out[38]= 4

E, soprattutto, il programma è in grado di calcolare esattamente anche le sommatorie con indici che

vanno ad infinito:

ê 8x,

Sum@H1 3L ^ x, 3, Infinity<D

In[39]:= 1

Out[39]= 18

Possiamo definire in maniera analoga le produttorie, dato che richiedono gli stessi argomenti

Dettagli
Publisher
30 pagine