Zeri di una funzione - numerici per la ricerca...  METODO DI BISEZIONE...

download Zeri di una funzione - numerici per la ricerca...  METODO DI BISEZIONE Apartiredall’intervallo

of 18

  • date post

    15-Feb-2019
  • Category

    Documents

  • view

    214
  • download

    0

Embed Size (px)

Transcript of Zeri di una funzione - numerici per la ricerca...  METODO DI BISEZIONE...

DETERMINAZIONE DEGLI ZERI DI UNA FUNZIONEProf.Daniele Attampato

Il problema da affrontare e calcolare in modo approssimato gli zeri di unafunzione, cioe i valori di x per cui la funzione si annulla.

I metodi per calcolare gli zeri di una funzione sono:1.metodo di bisezione2.metodo delle tangenti3.metodo delle secanti4.metoto del punto unito

Perche i metodi possano essere applicabili devono verificarsi leseguenti condizioni: la funzione deve ammettere uno zero nellintervallo [a,b] la funzione deve essere continua nellintervallo [a,b] la funzione deve essere secante allasse delle x e non tangente(questo significa che il segno della f(x) a destra dello zero deve essereopposto al segno a sinistra dello zero)

Per ottenere lintervallo di partenza [a,b] si puo tracciare il graficodella funzione con Derive e prendere due valori di x che contengano lozero (separazione delle radici).

- se i due valori hanno segnoopposto (il loro prodotto enegativo) allora la funzione siannulla proprio in [a,c]; si poneallora bc e si ripete la procedura.

- se i due valori hanno stessosegno (il loro prodotto e positivo)allora la funzione si annulla in[c,b]; si pone allora ac e si ripetela procedura.

METODO DI BISEZIONE

A partire dallintervallo [a,b], si considera lintervallo [a,c] con c punto mediotra a e b, e si calcola il valore della funzione nei due estremi:

INIZIO

c=(a+b)/2

f(a)*f(c) > 0 ?SI NO

a=c b=c

b - a < e ?NO

SI

FINE

Condizione di arresto: il programma si ferma quando lintervallo diventato piu piccolo di un valore e, detto errore assoluto (inalternativa puo essere considerato lerrore relativo).Alla fine del ciclo si pu prendere indifferentemente a o b comeapprossimazione dello zero.

ESERCIZIO

Graficare la funzione y=x5+x3-7x2-x+6 con Derive ed effettuarevisivamente la separazione delle radici.

Determinare lo zero della funzione nell'intervallo [a,b] usando ilmetodo numerico di BISEZIONE.

CODICE IN LINGUAGGIO C

#include /* include le funzioni di input/output */

#include /* include le funzioni matematiche: in tal caso pow(base,esp) */

#include /* include la funzione system(PAUSE) */

float f(float x){

float y;

y=pow(x,5)+pow(x,3)-7*pow(x,2)-x+6;

return y;

}

int main(){

float a,b,c,e; /* [a,b] l'intervallo contenente lo zero c il punto medio di [a,b] e l'err assoluto*/

printf(" INSERIRE L'INTERVALLO [a,b] \n");

printf(" ESTREMO SINISTRO a= ");

scanf("%f",&a);

printf(" ESTREMO DESTRO b= ");

scanf("%f",&b);

printf(" INSERIRE L'ERRORE ASSOLUTO e= ");

scanf("%f",&e);

while ((b-a)>e){

c=(b+a)/2;

if (f(a)*f(c)

Questo si traduce applicandoiterativamente la formula:

xn+1 = xn f(xn)/f(xn)

dove xn rappresenta lapprossimaz.corrente ed xn+1 lapprossimazionesuccessiva.

Inizializzazione:x0=a se f(a)*f(a) > 0x0=b se f(a)*f(a) < 0

f(xn) rappresenta il valore dellafunzione in xn, mentre f(xn) ilvalore della derivata prima dellafunzione in xn.

METODO DELLE TANGENTI

Partendo da un punto prossimo allo zero, lintersezione dellasse delle x conla tangente alla funzione in quel punto determina la successivaapprossimazione dello zero cercato. Il metodo converge se la derivataseconda della funzione costante in [a,b].

x0=a x1 x2

y - f(x0)=f(x0)(x-x0)y=0

-f(x0)=f(x0)(x-x0)

x= x0 - f(x0)/f(x0)

La formula converge verso lo zero a patto che la funzione sia monotona tralestremo scelto e lo zero: la tangente non deve mai cambiare di segnodurante il processo di avvicinamento, altrimenti lalgoritmo torna indietro ediverge.

Condizione di arresto: lesecuzione termina quando due approssimazioniconsecutive differiscono, in valore assoluto, di un valore pi piccolo di e(errore assoluto). Si considera il valore assoluto per garantire che ladifferenza xn+1-xn (ampiezza dellintervallo) sia comunque sempre positiva.

NB: Nel codice, prima del ciclo, alle variabili xn e xn+1 vengono assegnati i valori degli estremidellintervallo [a,b], in modo da poter soddisfare da subito la condizione ed entrare nel ciclostesso per iniziare le iterazioni. Al primo passaggio nel ciclo, a partire da uno dei due estremi, siricava lapprossimazione successiva, e cos via (laltro estremo non viene utilizzato).

ESERCIZIOGraficare la funzione y=x5+x3-7x2-x+6 con Derive ed effettuarevisivamente la separazione delle radici.

Implementare un programma in linguaggio C per determinare lo zerodella funzione nell'intervallo [a,b] usando il metodo numerico delleTANGENTI.

La derivata prima della funzione data : y=5x4+3x2-14x-1

Questo si traduce applicandoiterativamente la formula:

xn+1 = xn f(xn)*(xn-c)

f(xn)-f(c)

dove xn rappresenta lapprossimaz.corrente ed xn+1 lapprossimazionesuccessiva.

Inizializzazione:x0=a, c=b se f(a)*f(a) < 0x0=b, c=a se f(a)*f(a) > 0

METODO DELLE SECANTIQuesto metodo utilizza lintersezione di una secante con lasse x perdeterminare la successiva approssimazione dello zero cercato. Rispetto almetodo delle tangenti non richiede luso della derivata, ma necessita di unpunto fisso da utilizzare come secondo punto per determinare le variesecanti. Il metodo converge se la derivata seconda della funzione costante in [a,b].

a

(x-x0)/(a-x0) = (y-f(x0))/(f(a)-f(x0)) eq. Retta per due punti

y=0

x = x0 f(x0)*(x0-a)---------------

f(x0)-f(a)

x0 = bx1x2

f(a)

f(x0)x3

Lalgoritmo converge nella maggioranza dei casi anche se possibile che inqualche raro caso patologico possa perdere lo zero.Ad ogni modo, la sua efficacia e meno legata alle particolari caratteristichedella funzione, rispetto al metodo delle tangenti, anche se un po piu lentodal punto di vista della velocita di convergenza (necessita in generale di unmaggior numero di iterazioni per raggiungere la soluzione).Per il resto, la struttura ciclica e la condizione di uscita dei due metodi sonoidentiche.

Condizione di arresto: lesecuzione termina quando due approssimazioniconsecutive differiscono, in valore assoluto, di un valore pi piccolo di e(errore assoluto). Si considera il valore assoluto per garantire che ladifferenza xn+1-xn (ampiezza dellintervallo) sia comunque sempre positiva.

NB: Nel codice, prima del ciclo, alle variabili xn+1 e xn vengono assegnati i valori degli estremidellintervallo [a,b], in modo da poter soddisfare da subito la condizione ed entrare nel ciclostesso per iniziare le iterazioni.

ESERCIZIOGraficare la funzione y=x5+x3-7x2-x+6 con Derive ed effettuarevisivamente la separazione delle radici.

Implementare un programma in linguaggio C per determinare lo zerodella funzione nell'intervallo [a,b] usando il metodo numerico delleSECANTI.

Osservando il grafico di esempio, laintersezione delle due curve ilpunto unito (Pu), la cui ascissa xPu la radice cercata.Il metodo ricorsivo per trovare ilvalore approssimato dellascissa delpunto unito xPu il seguente:x1x2=g(x1)x3=g(x2)x4=g(x3)..Se viene soddisfatta la condizionesufficiente di convergenza (vedipagina successiva) la successionedei valori x1xn converge a xPu.

METODO DEL PUNTO UNITOData una funzione f(x), il sistema per la ricerca delle radici (o zeri) :

y=f(x) f(x)=0 Sommando x ad entrambi i membri si ottiene:y=0 f(x)+x=x

(in alternativa, se possibile, si pu isolare x a destra direttamente nella f(x))

E sufficiente allora studiare le intersezioni delle funzioni g(x)=f(x)+x et(x)=x

Convergenza: condizione sufficienteSe g(x) derivabile in I = [a, b] e |g(x)|

ESERCIZIOGraficare la funzione = con Derive. Tramite il foglioelettronico (n=10 iterazioni) determina un valore approssimato dellaradice presente nellintervallo [0,1] usando il metodo numerico del puntounito.

= 2 1 = 0 1 = (isolo la x a secondo membro)g(x)= t(x)=

Verifica della condizione sufficiente di convergenza|g(x)|

Calcolo dellapprosimazione della radice

La soluzione esatta x = 0.5505102572