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 ...
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