Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Introduzione - algoritmo
Iniziamo definendo cosa è un algoritmo.
Un algoritmo è una successione finita di istruzioni che in sintesi comprende istruzioni elementari assegnate in modo non ambiguo in una sequenza coerente di passare in un tempo finito dal problema alla sua soluzione. Ovviamente problema è sinonimo di dati e soluzione è sinonimo di obiettivi
La soluzione che uscirà non è detto che sia esattamente la soluzione del problema ma può essere una sua approssimazione.
L'algoritmo rappresenta dunque la risposta fra dati e obiettivi.
Ad esempio in un problema fisico generico, come primo passo devo costruire un modello matematico.
Ad esempio se mi viene chiesto di calcolare la superficie terrestre posso considerala vedendo la terra come una sfera, di cui Ae = 4πr2?
Chiaramente ho fatto una approssimazione e quindi la soluzione trovata non è quella esatta ma approssimata.
Una volta definito il modello matematico (in questo caso coincidente con le formule) devo calcolare Ae = 4πr2.
Tuttavia r ed Ae sono a loro volta approssimate (r avrebbe infinite cifre).
Dunque se il modello che ho scelto sono approssimate e quindi, a sua volta, anche la soluzione è approssimata.
lo schema è dunque il seguente:
Problema fisico -- Modello -- Soluzione
Ritornando al concetto di algoritmi, in generale vogliamo risolvere problemi di natura generale.
Ad esempio: Ⓐ (25+1)Ⓑ (a+b)·c = R = a1 + c1/a2 + c2
Il primo è un caso particolare, il secondo è generale.
Riprendendo il secondo esempio a+b*c.
Non esiste un unico metodo simile Ⓐ(a+b)*c = a+(b*c) = (a+b)*b.
I tre precedenti sono algoritmi fra loro diversi.
Gli algoritmi sono diversi ma matematicamente forniscono lo stesso risultato.
Le ricette
Le ricette, dette R1, R2 ed R3, e i risultati dei tre algoritmi potranno ottenere anche risultati diversi. Sta all'esecutore saper scegliere quello corretto (come vedremo in seguito).
Ritornando all'algoritmo
Le cose fondamentali sono:
- acquisizione dei dati (ingresso)
- restituzione dei dati (uscita)
- Importante è anche il linguaggio.
Facciamo un esempio
Immaginiamo di voler scrivere il degoritmo per calcolare una sommatoria Si=1nai. I dati di ingresso sono n ed i vari ai. Osserviamo che ai*0=0, dico che S=0 (inizialmente). Da quindi deve per ii=1,2,...,n>S=S+ai
Ragionamento:
- dati n, ai
- S=0
- per ii=1,2,...,n
- S=S+ai
- resitituito: S
Esempio
- S=0
- i=1 S=S+a1 (S contiene ai)
- i=2 S=S+a1+a2 (S contiene a1, a2 ed an)
- i=3 S=S+a3 (S contiene a1, a2 ed an)
- i=n S=S+an (S contiene a1)
Semplicemente posso non definire S=0 (inizialmente) ma S=a1 In questo caso il degoritmo corretto divile per i=2,3,...,n S=S+ai
Ritornando al caso precedente (S=0) Che cosa succede se utilizzo il seguente agoritmo? Il risultato in questo caso non è S ma ai
- dati n, ai
- per i=1,2,...,n
- S=S+ai
- resituito: S
In questo caso ho spostato il passaggio (2) nel (3). Quindi è sempre fondamentale controllare i dati e la reassomiglianza del risultato ottenuto.
Indichiamo come risolvere il punto 2.
Può essere fatto nel seguente modo:
- 2) per i=1,2,...,n
- per j=1,2,...,i-1
- se negli A[i,j], allora M non diagonale
- per j=1,2,...,i-1
Per l'operazione a volte conviene se MC è una matrice triangolare superiore o inferiore.
In questo caso dovremmo almeno controllare che gli elementi sopra o sotto la matrice siano nulli.
Sempre parlando della matrice, un caso particolare sono le matrici tridiagonali.
Una matrice tridiagonale è della forma seguente:
- a11 a12 0 0
- a21 a22 a23 0
- 0 a32 a33 a34
- 0 0 a43 a44
Quindi in questo caso gli elementi nulli adiacenti della diagonale si parla di antidagonale superiore e cadagonale inferiore.
Più in generale possiamo anche trovare una matrice pentadiagonale.
Queste matrici prendono il nome di matrici a bande.
Analizzare dunque il seguente problema.
Come si sa una matrice è tridiagonale?
L'algoritmo in questo caso non mi dà come risposta un numero ma vero e falso. Però sostituire con due numeri.
Ad esempio:
- indice =0, vero, matrice tridiagonale
- indice =1, falso, matrice non tridiagonale
L'algoritmo è il seguente:
- dati: n,A
- indice =0 (assegnato da la matrice sia tridiagonale)
- per i=1,2,...,n
- per j=1,2,...,i-2
- se neg(expr) allora indice =1 onde -> fine (non è tridiagonale) altrimenti -> continua
- per j=1,2,...,i-2
- per i=1,2,...n
- se neg(expr) allora indice=1 onde -> fine
- altrimenti continua
- risultato =0 in i
Potrebbe essere usato anche in altri modi. Questo proposito è il migliore.
In pratica esistono numeri che un calcolatore rappresenta con un numero finito di cifre, ma che hanno un numero di cifre non nullo maggiore di m.
Ad esempio approssimati.
Quindi per xm che d che x ≠ fl(xm), ma non sarà mai vero.
Per costruire l'approssimazione il modo più rapido è attraverso il troncamento fino alla m-esima cifra.
Detto in modo migliore, il modo più usato per costruire fl(x) è quello di togliere la rappresentazione di x alla m-esima cifra.
Ovviamente tendendo p ≠ fl(x)
Quindi essendo m