18.01.2015 Views

Appunti di Calcolo Numerico - Esercizi e Dispense - Università degli ...

Appunti di Calcolo Numerico - Esercizi e Dispense - Università degli ...

Appunti di Calcolo Numerico - Esercizi e Dispense - Università degli ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

12.5. Dati <strong>di</strong> input<br />

A= input(’ matrice A ’);<br />

nello script scriveremo<br />

A= input(’ file <strong>di</strong> input con la matrice A ’, ’s’);<br />

A= load(A);<br />

Osserviamo che abbiamo usato input inserendo, oltre alla stringa tra apici ’file <strong>di</strong> input con<br />

la matrice A’, anche ’s’: questa opzione serve perchè noi scriveremo il nome del file su cui si trova<br />

memorizzata la matrice e questo file viene letto come una stringa <strong>di</strong> caratteri per cui inizialmente alla variabile<br />

A viene associato il file con la matrice (in questo caso A.dat). Con il comando successivo, viene caricato<br />

il file e memorizzato <strong>di</strong> nuovo sulla variabile A, che quin<strong>di</strong> <strong>di</strong>venta la nostra matrice.<br />

Si osservi la <strong>di</strong>fferenza che c’è nel lasciare o meno spazi bianchi prima dell’apice che chiude la frase che<br />

viene visualizzata sulla Command Window tramite input.<br />

È utile sapere anche che, se un’istruzione è troppo lunga e si vuole andare a capo, si utilizzano tre puntini<br />

... sulla riga che si vuole interrompere e si prosegue a scrivere sulla riga successiva.<br />

12.5.1 Programma sul metodo delle bisezioni<br />

Consideriamo l’algoritmo del metodo delle bisezioni, per calcolare gli zeri <strong>di</strong> un’opportuna funzione f .<br />

Ad esempio vogliamo risolvere il problema f (x) = 0 con f (x) = ( x 2 )2 − sin(x) nell’intervallo [1,3].<br />

Dobbiamo scrivere il programma principale, in un file che chiamiamo bisez.m, e la function legata alla<br />

funzione f (x), in un file che chiamiamo fun.m.<br />

Scriviamo il programma principale:<br />

% programma per i l calcolo d e g l i z e r i <strong>di</strong> una funzione me<strong>di</strong>ante<br />

% i l metodo <strong>di</strong> bisezione<br />

a=input (’primo estremo dell’’intervallo a ’ ) ;<br />

b=input (’secondo estremo dell’’intervallo b ’ ) ;<br />

aux=fun ( a ) * fun (b ) ;<br />

i f aux>=0<br />

<strong>di</strong>sp (’estremi dello stesso segno’)<br />

break<br />

end<br />

itmax =100;<br />

t o l l =1.e−10;<br />

i t e r =0;<br />

c =(a+b ) * 0 . 5 ;<br />

scarto=abs (b−a ) * 0 . 5 ;<br />

while i t e r t o l l<br />

i t e r = i t e r +1;<br />

aux=fun ( a ) * fun ( c ) ;<br />

i f aux>0<br />

a=c ;<br />

else<br />

b=c ;<br />

end<br />

c =(a+b ) * 0 . 5 ;<br />

scarto=abs (b−a ) * 0 . 5 ;<br />

end<br />

i f fun ( c)==0 | | scarto < t o l l<br />

s p r i n t f (’%s %15.8e’ , ’soluzione approssimata c= ’ , c )<br />

else<br />

s p r i n t f (’%s’ , ’raggiunto numero max <strong>di</strong> iterazioni ’)<br />

end<br />

Per poter essere eseguito, dobbiamo scrivere in un file chiamato fun.m la function fun. Si ha:<br />

function y=fun ( x )<br />

% funzione per lo schema d e l l e b i s e z i o n i<br />

191

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!