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

Programmazione

ü Introduzione

Come potete vedere e avete visto finora, Mathematica dispone di potentissimi comandi che

permettono di eseguire operazioni e calcoli che richiederebbero un tempo notevole per poter essere

eseguiti in qualsiasi altro modo (a me conosciuto). Soprattutto i comandi per il calcolo simbolico

sono molto potenti, e permettono di poter effettuare cose che per esempio, in Fortran non si possono

neanche pensare.

Sembra naturale ed ovvio, quindi, disporre di strumenti per poter mettere assieme questi comandi, in

modo da poter eseguire una serie di operazioni in maniera automatizzata, esattaemente come si tratta

per i programmi veri e propri; anzi, Mathematica consiste proprio di in un linguaggi di

programmazione ad alto livello con comandi molto potenti, come avete anche visto con i vostri occhi

e le vostre agili dita sulla tastiera.

Vedremo adesso i concetti base di programmazione in Mathematica, anche se probabilmente sarà

una lettura molto veloce per molti di voi, dato che i principi base sono gli stessi per qualsiasi

linguaggio di programmazione.

Quello che permette Mathematica, invece, è un controllo più avanzato per quanto riguarda le

interfacce visuali, usando entrambi i sistemi Java e .NET. Tuttavia io non so ancora programmare ad

oggetti, per cui le interfacce grafiche in Mathematica, come in C++, mi sono oscure. Tuttavia

cercherò almeno di introdurvi nel discorso, in modo da poter cercare da soli la vostra strada per

raggiungere la meta (miiii, che poetaaaa!!!! da leggere alla Aldo...).

ü Comandi base

Cominciamo direttamente con un esempio...

Inizio

Print@"Ciao bello!"D

In[1]:= Ciao bello!

Quello che abbiamo ottenuto è l'equivalente in Mathematica del famoso programma "Hello World"

che qualsiasi professore di qualsiasi corso di qualsiasi università vi fa il primo giorno... Solo che qua

le cose sono decisamente più semplici, dato che non esistono main ed altre cavolatine varie

(qualcuno ha detto Basic?). 200

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

Il comando Print, effettivamente, non fa altro che rappresentare il suo argomento sullo schermo; in

questo caso, una stringa. Ebbene sì, miei cari allievi pendenti dalle mie labbra: Mathematica

permette anche di gestire le stringhe, fra l'altro con la stessa potenza (quasi, va') del calcolo.

D'altronde, essendo un programma di calcolo simbolico, che difficoltà ha nel gestire stringhe che

altro non sono se una serie di simboli?

Abbiamo anche visto che le funzioni che possiamo definire in Mathematica possono fare ben più che

dare come risultato un mero numero: in effetti, possiamo anche pensarle come le funzioni dei

linguaggi di programmazione, che riescono a fare un compito assegnato qualsiasi, ammesso che si

riesca a programmarlo... Ma questa è un altra storia. Consideriamo, per esempio, la seguente

funzione: 8t,

esprod@x_, y_, t_, n_IntegerD := FullSimplify@Series@x y, 0, n<DD

In[2]:= +

esprod@x ^ 2 Sqrt@xD, Gamma@xD, x, 3D

In[3]:= è!!! H6 L

è!!!

1 1 + π −

+ +

− 2 2 3ê2

EulerGamma x

x x

EulerGamma

Out[3]= 12

x H−2

1

+ − π − +

3

2 2 5ê2

EulerGamma x EulerGamma EulerGamma 4 Zeta@3DL x

H6 L

12

1 7ê2

2 + π +

2 3

EulerGamma x O@xD

12

La nostra funzione, in questo caso, non restituisce un numeri, ma un'espressione, come potete ben

vedere. Possiamo considerarla come un sottoprogramma, come una macro, come quello che volete,

insomma. Le funzioni che si definiscono possono contenere un numero arbitrario di funzioni e

comandi, diventando dei veri e propri programmi che girano all'interno di Mathematica. Il concetto è

proprio questo, ed in questo risiede buona parte della potenza che un utente avanzato riesce a

spremere dal programma. Non per niente in giro esiste una guida in inglese di 3400 pagine su come

programmare in Mathematica... Brrrrrr.... mi vengono i brividi solo a pensare di aprire un simile

libro...

Tranquilli, le cose che faremo qua sono molto, mooolto più semplici (e con questo mi sono dato

dell'imbecille).

Cominciamo a vedere i comandi, per scrivere e ricevere dati.

201

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

Input ed output

Abbiamo visto, prima, come importare ed esportare dati da files, in modo semplice e diretto.

Abibamo anche visto, appena sopra, che è possibile dare in pasto ad un programmino opportuni

argomenti, e inoltre abbiamo visto come stampare i risultati mediante il comando Print. Tuttavia, in

maniera analoga ad altri casi, possiamo anche introdurre dei dati mediante il comando Input:

richiede un valore, esplicitando la richiesta mediante string

Input["String"]

Possiamo eseguire, per esempio, questo comando:

=

a Input@"Inserisci il numero"D

In[4]:= 555

Out[4]= a

In[5]:= 555

Out[5]=

Qua non posso mostrarlo, ma appena eseguiamo il comando, appare una finestra del kernel del

programma, dove compare sopra la stringa che abbiamo scritto, e sotto un riquadro dove scrivere il

valore desiderato. In questo modo ho introdotto il valore, che è stato assegnato, come avete visto,

alla variabile a. Questo è utile quando dobbiamo scrivere funzioni con molti parametri, e magari

utilizziamo alcuni solo in situazioni particolari. Tuttavia si tratta sempre di valori che dobbiamo

introdurre noi, per cui non è possibile effettuare Input se la funzione deve essere automatizzata, cioè

deve essere effettuata senza il nostro intervento, In questo caso bisogna passare tutti gli argomenti

necessari, oltre a magari definire prima delle variabili opportune.

Come abbiamo visto, per l'output su schermo possiamo usare il comando Print, oltre che i vari

comandi di disegno nel caso ci servano. 202

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

disegno@D := Sequence@

In[6]:= =

n Input@"Inserisci il numero di seni:"D,

Plot@

Evaluate@ 8i,

Table@

D

Sqrt@iD Sin@i xD, n<

D,

8x, 0, 10<,

D,

PlotStyle Hue@0.4D <> <>

Print@"Hai disegnato " ToString@nD " seni."D

D Clear@nD

disegno@D;

In[7]:= 2

1 2 4 6 8 10

-1

-2

Hai disegnato 6 seni.

In questo programmino abbiamo visto tutti e tre i metodi: il modo di avere un input al programma, e

due output: uno grafico, che si ottiene semplicemente con il comando Plot, e l'altro ottenuto

mediante Print.

Possiamo anche scrivere e leggere file che contengano espressioni di Mathematica, se non abbiamo

bisogno di importare ed esportare, semplificando la sintassi. Supponiamo che dobbiamo scrivere

un'espressione, e di volerla salvare su un file perchè, per esempio, dobbiamo uscire con la nostra

ragazza, ed al ritorno, se saremo tristi e soli perchè ci ha lasciati, possiamo aprire un nuovo file senza

dover ricaricare e valutare quello vecchio, continuando da dove ci siamo interrotti:

203

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

legge un file contenente espressioni di Mathematica,

Get: << restituendo il risultato dell' ultima

scrive l' espressione in un file. Possiamo scriverne più di

Put: >> una nello stesso file con la forma Put@ex1, ex2,...., " file "D

accoda l' espressione nel file

PutAppend: >>>

Dicevamo, che avevamo il seguente output:

Expand@Hx 6L ^ 7D

In[8]:= −279936 + − + − + − +

2 3 4 5 6 7

326592 x 163296 x 45360 x 7560 x 756 x 42 x x

Out[8]=

Adesso, vogliamo memorizzarlo nel file

>>

% "espanso"

In[9]:=

Questo comando memorizza l'espressione nel file. Vediamo se lo contiene:

!! espanso

In[10]:= -279936 + 326592*x - 163296*x^2 + 45360*x^3 - 7560*x^4 + 756*x^5 -

42*x^6 +

x^7

Abbiamo visto il contenuto del file. Se vogliamo ricaricarlo in memoria, a questo punto basta fare

= <<

espr espanso

In[11]:= −279936 + − + − + − +

2 3 4 5 6 7

326592 x 163296 x 45360 x 7560 x 756 x 42 x x

Out[11]= espr

In[12]:= −279936 + − + − + − +

2 3 4 5 6 7

326592 x 163296 x 45360 x 7560 x 756 x 42 x x

Out[12]=

Come potete vedere, adesso espr contiene l'espressione che avevamo salvato in precedenza. Notate

come !! non restituisce l'espressione, ma solo il contenuto del file. Abbiamo comunque bisogno del

comando Get per poter leggere il file, interpretarlo e memorizzarlo nella variabile.

A volte, invece, mentre lavoriamo, può capitare di non dover memorizzare tutte le espressioni in una

volta, ma a poco a poco. In questo ci viene in aiuto il comando PutAppend:

204

Printed by Mathematica for Students

Daniele Lupo Appunti di Mathematica

ê Hx êê

− −

ExpandAll@Hx 4L ^ 5 2L ^ 7D TraditionalForm

In[13]:=

Out[13]//TraditionalForm= 5

x

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅ -

- + - + - + -

7 6 5 4 3 2

x 14 x 84 x 280 x 560 x 672 x 448 x 128

4

20 x

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅ +

- + - + - + -

7 6 5 4 3 2

x 14 x 84 x 280 x 560 x 672 x 448 x 128

3

160 x

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅ -

- + - + - + -

7 6 5 4 3 2

x 14 x 84 x 280 x 560 x 672 x 448 x 128

2

640 x

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ

ÅÅÅÅÅÅÅÅÅÅÅÅÅ +

- + - + - + -

7 6 5 4 3 2

Dettagli
Publisher
25 pagine