Anteprima
Vedrai una selezione di 7 pagine su 79
Fondamenti di Informatica Pag. 1 Fondamenti di Informatica Pag. 2
Anteprima di 7 pagg. su 79.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica Pag. 6
Anteprima di 7 pagg. su 79.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica Pag. 11
Anteprima di 7 pagg. su 79.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica Pag. 16
Anteprima di 7 pagg. su 79.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica Pag. 21
Anteprima di 7 pagg. su 79.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica Pag. 26
1 su 79
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

E’

calcolatore che prevede precisione semplice o doppia.

Nella precisione semplice a 32 bit, 1 bit è dedicato al segno (1 rappresenta - e 0

rappresenta +), 8 bit sono dedicati all’esponente e 23 bit dedicati alla mantissa

nella rappresentazione dei numeri reali. Nella precisione doppia a 64 bit abbiamo

1 bit per il segno, 11 per l’esponente e 52 alla mantissa. Generalmente parlando il

circuito meccanico addetto al calcolo è più efficiente e veloce se i numeri reali

vengono rappresentati con precisione doppia a 64 bit.

IEEE 754 a 32 bit: esponente

L’esponente in questo standard è rappresentato in “eccesso” 127 detta anche

“polarizzazione” (rappresentare numeri polarizzati significa arrotondarli per

eccesso) o “bias”. Il range varia tra -127 e +128 ma i due valori più esterni sono

“riservati” e dunque vale: -126 ≤ e ≤ 127

La rappresentazione in “eccesso 127” significa che al “vero” esponente è stato

aggiunto il valore 127, e dunque per ottenere l’esponente originale bisogna

sottrargli il valore 127. Per esempio se gli otto bit dell’esponente contengono il

valore 10100011 ossia 163 in base 10 avremo che il “vero” esponente vale 163 –

127 = 36.

Numeri normalizzati e denormalizzati

Il problema che si pone è l’ottimizzazione nella rappresentazione dei numeri

molto piccoli (denormalizzati) e standard/grandi (normalizzati), lo zero, l’infinito

e il “non numero” detto in gergo anglosassone “NaN” ossia “Not a Number”.

I numeri normalizzati sono quelli in cui l’esponente è diverso da zero, ossia:

e≠00000000 25

la mantissa risulta normalizzata tra:

1 ≤ m< 2

Ossia è sempre nella forma:

1.XXXXXXXXX...X

Essendo il valore “1” sempre presente esso è considerato implicito e dunque non

occupa nessun bit. Pertanto tutti e 23 i bit sono stati utilizzati per rappresentare

la parte frazionaria.

I numeri denormalizzati sono quelli in cui l’esponente è uguale a zero,

ossia:

e=00000000

La mantissa risulta normalizzata tra:

0< m < 1

Ossia è sempre nella forma:

0.XXXXXXXXX...X

Vengono, come per la forma normalizzata, usati tutti e 23 i bit; in questo caso ad

essere implicito è lo zero. 26

4. OVERFLOW E UNDERFLOW

Con il termine “overflow” si intende lo “sconfinamento” in intervalli numerici

non consentiti dalla rappresentazione usata che “eccede” numericamente (in

entrambe le direzioni) la capacità della notazione oppure (underflow) sconfina in

numeri troppo piccoli e non rappresentabili. 27

5. CONFRONTO TRA NUMERI IN VIRGOLA MOBILE

Confrontando il primo bit che rappresenta il segno la macchina ordina subito due

numeri confrontati in ordine crescente, se i bit mostrano infatti tra i due numeri

segni discordi, il positivo è chiaramente maggiore, se i bit mostrano stesso segno

positivo il numero con esponente maggiore è il più grande e a parità di esponente

si ha solo stesso discorso con la mantissa. Se i bit mostrano segno concorde e

negativo allora l’esponente più piccolo indica il numero più grande e a partità di

esponente si ha lo stesso discorso per la mantissa. 28

6. C ONFIGURAZIONI PARTIC OL ARI

Lo standard prevede delle particolari configurazioni per rappresentare le

condizioni limite:

Zero, richiede una configurazione particolare, non essendo ovviamente compreso

• nei numeri denormalizzati. In particolare esponente e mantissa vengono poste

con valore zero.

Infinito, serve a rappresentare la condizione matematica di infinito e si

• rappresenta con la mantissa a zero e tutte le restanti cifre a 1.

NaN, rappresenta valore indefinito (Not a Number) e serve ad indicare una

• situazione in cui il risultato dell’operazione non è un numero (ad esempio una

divisione per zero) e si rappresenta con la mantissa diversa da zero e tutte le

rimanenti cifre a 1.

Da notare che un quantitativo prefissato di bit (una sequenza di dimensioni finite)

consente di rappresentare un numero predeterminato e incontrovertibile di

differenti entità numeriche. In particolare, data la base due, esso sarà pari proprio

a “due elevato al numero di bit”. In altri termini, con 32 bit si possono

32

rappresentare esclusivamente 2 valori.

7. E R R O R E A S S O L U T O E D E R R O R E R E L A T I V O

Rappresentando un numero reale (razionale o irrazionale) con dei registri

macchina a lunghezza finita, si commette un errore di approssimazione. Verrà in

realtà sempre rappresentato un numero razionale n’ (detto n il numero “vero”)

con un numero limitato di cifre significative. 29

Se la mantissa è normalizzata l’errore relativo massimo è costante su tutto

l’intervallo rappresentato ed è pari ad un’unità sull’ultima cifra rappresentata. Ad

esempio:

Nella notazione non normalizzata l’errore relativo massimo non è costante.

8. EPSILON MACC HINA

La grandezza che rappresenta la “bontà di approssimazione” del numero reale è il

cosiddetto epsilon macchina, il cui valore si può ottenere tramite una specifica

funzione chiamata “eps”. Essa ci consente di valutare esattamente la “distanza”

tra il numero in virgola mobile |X| (in valore assoluto) ed il successivo.

A cosa serve?

Le operazioni aritmetiche tra numeri reali “approssimati”, in particolare quando

ripetute in maniera sequenziale, possono portare a risultati completamente

sbagliati. Tramite la conoscenza quantitativa dell’errore commesso è possibile

valutare l’attendibilità dei risultati e/o evitare errori grossolani.

Una singola operazione tra due numeri dà luogo ad un errore relativo dell’ordine

della precisione della macchina (epsilon). Succede però, come negli esempi

precedenti, che il risultato di un’operazione (quindi già “sbagliato” di una certa

quantità) sia il dato di input di un’operazione successiva, che dunque si “propaga”

nel risultato finale e si somma al precedente. Le moltiplicazioni (o divisioni) sono

infatti viste dal computer come una serie di somme (o sottrazioni), quindi gli

errori aumentano. La misura della propagazione dell’errore dipende dalla

sensibilità che una certa operazione ha nei confronti di quella che si definisce

come perturbazione dei dati. 30

Il risultato si dice ben posto, o ben condizionato, se l’errore finale di una serie di

operazioni è dello stesso ordine di grandezza di quello che si avrebbe al termine di

una sola operazione; viceversa è detto mal posto o mal condizionato. Scrivere

qualcosa in maniera tale da avere il minor numero di operazioni complesse

(prodotto o divisione), porta ad avere un risultato ben posto. 31

9. ESPRESSIONI NUMERICHE

Un operatore può essere:

Unario, quando ha un solo operando.

• Binario, quando ha due operandi.

Ricordiamo poi gli operatori comuni:

Addizione (+).

• Sottrazione/Negazione (-).

• Moltiplicazione (*).

• Divisione canonica (/)

• Divisione inversa (\), ossia il denominatore fratto numeratore.

• Elevamento a potenza (^).

Tutti gli operatori comuni sono operatori binari. Inoltre, le parentesi consentono

di modificare l’ordine con cui le operazioni vengono effettuate. Da tenere presente

anche la gerarchia con cui gli operatori vengono applicati:

1. Parentesi.

2. Elevamento a potenza.

3. Moltiplicazione e divisione.

4. Somma o sottrazione.

Tra le funzioni predefinite, cioè gli operatori già programmati e messi a nostra

disposizione, abbiamo:

Funzioni trigonometriche, come sin(x), cosh(x), atan(x)...

• Funzioni esponenziali e logaritmiche, come exp(t), log(y)...

• 32

Generatori di numeri o matrici pseudocasuali, come rand(N, z).

10. OPERAZIONI C ON NUMERI IN VIRGOL A MOBILE

Gli operatori binari possono effettuare operazioni tra variabili di tipo diverso. In

questo caso, vince il tipo meno complesso (moltiplicando double con single ottengo

un single). Con il type-casting (termine inglese per indicare la conversine di tipo) è

possibile cambiare il tipo di variabile (poichè Matlab, come già detto, di per sé

adopera una tipizzazione debole); ad esempio, possiamo approssimare un numero

cambiando un valore in tipo double o in tipo single; in questo caso vengono

eliminate delle cifre significative.

11 . E S P R E S S I O N I R E L A Z I O N A L I

Le espressioni relazionali vengono utilizzate per verificare una data condizione.

Sono una sorta di domanda: ponendo, ad esempio, a < b, chiedo se una variabile

sia minore o meno dell’altra; la risposta può essere true oppure false e viene

comunicata con “ans = 1” (vero) o “ans = 0” (falso).

In Matlab sono disponibili i seguenti operatori:

> Maggiore

< Minore 33

>= Maggiore o uguale

<= Minore o uguale

== Uguaglianza

~= Disuguaglianza

11 . A L G E B R A B O O L E A N A (ALGEBRA DELL A VERITÀ)

L’algebra booleana è una branca dell’algebra in cui le variabili possono assumere

solo due valori distinti:

True (vero) in Matlab/Octave, rappresentato dal valore 1.

• False (falso) in Matlab/Octave, rappresentato dal valore 0.

Le operazione di base sono quelle logiche:

and - && Prodotto logico (congiunzione)

or - || Somma logica (disgiunzione)

not - ~ Complementazione (negazione)

Si dimostra che qualsiasi funzione logica può essere ricondotta ad una

34

combinazione dei tre operatori di base elencati. 35

12 . A R R AY

L’array è un insieme di dati omogenei organizzato in maniera tale che ciascun

elemento (dato) sia identificato univocamente. Per chiarire meglio il concetto, si

può pensare di prendere un contenitore con tanti cassetti. Scalari, vettori e matrici

sono delle tipologie particolari di array:

Lo scalare è un array di un unico elemento (1 X 1).

• Il vettore è un array monodimensionale (m X 1 o 1 X n).

• La matrice è un array bidimensionale (m X n).

13 . V E T T O R I E M AT R I C I

Ogni tipo definito in Matlab è una matrice di tipo n X m. Persino una grandezza

scalare, come un numero, è in effetti un caso particolare di matrice n X m, in cui n

= 1 ed m = 1. Non a caso il nome di Matlab deriva da Matrix Laboratory.

Vettori

I vettori, come detto, sono disposti su una riga o su una colonna. Ciascun

elemento del vettore ha due attributi separati e distinti che lo rendono univoco:

Dettagli
A.A. 2017-2018
79 pagine
2 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Alessandro_Polimeni_04 di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Roma Tor Vergata o del prof Accattatis Alfredo.