Familiarizzare con Mathematica



Documenti analoghi
EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

SISTEMI DI NUMERAZIONE E CODICI

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

4 3 4 = 4 x x x 10 0 aaa

MODULO 4: FOGLIO ELETTRONICO (EXCEL)

Microsoft Excel. Il foglio elettronico Microsoft Excel Cartelle, Fogli di lavoro e celle Contenuto delle celle. Numeri, date, formule, testo, funzioni

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

WORD (livello avanzato): Struttura di un Documento Complesso. Struttura di un Documento Complesso

Convertitori numerici in Excel

Uso di base delle funzioni in Microsoft Excel

Formattazione. ü Introduzione

Appunti sulla Macchina di Turing. Macchina di Turing

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Database 1 biblioteca universitaria. Testo del quesito

Word è un elaboratore di testi in grado di combinare il testo con immagini, fogli di lavoro e

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Office 2007 Lezione 08

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Informatica. Rappresentazione dei numeri Numerazione binaria

Sistemi di Numerazione

LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Il foglio elettronico: Excel

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

Lezioni di Matematica 1 - I modulo

Rappresentazione dei numeri in un calcolatore

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico

Interesse, sconto, ratei e risconti

LE FUNZIONI A DUE VARIABILI

Funzioni in C. Violetta Lonati

II.f. Altre attività sull euro

Corrispondenze e funzioni

FORMULE: Operatori matematici

Registratori di Cassa

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

MS Word per la TESI. Barra degli strumenti. Rientri. Formattare un paragrafo. Cos è? Barra degli strumenti

FUNZIONI DI IMPAGINAZIONE DI WORD

Figura 1 Le Icone dei file di Excel con e senza macro.

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

Fondamenti di Informatica 2. Le operazioni binarie

Cominciamo dalla barra multifunzione, ossia la struttura a schede che ha sostituito la barra dei menu e la barra delle icone (Figura 1).

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Utilizzo delle formule in Excel

Fogli Elettronici: MS Excel

Il foglio elettronico 5/06/2013

MANUALE EDICOLA 04.05

Elementi di informatica

Alla scoperta della nuova interfaccia di Office 2010

Modulo: Fogli elettronici

Variabili e tipi di dato

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

GESGOLF SMS ONLINE. Manuale per l utente

Lezione 8. La macchina universale

Manuale Utente Albo Pretorio GA

Fasi di creazione di un programma

Operazioni fondamentali

Entrare nel sistema. Clicca su Entra per entrare nel sistema. PAGINA 1

Foglio di calcolo. Il foglio di calcolo: Excel. Selezione delle celle

Potenzialità statistiche Excel

Per effettuare la stampa di una cartella di lavoro si accede al comando. Stampa dal menu File o si utilizza il pulsante omonimo sulla barra

Esponenziali elogaritmi

Syllabus (estratto) Foglio elettronico. Excel. Open office - Office. Principio e funzionamento 26/11/2012. A. Ferrari

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)

EasyPrint v4.15. Gadget e calendari. Manuale Utente

TEST: Word & Excel Tutti i diritti riservati. Computer Facile -

Inserimento dei dati

4. Fondamenti per la produttività informatica

Lezione 4 Introduzione a Microsoft Excel Parte Prima

Interesse, sconto, ratei e risconti

ENTRARE NEL SISTEMA. Clicca su Entra per entrare nel sistema. PAGINA 1

Alessandro Pellegrini

Esempi di algoritmi. Lezione III

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Matematica in laboratorio

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

CONTROLLO ORTOGRAFICO E GRAMMATICALE

Guida rapida per i docenti all'uso della piattaforma di e-learning dell'istituto Giua

RAPPRESENTAZIONE GRAFICA E ANALISI DEI DATI SPERIMENTALI CON EXCEL

FPf per Windows 3.1. Guida all uso

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Introduzione a Word. Prima di iniziare. Competenze che saranno acquisite. Requisiti. Tempo stimato per il completamento:

Prof.ssa Paola Vicard

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

I sistemi di numerazione

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

Appunti di: MICROSOFT EXCEL

Capitolo 2. Operazione di limite

ALGEBRA DELLE PROPOSIZIONI

Excel. Excel. Videata iniziale Fogli elettronici. Fogli elettronici. Come si inserisce un dato

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Alcuni consigli per un uso di base delle serie di dati automatiche in Microsoft Excel

Informazione analogica e digitale

Transcript:

Il contenuto di queste pagine è protetto dalle leggi sul copyright e dalle disposizione dei trattati internazionali. Il titolo ed il copyright relativi alle pagine sono di proprietà dell'autore. Le pagine possono essere riprodotte ed utilizzate liberamente dagli studenti, dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero dell'istruzione, dell'università e della Ricerca per scopi istituzionali, non a fine di lucro. Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente a, le riproduzioni a mezzo stampa, su supporti magnetici o su reti di calcolatori) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte dell'autore. L'informazione contenuta in queste pagine è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, ecc. L'informazione contenuta in queste pagine è soggetta a cambiamenti senza preavviso. L'autore non si assume alcuna responsabilità per il contenuto di queste pagine (ivi incluse, ma non limitatamente a, la correttezza, completezza, applicabilità ed aggiornamento dell'informazione). In ogni caso non può essere dichiarata conformità all'informazione contenuta in queste pagine. In ogni caso questa nota di copyright non deve mai essere rimossa e deve essere riportata anche in utilizzi parziali. Familiarizzare con Mathematica.. Input e output di Mathematica Una volta eseguito Mathematica, l'utente si trova di fronte a una finestra inizialmente vuota. Questa finestra è associata ad un notebook, che è la componente di Mathematica deputata a interagire con l'utente. Come indicato dal nome, un notebook implementa la metafora di un quaderno su cui scrivere, in forma più o meno elegante. Nonostante siano stati pensati per un utilizzo fortemente orientato a contenuti di carattere matematico, i notebook di Mathematica si prestano anche a lavorare con informazione di tipo più eterogeneo. Ad esempio, quello che state leggendo è stato scritto utilizzando un notebook e non un impaginatore di testi. l notebook è il programma tramite cui un utente dialoga con il sistema, inserendo richieste e ottenendo risposte. Un'altra parte del sistema, chiamata kernel, si occupa invece di eseguire tutte le computazioni necessarie per portare a termine queste richieste, generando (eventualmente) le relative risposte. Seguendo la terminologia informatica, d'ora in avanti parleremo di input e di output piuttosto che di richieste e risposte. Più precisamente, ogni notebook è diviso in tante celle, ognuna tipicamente marcata da una parentesi quadra chiusa posta alla sua destra, che ne delimita il contenuto (e infatti ci si riferisce a questi componenti di Mathematica come a dei delimitatori di cella) e che permette di selezionare l'intera cella (cliccando sulla sua parte verticale), ad esempio per copiarla o cancellarla da un notebook. Un altro aspetto pratico dei delimitatori di cella è rappresentato dal fatto che le piccole barre orizzontali poste alle loro estremità permettono di individuare il punto in cui due celle si separano. Ciò è particolarmente utile quando si vuole inserire una nuova cella in mezzo a due celle esistenti: posizionando il cursore in un qualunque punto di un notebook compreso tra due delimitatori successivi, questo cambierà infatti la sua forma (assumendo quella di una linea orizzontale delimitata da due piccoli segmenti, in pratica l'equivalente ruotato del simbolo, detto caret o i-bean, che lo stesso cursore assume quando viene posizionato all'interno di un'area di testo in una qualunque interfaccia grafica), proprio a evidenziare il fatto che cliccando in questa posizione è possibile inserire una nuova cella. Quando si scrive qualcosa nella finestra di un notebook, viene automaticamente creata in esso una cella di input, cioé una cella in cui è possibile inserire dell'input da comunicare al kernel. Le celle di input sono riconoscibili perché la parte superiore del delimitatore di cella corrispondente è marcata con

posizionando il cursore in un qualunque punto di un notebook compreso tra due delimitatori successivi, questo cambierà infatti la sua forma (assumendo quella di una linea orizzontale delimitata 2 da due piccoli segmenti, in pratica l'equivalente ruotato del simbolo, detto caret o i-bean, che lo stesso cap0.nb cursore assume quando viene posizionato all'interno di un'area di testo in una qualunque interfaccia grafica), proprio a evidenziare il fatto che cliccando in questa posizione è possibile inserire una nuova cella. Quando si scrive qualcosa nella finestra di un notebook, viene automaticamente creata in esso una cella di input, cioé una cella in cui è possibile inserire dell'input da comunicare al kernel. Le celle di input sono riconoscibili perché la parte superiore del delimitatore di cella corrispondente è marcata con un piccolo triangolo. Ogni notebook può poi implementare delle proprie regole di stile per formattare in modo opportuno celle di tipologia differente. Ad esempio le celle di input in questo notebook sono caratterizzate da un fondo arancione chiaro e da un font della famiglia Courier, che dovrebbe ricordare la forma con cui tipicamente gli elaboratori scrivono il codice. Questa è una cella di input Tramite le regole di stile è possibile modificare vari aspetti di una cella. In particolare è possibile disabilitare la visualizzazione dei delimitatori di cella. L'utente può scrivere in un notebook una generica espressione matematica e richiedere al kernel di valutarla. La valutazione avviene dopo che si è utilizzata una particolare combinazione di tasti (Û nella versione per Mac OS, +Á nelle versioni per Linux o MS Windows) o la voce di menù Kernel/Evaluation/Evaluate cells. Il kernel riceve l'espressione, la valuta, e infine ritorna l'output relativo al notebook. Quest'ultimo si occupa di presentarlo in modo opportuno all'utente. Ad esempio In[208]:= + Out[208]= 2 Attenzione: se è la prima volta che valutate una cella, il processo di valutazione potra' richiedere qualche secondo. Questo è dovuto al fatto che deve essere caricato ed eseguito un Kernel. L'output fornito da Mathematica appare in una cella il cui stile è molto simile a quello della cella che la precede, con l'unica differenza che lo sfondo ora è arancione scuro e il delimitatore ha un ulteriore linea orizzontale al di sotto del triangolo nella sua parte superiore. Questo sta a rimarcare il fatto che essa è appunto una cella di output. Nonostante sia possibile inserire in un notebook celle di altri tipi (ad esempio quello che state leggendo in questo istante è il contenuto di una cella di testo), per il momento noi ci occuperemo principalmente di celle contenenti input e output. Il lettore interessato può trovare in appendice alcuni approfondimenti relativi ad altri tipi di cella implementati. E' da notare come un gruppo di celle che siano in qualche modo correlate sia evidenziato da un ulteriore delimitatore, posto a destra rispetto a quelli delle singole celle, che delimita l'intero gruppo. Ciò succede ad esempio se andiamo ad esaminare una cella di input e la corrispondente (o le corrispondenti) celle di output. Gruppi di celle di questo tipo, oltre che creati automaticamente da Mathematica in opportune occasioni, possono essere creati dall'utente selezionando Tipicamente, la fase di immissione dei dati viene segnalata dalla pressione del tasto Á. In Mathematica invece tale tasto serve semplicemente per andare a capo in una cella. Un altro aspetto non standard è costituito dall'interpretazione degli spazi bianchi (caratteri di spazio, tabulazione e ritorno a capo). Questi in genere vengono ignorati e il loro uso permette di migliorare la leggibilità di quanto viene scritto. Mathematica invece li tratta nel modo seguente:

cap0.nb 3 Tipicamente, la fase di immissione dei dati viene segnalata dalla pressione del tasto Á. In Mathematica invece tale tasto serve semplicemente per andare a capo in una cella. Un altro aspetto non standard è costituito dall'interpretazione degli spazi bianchi (caratteri di spazio, tabulazione e ritorno a capo). Questi in genere vengono ignorati e il loro uso permette di migliorare la leggibilità di quanto viene scritto. Mathematica invece li tratta nel modo seguente: gli spazi bianchi vengono ignorati; In[49]:= + Out[49]= 2 le tabulazioni non vengono accettate: provate a inserire una o più tabulazioni in una cella di input e vedrete che questa operazione non ha alcun effetto su quello che viene effettivamente scritto nella cella. Solitamente le tabulazioni vengono usate per indentare il codice scritto, una peculiarità che vedremo essere implementata automaticamente; i caratteri di "a capo" iniziano una nuova linea all'interno di una cella (senza segnalare, come detto prima, il termine dell'immissione dei dati). Va rimarcato il fatto che qualora una cella contenga più linee, queste verranno valutate separatamente e in sequenza dal kernel In[50]:= + + 2 + 3 Out[50]= 2 Out[5]= 3 Out[52]= 4 quindi questi caratteri non possono essere utilizzati per spezzare una riga troppo lunga: si consideri ad esempio la cella seguente In[53]:= + Out[53]= Out[54]= Mathematica ha interpretato il primo "" come una riga a sé stante, mentre ha accorpato le due righe seguenti nell'espressione "+", per poi valutare le due espressioni separatamente. Il fatto che le ultime due righe siano considerate come un'unica espressione è evidenziato dal fatto che la seconda tra queste è indentata rispetto alla prima. Mathematica spezza in modo generalmente automatico le linee troppo lunghe, tranne quando non riesce a trovare un punto adeguato in cui dividere il contenuto della cella. In questi casi in ogni

4 cap0.nb Mathematica ha interpretato il primo "" come una riga a sé stante, mentre ha accorpato le due righe seguenti nell'espressione "+", per poi valutare le due espressioni separatamente. Il fatto che le ultime due righe siano considerate come un'unica espressione è evidenziato dal fatto che la seconda tra queste è indentata rispetto alla prima. Mathematica spezza in modo generalmente automatico le linee troppo lunghe, tranne quando non riesce a trovare un punto adeguato in cui dividere il contenuto della cella. In questi casi in ogni linea viene scritto quanto più possibile, e la separazione è marcata a fine linea dal carattere speciale di separazione (Ö): In[58]:= Ö Il processo di valutazione è composto delle seguenti fasi: La cella in cui si trova il cursore viene etichettata (alla sua sinistra) dalla voce In[n], dove n è un numero che parte da (quando viene eseguito il kernel) e aumenta progressivamente ogni volta che viene valutata una cella. Il contenuto di questa cella viene analizzato per verificare l'eventuale presenza di errori. In caso non ne vengano trovati, la cella viene valutata e l'eventuale risultato viene stampato in una nuova cella, automaticamente etichettata dalla voce Out[n], dove n è un numero progressivo calcolato nello stesso modo di In[n]. In caso vengano trovati degli errori, vengono stampati uno o più messaggi opportuni: se ad esempio scriviamo un'espressione matematica che non ha senso, come la seguente, otteniamo In[25]:= 3 - * 2 Syntax::sntxf : "3 -" cannot be followed by " * 2". 3 - * 2 Kernel e notebook sono due programmi separati che comunicano tra loro e che possono anche essere eseguiti separatamente.ad esempio è possibile eseguire più notebook che facciano riferimento a uno stesso kernel,oppure eseguire un notebook su un computer e il relativo kernel su un altro,sfruttando una connessione di rete.ancora,è possibile scindere una computazione complessa proveniente da un notebook in varie sotto-computazioni da fare eseguire in modo concorrente da altrettanti kernel in esecuzione su macchine differenti.... Modalità di inserimento per l'input Mathematica accetta come input una serie di oggetti dal significato differente, come ad esempio numeri interi, numeri irrazionali, testo, espressioni matematiche con un preciso stile (come ad esempio l'esecuzione di un'esponenziazione) e così via. Siccome non tutti questi oggetti trovano un corrispondente sulla tastiera di un computer (come la costante p), si rende necessario poterli inserire utilizzando delle modalità alternative di immissione dell'input.

cap0.nb 5 Mathematica mette a disposizione le seguenti modalità di immissione: tramite tastiera, utilizzando una descrizione di tipo testuale. Questa rappresenta la scelta naturale per molti possibili input (i numeri interi, le quattro operazioni aritmetiche fondamentali,...) i cui simboli corrispondenti trovano tipocamente posto nelle tastiere di un computer, mentre richiede il ricorso a una codifica opportuna per altre informazioni (ad esempio la costante "Pi greco" che viene indicata tramite la codifica Pi); va notato come questa codifica rimanga visualizzata sul notebook nella sua forma testuale; tramite tastiera, inserendo input di tipo complesso tramite un'opportuna codifica che viene immediatamente trasformata sul notebook in forma grafica; ad esempio è possibile visualizzare la costante "Pi greco" tramite l'usuale simbolo p premendo il tasto  (azione che viene confermata dalla comparsa sul notebook del carattere speciale Ç), inserendo la parola "pi" e premendo nuovamente il tasto Â: il notebook verrà aggiornato sostituendo i caratteri da Ç in avanti con il simbolo p. Per utilizzare questo tipo di modalità di immissione sono disponibili varie codifiche (denominate più precisamente alias), tra cui una parzialmente mutuata dal sistema LaTeX (un sistema di word processing in cui la descrizione dei documenti è fatta in modo puramente testuale, inserendo appunto dei comandi in un'opportuna codifica per indicare gli stili da applicare di volta in volta); tramite il puntatore del mouse e un sistema di palette, cioé di tabelle che contengono vari simboli che Mathematica inserisce nel notebook quando vengono selezionati. Per visualizzare (o nascondere) una palette, è sufficiente selezionare la voce di menù File/Palettes. In molti casi, quando il puntatore del mouse viene posizionato sopra un simbolo all'interno di una palette, nella parte inferiore di quest'ultima vengono visualizzate le codifiche per inserire il simbolo corrispondente tramite tastiera..2. Espressioni aritmetiche La specificazione di espressioni aritmetiche segue più le convenzioni utilizzate più dai matematici che non dagli informatici. La differenza principale tra i due approcci sta nel fatto che non è necessario specificare alcun simbolo per indicare la moltiplicazione: basta inserire uno spazio tra i fattori In[227]:= 4 2 Out[227]= 8 In ogni caso è possibile specificare esplicitamente l'operazione di moltiplicazione utilizzando il simbolo *. Questo è utile quando l'uso dello spazio può diminuire la leggibilità del codice Mathematica prodotto: In[228]:= 4 * 2 Out[228]= 8

6 cap0.nb Le rimanenti operazioni aritmetiche vengono specificate utilizzando gli usuali simboli per indicare gli operatori di addizione (+) e sottrazione (-), a cui si aggiungono quelli relativi a divisione (/), elevamento a potenza (^) e calcolo del fattoriale (!). In[229]:= 4 + 2 Out[229]= 6 In[230]:= 4-2 Out[230]= 2 In[232]:= 4 ê 2 Out[232]= 2 In[23]:= 4 ^2 Out[23]= 6 In[63]:= 4! Out[63]= 24 Ovviamente è possibile utilizzare le parentesi tonde per variare l'ordine di valutazione predefinito delle operazioni aritmetiche: In[63]:= 3 H4 + 5L Out[63]= 27 Il bello di utilizzare Mathematica sta nella possibilità di effettuare velocemente operazioni che richiederebbero troppo tempo se eseguite a mano, come ad esempio In[64]:= 2 ^00 Out[64]= 26765060022822940496703205376

cap0.nb 7 In[66]:= 30! Out[66]= 265252859829058636308480000000.3. Numeri interi ed approssimati Se proviamo a dividere 8 per 6 otteniamo come risultato In[237]:= 8 ê 6 Out[237]= 4 ÅÅÅÅ 3 Mathematica ha quindi espresso il risultato della divisione come una frazione, che ha poi semplificato. In questo modo non viene introdotta alcuna approssimazione nel valore espresso. Analogamente si ha In[238]:= 5 ê 2 Out[238]= 5 ÅÅÅÅ 2 Il risultato in questo caso è sempre espresso tramite una frazione, nonostante anche l'espressione decimale 2.5 fosse corretta. Mathematica è stato progettato per indicare i numeri in forma esatta, cioé senza introdurre approssimazioni, a meno che non gli venga esplicitamente richiesto di fare il contrario. Per i numeri decimali, la forma esatta viene indicata tramite la corrispondente frazione ridotta ai minimi termini: è per questo che il risultato della prima divisione è stato espresso come 4/3. Ogni volta che viene indicato un numero contentente un punto decimale (non necessariamente seguito da cifre), questo è inteso come espresso in forma approssimata, in cui tipicamente solo alcune delle potenzialmente infinite cifre significative vengono elencate. Anche questo è il motivo per cui il risultato della divisione precedente è stato espresso come 5/2 e non come 2.5. Quest'ultimo numero, infatti, potrebbe essere ad esempio confuso con l'espressione approssimata di 2.50000000000000. Ogni volta che un'espressione aritmetica contiene un numero decimale (eventualmente senza alcuna cifra dopo di esso), l'intera espressione viene valutata in modo approssimato In[242]:= 5 ê 2 +.5 Out[242]= 4. E' da notare come il risultato di questa somma sia stato espresso con un punto decimale, proprio ad indicare che esso è approssimato, essendo approssimato uno degli addendi. Pertanto il risultato delle seguenti operazioni è differente:

8 cap0.nb In[243]:= 5 ê 2-5 ê 2 Out[243]= 0 In[244]:= 5 ê 2-2.5 Out[244]= 0. Il primo risultato è la differenza tra due numeri uguali, entrambi espressi in forma esatta, che pertanto è uguale a zero (in forma esatta). Il secondo è la differenza tra due numeri uguali, dei quali uno è espresso in forma approssiamata, che sarà quindi uguale a zero in forma approssimata, come indicato dal punto decimale. Mathematica elabora in modo molto diverso i numeri espressi in forma esatta e quelli espressi in forma approssimata. In particolare, la valutazione di espressioni complesse contenenti numeri in forma approssimata richiede un tempo tipicamente inferiore rispetto ai numeri in forma esatta. Tenere a mente questa differenza può portare pertanto a realizzare modelli con tempi di esecuzione ottimizzati..4. Costanti Una costante rappresenta un valore che non varia nel tempo. Si trovano vari esempi di costanti in fisica (la velocità della luce, la costante di graviazione universale,...) e in matematica (il pi greco, ma anche un qualsiasi numero). Mathematica implementa, tra le altre, le seguenti costanti matematiche: il pi greco (la lunghezza di una circonferenza di diametro unitario): In[3]:= Pi Out[3]= p + n! ): la costante di Nepero (il valore della somma ÅÅÅÅÅÅ n=0 In[4]:= E Out[4]= L'unità immaginaria (la radice quadrata di -): In[5]:= I Out[5]= Â

cap0.nb 9 In realtà sono implementate anche molte altre costanti di tipo matematico e fisico, ma non le prenderemo in considerazione..5. Funzioni Le funzioni vengono specificate indicando il loro nome seguito da una coppia di parentesi quadre che ne racchiudono gli argomenti. In un certo senso le costanti possono essere pensate come delle funzioni che non hanno argomenti (anche se vedremo che ricorrendo alla generazione di numeri pseudo-casuali è possibile utilizzare Mathematica per costruire delle funzioni senza argomenti che non realizzano delle costanti). Nel seguito vedremo un breve elenco che illustra come Mathematica possa calcolare alcune tra le funzioni matematiche più semplici. In realtà il sistema implementa un numero decisamente più elevato di funzioni, di complessità anche elevata, che noi non tratteremo. Il lettore interessato ad approfondire questo argomento può consultare The Mathematica Book di Steven Wolfram..5.. Funzioni logaritmiche ed esponenziali La funzione Log[x] indica il logaritmo naturale di x: In[7]:= Log@E ^4D Out[7]= 4 Se la funzione Log viene chiamata usando due argomenti, allora il primo rappresenta la base del logaritmo e il secondo il suo argomento: In[9]:= Log@2, 8D Out[9]= 3 In[93]:= Log@0, 000000D Out[93]= 6 E' anche disponibile la funzione esponenziale Exp[x], nonostante in fase di valutazione venga direttamente convertita in ^x: In[94]:= Exp@2D Out[94]= 2

0 cap0.nb.5.2. Radicali La funzione Sqrt determina le radici di un numero. In particolare, se usata con un solo argomento ne calcola la radice quadrata In[95]:= Sqrt@6D Out[95]= 4 Il calcolo di radici di altro tipo viene effettuato tenuto conto del fatto che è!!! b x =x êb. Ad esempio è possibile calcolare la radice cubica di 8 come In[98]:= 8 ^H ê 3L Out[98]= 2 Mathematica mette a disposizione un simbolo grafico per indicare in forma tradizionale le radici. Quando un'espressione che lo contiene viene valutata, il simbolo viene convertito nelle espressioni sopra indicate, come possiamo verificare utilizzando la funzione InputForm (di cui vedremo tra breve il significato): In[99]:= InputFormA è!!! x E Out[99]//InputForm= Sqrt[x] In[00]:= InputFormA è!!! b x E Out[00]//InputForm= x^b^(-) Attenzione! Non fatevi ingannare da quest'ultima espressione, che va letta come x^(b^(-)) a causa delle regole di precedenza nella valutazione degli operatori. Per convincervene, provate per esercizio a valutare separatamente, ad esempio, le espressioni 8^(/3), 8^3^(-) e (8^3)^(-)..5.3. Funzioni trigonometriche Le funzioni Sin, Cos e calcolano rispettivamente il seno, il coseno e la tangente del loro argomento

cap0.nb In[04]:= Sin@Pi ê 4D Out[04]= ÅÅÅÅÅÅÅÅÅ è!!! 2 In[05]:= Cos@Pi ê 3D Out[05]= ÅÅÅÅ 2 Mathematica implementa direttamente anche altre funzioni trigonometriche esprimibili in termini di seno e coseno; ad esempio la funzione Tan calcola la tangente dell'argomento che le viene passato: In[08]:= Out[08]= Tan@Pi ê 3D è!!! 3 Mathematica semplifica ove possibile le espressioni trigonometriche: In[2]:= Sin@xD ê Cos@xD Out[2]= Tan@xD Inoltre sono implementate le funzioni trigonometriche inverse ed esponenziali: ArcSin e ArcCos calcolano rispettivamente l'inverso delle funzioni seno e coseno In[8]:= Out[8]= ArcSin@D p ÅÅÅÅ 2 In[23]:= Out[23]= ArcCos@Sqrt@2D ê 2D p ÅÅÅÅ 4 Sinh e Cosh calcolano rispettivamente il seno e coseno iperbolici, mentre ArcSinh e ArcCosh indicano le corrispondenti funzioni inverse:

2 cap0.nb In[36]:= Sinh@0D Out[36]= 0 In[38]:= Cosh@0D Out[38]=.5.4. Altre funzioni Le funzioni Abs e Sign ritornano rispettivamente il valore assoluto e il segno di un numero (cioé - o a seconda che il rispettivo argomento sia o meno negativo) In[4]:= Abs@4D Out[4]= 4 In[5]:= Abs@-4D Out[5]= 4 In[6]:= Sign@4D Out[6]= In[7]:= Sign@-4D Out[7]= - Attenzione! Le funzioni Abs e Sign assumono un significato differente quando i loro argomenti sono numeri complessi. In questo caso Abs[z] corrisponde al modulo di z e Sign[z] è uguale a z/abs[z]. In[3]:= Sign@3 - ID Out[3]= 3 - Â ÅÅÅÅÅÅÅÅÅÅÅ è!!!!!! 0

cap0.nb 3 La funzione Round arrotonda il suo argomento all'intero più vicino In[8]:= Round@3.4D Out[8]= 3 In[9]:= Round@3.5D Out[9]= 4 Le funzioni IntegerPart e FractionalPart ritornano rispettivamente le parti intera e frazionaria di un numero reale In[26]:= IntegerPart@4.2D Out[26]= 4 In[27]:= FractionalPart@4.2D Out[27]= 0.2 In[28]:= IntegerPart@-4.2D Out[28]= -4 In[29]:= FractionalPart@-4.2D Out[29]= -0.2 Attenzione! Se l'argomento di FractionalPart è un numero irrazionale espresso in forma esatta, il risultato sarà anch'esso espresso in questa forma. In[30]:= FractionalPart@PiD Out[30]= -3 + p La funzione Floor ritorna il più grande intero minore o uguale dell'argomento specificato; analogamente, la funzione Ceiling ritorna il più piccolo intero maggiore o uguale dell'argomento specificato

4 cap0.nb In[3]:= Floor@PiD Out[3]= 3 In[32]:= Ceiling@PiD Out[32]= 4 In[33]:= Floor@-PiD Out[33]= -4 In[34]:= Ceiling@-PiD Out[34]= -3 Le funzioni Quotient e Mod ritornano rispettivamente il quoziente e il resto della divisione intera tra il primo e il secondo argomento specificato In[35]:= Quotient@0, 4D Out[35]= 2 In[36]:= Mod@0, 4D Out[36]= 2.6. Notazioni di presentazione degli argomenti La notazione tipicamente utilizzata per calcolare una funzione viene indicata in una notazione prefissa in cui il nome della funzione precede gli argomenti, delimitati in modo opportuno (da parentesi tonde nell'usuale notazione matematica, da parentesi quadre nella sintassi di Mathematica in forma input o standard). In realtà è possibile fare riferimento ad altre modalità: una notazione postfissa, utilizzabile con funzioni che hanno un solo argomento. In questo caso viene specificato prima l'argomento, poi due caratteri di barra capovolta o backslash (\\) e infine il nome della funzione

cap0.nb 5 In[224]:= x êê Log Out[224]= Log@xD questo tipo di notazione risulta indicata per scrivere velocemente un'espressione, quando non si vuole appesantire un'espressione già complessa con un'ulteriore coppia di parentesi quadre, o quando si vuole modificare una cella di input usandone il contenuto come unico argomento di qualche funzione. In quest'ultimo caso è sufficiente aggiungere in coda all'espressione il doppio backslash e il nome della funzione; una notazione infissa, utilizzabile con funzioni che hanno due argomenti. In questo caso viene specificato innanzitutto il primo argomento, seguito da un carattere di tilde (~), dal nome della funzione, da un ulteriore carattere di tilde e dal secondo argomento In[228]:= 0 ~ Log ~ 000 Out[228]= 3 una forma alternativa della notazione prefissa per funzioni con un solo argomento, in cui si indicano semplicemente il nome della funzione e l'argomento separandoli tramite un carattere di "at" (@) In[23]:= Logüx Out[23]= Log@xD questo tipo di forma permette di scrivere velocemente un'espressione, eliminando il bisogno delle parentesi quadre. In generale queste notazioni e le relative abbreviazioni sono state introdotte per rendere più agevole l'inserimento di espressioni in una cella. In realtà è necessario, di volta in volta, decidere se utilizzarle o meno anche tenendo conto della misura in cui il loro utilizzo possa andare a migliorare o peggiorare la leggibilità delle stesse espressioni..7. Forme di visualizzazione dei dati Consideriamo l'espressione I^Cos[x], indicante cioé il numero complesso ottenuto elevando l'unità immaginaria al coseno di x. Tale espressione è espressa utilizzando le regole sintattiche di Mathematica (quelle che stiamo gradualmente imparando), le quali si basano su due caratteristiche importanti: permettono di descrivere una qualunque espressione matematica in modo non ambiguo; possono essere descritte utilizzando esclusivamente una descrizione puramente testuale (nel senso che il contenuto che esse esprimono è espresso dai caratteri utilizzati e non dal loro stile).

6 cap0.nb Le espressioni indicate utilizzando questa sintassi vengono dette espressioni in Input Form (o forma di input); Mathematica implementa la funzione InputForm per convertire espressioni in questa forma: In[98]:= I ^ Cos@xD êê InputForm Out[98]//InputForm= I^Cos[x] Nonostante la forma di input rappresenti un'interfaccia tramite cui inserire velocemente espressioni matematiche all'interno di un notebook, la sua lettura può risultare difficile soprattutto quando non se ne conosce bene la sintassi. Mathematica è però in grado di esprimere i dati utilizzando altre forme, tant'è che se proviamo a valutare I+Log[x] otteniamo In[99]:= I ^Cos@xD Out[99]=  Cos@xD e quindi una cella di output in cui la seconda delle caratteristiche sopra indicate non è più soddisfatta: in questo caso infatti l'unità immaginaria è indicata non più tramite la lettera I (che in particolare, essendo una "I" maiuscola rappresenta un carattere ben preciso), bensì tramite il simbolo  ottenuto applicando uno stile ben preciso (quello che Mathematica indica come il font di tipo Double Struck) al carattere i; l'operazione di elevamento a potenza viene indicata non più dal carattere ^ ma scrivendo l'esponente come apice della alla base. Attenzione! Non fatevi ingannare dal fatto che fino ad ora abbiamo indicato l'unità immaginaria utilizzando in ogni caso uno stile differente (e cioé applicando alla lettera maiuscola "I" il font di tipo Courier): questo è dovuto al fatto che tutti i caratteri di un'espressione in forma di input sono indicati con questo stile, in modo che queste espressioni risultino visualmente differenziate dal testo. Mathematica utilizza quindi una seconda forma di presentazione dei dati (tipicamente per le celle di output), detta Standard Form o forma standard, in cui mantiene l'univocità della descrizione ma, per migliorare la leggibilità, utilizza in alcuni casi la formattazione del testo per indicare un significato particolare: ad esempio per indicare alcune costanti (come I ed E, che vengono rispettivamente trasformate in  ed ) o alcune operazioni (come l'estrazione di radice o l'elevamento a potenza) che vengono indicate nell'usuale modo tipografico. La funzione StandardForm permette di convertire un'espressione in forma standard

cap0.nb 7 In[200]:= I ^ Cos@xD êê StandardForm Out[200]//StandardForm= Â Cos@xD Siccome la forma standard mantiene il requisito di descrivere un'espressione in modo univoco, è possibile utilizzarla per inserire input in una cella In[97]:= 2 3 Out[97]= 5 Mathematica implementa un'ulteriore forma, detta Traditional Form o forma tradizionale, in cui i dati vengono presentati in modo molto simile all'usuale notazione matematica: ad esempio le funzioni vengono indicate utlizzando caratteri minuscoli, le variabili utilizzando lo stile corsivo e gli argomenti di una funzione sono delimitati da parentesi tonde e non quadre. La funzione TraditionalForm permette di esprimere un'espressione in forma tradizionale, evidenziata anche da una linea verticale a zig-zag nel corrispondente delimitatore di cella: In[20]:= I ^ Cos@xD êê TraditionalForm Out[20]//TraditionalForm= Â coshxl Va notato come la notazione in forma tradizionale possa risultare ambigua da interpretare. Ad esempio l'espressione a(x+) può indicare sia il valore che la funzione a assume in corrispondenza dell'argomento x+ che il prodotto tra i fattori a e x+. In[22]:= a@x + D êê TraditionalForm Out[22]//TraditionalForm= ahx + L In[23]:= a Hx + L êê TraditionalForm Out[23]//TraditionalForm= a Hx + L Attenzione! E' possibile modificare la forma di presentazione di una cella anche selezionandone il corrispondente delimitatore e scegliendo una delle voci del menù Cell/ConvertTo.

8 cap0.nb Tenuto conto di questo, Mathematica implementa input e standard form in modo da risultare il più possibile consistente. Il lettore interessato ad approfondire questo concetto può fare riferimento ai primi capitoli del libro Exploring Mathematics with Mathematica, di John Glynn e Theodore Gray. Mathematica implementa in realtà anche altre forme di rappresentazione dei dati: alcune, come MatrixForm o Short, verranno introdotte nel seguito quando si renderanno necessarie; altre, come TeXForm, non verranno introdotte. Il lettore interessato ad approfondire questo argomento può consultare il manuale in linea..8. Approssimazione di numeri Quando si prova a calcolare il logaritmo naturale di 8 si ottiene In[0]:= Log@8D Out[0]= Log@8D l'output è esattamente uguale all'input, perché il logaritmo naturale di 8 non è né un numero relativo né un numero razionale, ma un numero reale non esprimibile in forma esatta se non come il logaritmo naturale di 8. Per visualizzare questo numero in forma approssimata possiamo indicare il suo argomento in forma approssimata, aggiungendovi il punto decimale: In[38]:= Log@8.D Out[38]= 2.07944 inserirlo in un'espressione matematica in cui compaia almeno un numero in forma approssimata: In[40]:= Log@8D + 0.0 Out[40]= 2.07944 Utilizzare la funzione N che, avuto come argomento un numero, calcola il suo valore approssimato: In[36]:= N@Log@8DD Out[36]= 2.07944 Utilizzando la funzione N è possibile calcolare approssimazioni molto precise: infatti è possibile fornire un secondo argomento che permette di specificare il numero di cifre significative da indicare nell'approssimazione

cap0.nb 9 In[89]:= N@Log@8D, 00D Out[89]= 2.0794454679835928256963643745297042265004030807657623620400284808086Ö 59090844687589980989256063 In questo modo è ad esempio possibile scrivere approssimazioni molto accurate di p, ad esempio fino alla centesima cifra: In[90]:= N@p, 00D Out[90]= 3.45926535897932384626433832795028849769399375058209749445923078640Ö 62862089986280348253427068 o alla millesima In[9]:= N@p, 000D Out[9]= 3.45926535897932384626433832795028849769399375058209749445923078640Ö 6286208998628034825342706798248086532823066470938446095505822372535Ö 94082848745028402709385205559644622948954930389644288097566593Ö 34462847564823378678365272090945648566923460348604543266482339360Ö 72602494273724587006606355887488520920962829254097536436789259036Ö 003305305488204665238446959456094330572703657595995309286738Ö 932679305854807446237996274956735885752724892279388309492983Ö 367336244065664308602394946395224737907027986094370277053927762937Ö 67523846748846766940532000568274526356082778577342757789609736377Ö 872468440902249534304654958537050792279689258923542099562290296Ö 08640344859836297747730996058707234999999837297804995059737328Ö 6096385950244594553469083026425223082533446850352693887000033783Ö 875288658753320838420677766947303598253490428755468735956286388235Ö 37875937595778857780532722680663009278766959092642099 Attenzione! Nel caso vi facciate prendere la mano, può capitare che chiediate a Mathematica di effettuare delle computazioni che richiedono un tempo troppo elevato per essere portate a termine. In casi come queste potete terminare in anticipo la computazione utilizzando la voce di menù Kernel/Abort Evaluation, o la combinazione di tasti CTRL-. Le funzioni possono venire specificate, oltre che nella modalità seguita finora (detta forma prefissa, in quanto il nome della funzione viene specificato prima dei suoi argomenti), anche in altre forme. In particolare è disponibile una forma postfissa per le funzioni che hanno un solo argomento, che consiste nello specificare prima l'argomento stesso, seguito da un doppio slash (//) e dal nome della funzione. In altre parole

20 cap0.nb In[92]:= p êê N Out[92]= 3.459 ha lo stesso effetto di N[p]. Questa forma risulta spesso utile per migliorare la leggibilità di formule molto lunghe in quanto evita di dover specificare un ulteriore coppia di parentesi quadre..9. Espressioni Un'espressione di Mathematica è definita nel seguente modo: una costante (compreso un numero, in forma esatta o approssimata) è un'espressione; se f è una funzione con un argomento e x è un'espressione che rappresenta un argomento valido per f, allora f[x] è un'espressione. Analogamente, se g è una funzione con n argomenti e x,..., xn sono n espressioni che rappresentano argomenti validi per g (nel senso che x è un'espressione che può rappresentare il primo argomento di g, x2 è un'espressione che può rappresentare il suo secondo argomento e così via), allora g[x,...,xn] è un'espressione. L'ultimo dei due punti precedenti si estende facilmente al caso di operatori cioé funzioni, come la somma, che vengono tipicamente utilizzati tramite una notazione prefissa o infissa, in cui il simbolo che descrive l'operatore viene inserito in una posizione particolare e gli argomenti non vengono delimitati tramite parentesi. Limitandosi agli operatori unari e binari (aventi cioé uno o due argomenti): se U è un operatore unario e x è un'espressione che può essere considerata un argomento valido per U, allora Ux è un'espressione: ad esempio -x è un'espressione valida, dove x è un numero e - indica l'operatore unario di negazione; se B è un operatore binario e x ed y sono due espressioni che possono essere considerate argomenti validi per B, allora xby è un'espressione; ad esempio se x ed y sono due numeri e + indica la somma, allora x+y è un'espressione valida. Merita maggiore attenzione il concetto di argomento valido: normalmente a ogni dato è associato un tipo che ne riassume la natura e le caratteristiche (sono ad esempio tipi diversi i numeri in forma esatta, quelli in forma approssimata, le parole). Ogni funzione è progettata per accettare argomenti di un tipo ben definito, o di un definito insieme di tipi. Ad esempio la funzione Log accetta come argomenti numeri, in forma esatta o approssimata, ma non avrebbe alcun senso pensare di calcolare il logaritmo della parola "ciao" o della data odierna (e più avanti vedremo come Mathematica possa trattare anche questi tipi di dati). Attenzione! In realtà Mathematica implementa gli operatori esattamente come se fossero delle funzioni: ad esempio l'espressione x+y viene convertita in Plus[x,y] prima di venire inviata al kernel, e la stessa conversione viene fatta in senso opposto per i risultati che il kernel fornisce al notebook.

cap0.nb 2 Quando un'espressione contiene più funzioni innestate (ovvero funzioni in cui almeno un argomento è rappresentato dal valore assunto da un'altra funzione), queste vengono valutate nell'unico modo possibile, cioé partendo da quella più interna a quella più esterna: ad esempio nell'espressione f@x, g@h@y, zddd le funzioni verranno valutate nel seguente ordine: prima verrà valutata h quando y e z sono rispettivamente il suo primo e secondo argomento; poi verrà valutata g utilizzando questo valore come argomento; infine verrà valutata f utilizzando questo valore come secondo argomento e x come primo argomento. Quando invece in un'espressione compaiono più operatori, come ad esempio in x+y/z non è chiaro se debba prima essere valutato l'operatore di divisione o quello di addizione. Per questo motivo si rendono necessarie delle regole di precedenza che indicano quale debba essere l'ordine di valutazione in casi come questo. Nell'ordine di valutazione implementato da Mathematica le operazioni che abbiamo visto finora sono valutate secondo le usuali regole di precedenza: fattoriale elevamento a potenza prodotto e quoziente somma e sottrazione E' possibile forzare un diverso ordine di valutazione degli operatori utilizzando le parentesi tonde: In[258]:= Out[258]= x + y ê z x + y ÅÅÅÅ z In[259]:= Out[259]= Hx + yl ê z x + y ÅÅÅÅÅÅÅÅÅÅÅ z.0. Sostituzioni Codice la cui forma generale è 8prima Ø dopo< indica una sostituzione. L'operatore /. permette di applicare una sostituzione a una qualunque espressione

22 cap0.nb In[90]:= a + b ^ 2 + b c ê. 8b Ø ê Pi< Out[90]= a + ÅÅÅÅÅÅ p 2 + c ÅÅÅÅ p Le sostituzioni sono tipicamente legate al modo in cui Mathematica presenta i risultati di equazioni... Variabili Nella costruzione di modelli matematici complessi risulta utile spezzare una computazione compelssa in calcoli relativamente semplici. aumentare la leggibilità del codice; generare un risultato una sola volta per riutilizzarlo in molte occasioni; generare un modello matematico in modo incrementale. Per potere però utilizzare i risultati di queste computazioni è necessario che questi vengano salvati una volta prodotti. Mathematica implementa questa funzionalità ricorrendo al concetto di variabile. Tipicamente le variabili vengono viste come controparte dinamica delle costanti: infatti, mentre una costante rappresenta un oggetto tramite cui utilizzando un nome simbolico ci si può riferire a un valore che non varia nel tempo, utilizzando una variabile si utilizza sempre un nome simbolico, ma per riferirsi a un valore che può variare nel tempo. Quindi una variabile è accessibile tramite un nome, scelto dall'utente che la crea. Un nome valido è costituito da una successione di caratteri di arbitraria lunghezza che non inizi con un numero, tenendo conto che il linguiaggio di Mathematica è case sensitive: un carattere minuscolo e il corrispettivo maiuscolo sono considerati diversi; quindi sono ad esempio nomi validi di variabili variabile, Variabile, VARIABILE, variabile, variabile, unavariabile e unaltravariabile. In realtà, nonostante tutti questi nomi possano essere utilizzati, nella pratica si tiene conte delle cosiddette regole di stile, in base a cui: i nomi di una variabile composti da una sola parola sono scritti utilizzando esclusivamente lettere minuscole. Nomi che iniziano con una lettera maiuscola sono riservati per costanti e funzioni già implementate in Mathematica; i nomi di una variabile composti da più parole sono scritti accorpando le varie parole, scritte con caratteri minuscoli ma utilizzando i caratteri maiuscoli per le iniziali di ogni parola. Unica eccezione è costituita dalla prima parola, che è composta esclusivamente da caratteri minusoli. Quindi solo il primo e gli ultimi tre tra i nomi sopra elencati rappresentano nomi validi per una variabile. Il carattere di uguale (=) viene utilizzato per indicare l'operatore di assegnamento che associa un valore a una variabile. La sua sintassi è la seguente nomevariabile = < espressione >

cap0.nb 23 dove nomevariabile è un nome valido per una variabile e <espressione> è un'espressione valida. Durante l'esecuzione di questa oerazione, l'espressione viene valutata ed il suo risultato viene assegnato alla variabile. Ad esempio l'assegnamento In[26]:= a = 4 + 2 Out[26]= 6 ha come esito l'assegnamento di 6 (il risultato di 4+2) alla variabile a. Si noti che il valore assegnato è anche l'output corrispondente dell'operazione. Per verificare che l'assegnamento abbia effettivamente avuto l'esito voluto possiamo valutare il valore di a: In[264]:= a Out[264]= 6 infatti ogni nome di variabile, al pari delle costanti, rappresenta un'espressione valida. Siccome tipicamente quando un valore viene memorizzato in una variabile non è necessario visualizzarlo, è possibile inserire un carattere di punto e virgola (;) in coda all'operazione: In[273]:= a = 4 + 2; In questo modo l'assegnamento viene eseguito senza generare alcun output. Mathematica può in realtà generare due tipi diversi di output: quello che va a comparire nelle celle di output, viene emesso quando valutando una cella questa produce uno o più risultati. Questo tipo di output viene generato dalla maggior parte delle istruzioni implementate da Mathematica, ovviamente a meno che la relativa visualizzazione non sia disabilitata tramite l'uso del carattere di punto e virgola; E' importante tenere a mente come questo tipo di output faccia riferimento a delle informazioni che possono essere memorizzate e/o rielaborate in altre parti del codice. quello il cui scopo è semplicemente il mostrare nel notebook un messaggio di qualche tipo, che non viene poi utilizzato per ulteriori computazioni; in altre parole, il concetto di output tipicamente usato dai programmatori per notificare delle informazioni a un utente. L'outupt di questo tipo viene generato dall'istruzione Print, il cui argomento è un'espressione che viene valutata e stampata. In[93]:= Print@Pi ^ 3D p 3

24 cap0.nb Vale la pena di notare come l'output di un'istruzione Print, seppur contenuto in una cella di output, non abbia dato origine all'emissione di un'etichetta Out, proprio perché non vi è stata alcuna memorizzazione dell'output stesso. Per evitare confusione, utilizzeremo la parola output per indicare la prima modalità e la parola messaggio per indicare la seconda. Attenzione! Rimarchiamo un'interessante coincidenza: come abbiamo già detto, la maggior parte delle istruzioni di Mathematica danno origine a un output. Questo significa che alcune istruzioni vengono eseguite senza generare un output. Un esempio di queste istruzioni è rappresentato appunto da Print, che non produce alcun output ma genera un messaggio. Un altro esempio si può trovare nella funzione Clear, che vedremo tra poco: questa funzione non produce né output né messaggi. Una volta assegnato un valore ad una variabile, questa è utilizzabile per eseguire altre computazioni: hanno senso ad esempio le seguenti espressioni In[279]:= a + Out[279]= 6 In[28]:= Log@aD êê N Out[28]=.60944 In linea con i moderni linguaggi di programmazione, Mathematica mette a disposizione una serie di operatori che permettono di abbreviare delle operazioni matematiche di uso comune: l'operatore di autoincremento, indicato da un doppio segno di addizione (++), che applicato a una variabile ne incrementa il valore di un'unità. Questo operatore può essere utilizzato sia in notazione prefissa che in notazione postfissa. Pertanto sia ++a che a++ equivalgono all'assegnamento a=a+, ma avranno un comportamento differente qualora queste istruzioni siano contenute in un'espressione. In particolare, qualora un'espressione contenga un'istruzione di autoincremento prefisso, questa viene eseguita prima di valutare l'espressione: ad esempio In[9]:= a = 5; ++a ê 2 Out[20]= 3 In questo caso, la variabile a viene inizializzata al valore 5 e poi viene valutata l'espressione ++a/2. Siccome questa espressione contiene un'autoincremento prefisso, prima il contenuto di a viene incrementato di un'unità (assumento pertanto il valore 6), e poi viene valutata l'espressione a/2, che appunto vale 3. Per conferma, possiamo verificare quale sia il valore contenuto in a:

cap0.nb 25 In[2]:= a Out[2]= 6 Quando invece l'espressione contiene un'istruzione di autoincremento postfisso, quest'ultima viene eseguita solo dopo che l'espressione è stata valutata: In[22]:= a = 5; a ++ ê 2 Out[23]= 5 ÅÅÅÅ 2 infatti, dopo l'inizializzazione a 5, viene prima valutata l'espressione a/2 (che appunto vale 5/2) e poi il valore di a viene incrementato, come è facilmente verificabile anche in questo caso: In[24]:= a Out[24]= 6 l'operatore di autodecremento, indicato da un doppio segno di differenza (--), utilizzabile nelle stesse modalità dell'operatore di autoincremento, che ha come effetto quello di diminuire il contenuto di una variabile di un'unità: In[27]:= a = 5; --a Out[28]= 4 gli operatori di incremento e decremento (una generalizzazione degli operatori di autoincremento e autodecremento), denotati rispettivamente con += e -=, che permettono di aggiungere o sottrarre una data quantità al contenuto di una variabile. In altre parole, a+=x equivale ad a=a+x e a-=x equivale ad a=a-x. In[]:= a = ; a += 2; Print@aD; 3 Infine, è possibile "cancellare" una variabile, come se non le avessimo mai assegnato alcun valore, utilizzando la funzione Clear:

26 cap0.nb In[29]:= a = 5; Clear@aD In[3]:= a Out[3]= a Attenzione! E' importante ricordare che Mathematica gestisce le variabili dando loro una visibilità globale, nel senso che, una volta definita, una variabile può essere letta e modificata in qualunque altra parte del notebook, o anche in altri notebook. Nel caso capiti che in parti diverse del codice scritto compaiano due variabili con scopi differenti ma stesso nome, la modifica del valore di una di queste si rifletterà anche sull'altra, con potenziali danni sul corretto funzionamento del codice. E' quindi importante sforzarsi di dare nomi differenti a variabili differenti, tipicamente attribuendo dei nomi che ricordino il significato per cui ogni variabile è utilizzata. In realtà è possibile, in alcuni casi, fare anche riferimento a variabili di tipo locale, la cui visibilità è ristretta a una ben precisa porzione di codice su cui avranno anche effetto le modifiche apportate ai suoi contenuti..2. Costruire nuove funzioni Un'importante funzionalità di Mathematica consiste nella possibilità di estendere il suo linguaggio aggiungendo delle funzioni definite dall'utente. Tale possibilità si basa sull'operatore di valutazione posticipata :=, la cui sintassi nome:=espressione viene interpretata nel modo seguente: ogni qual volta nel codice seguente si farà riferimento a nome, verrà valutata espressione. Ad esempio, il codice In[2]:= multiplopi := n Pi; definisce multiplopi come valore l'espressione pari a n volte p, dove n è una variabile il cui valore verrà valutato ogni volta che si farà riferimento a multiplopi: In[2]:= n = ; multiplopi Out[3]= p In[4]:= n = 3; multiplopi Out[5]= 3 p In realtà l'utilizzo della variabile n in questo caso è potenzialmente scorretto, in quanto potremmo non essere sicuri che altre parti di codice non facciano riferimento ad essa, modificando implicitamente la definizione di multiplopi. Per evitare inconvenienti di questo tipo e simultaneamente implementare più correttamente una funzione come una corrispondenza tra argomenti e valori, Mathematica utilizza la seguente sintassi

cap0.nb 27 funzione@argomento_d := espressione dove funzione è il nome scelto per la funzione; := rappresenta l'operatore di valutazione posticipata; espressione rappresenta l'espressione che verrà valutata per produrre il valore della funzione; argomento è il nome per l'argomento della funzione. Il carattere di underscore (_) sta appunto ad indicare che, quando si farà riferimento a questa nuova funzione specificando un argomento, il valore di quest'ultimo verrà valutato e inserito all'interno di espressione in corrispondenza di ogni occorrenza dell'insieme di caratteri argomento. Solo dopo questa operazione il sistema provvederà a valutare espressione e a ritornare un valore. Quindi la funzione multiplopi può venire implementata più correttamente nel seguente modo: In[33]:= multiplopi@n_d := n p e valutata indicando i valori attuali del suo argomento tra parentesi quadre: In[34]:= multiplopi@d Out[34]= p In[35]:= multiplopi@7d Out[35]= 7 p Attenzione! Se state eseguendo questo notebook, il sistema potrebbe emettere un errore quando valuta la definizione di multiplopi, se avevate anche valutato le cella a inizio di questa sezione. Infatti in questo caso il nome multiplopi è già stato associato a un altro valore. Per poter valutare queste ultime celle sarà quindi necessario eliminare l'associazione tramite il comando Clear. Nel caso una funzione abbia più di un argomento, la sintassi della definizione non cambia, a patto di indicare tutti gli argomenti all'interno delle parentesi quadre separandoli tramite il carattere di virgola: In[37]:= logallaenne@x_, n_d := Log@xD ^ n