• Non ci sono risultati.

1 Elementi di Informatica a.a. 2014/15 - Prof. G.A. Di Lucca

N/A
N/A
Protected

Academic year: 2021

Condividi "1 Elementi di Informatica a.a. 2014/15 - Prof. G.A. Di Lucca "

Copied!
4
0
0

Testo completo

(1)

1 Elementi di Informatica a.a. 2014/15 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria – Università del Sannio - CdL Ingegneria Energetica

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 1

Definizione del problema: Si vuole trovare il valore della ascissa per cui una funzione monotona assume valore zero in un determinato intervallo e con una approssimazione fissata

Definizione della specifica del programma:

I: a, b reali estremi dell’intervallo; funzione da valutare; eps, reale, approssimazione richiesta

Pi: b>a; eps>0; f(a) * f(b)<0

U: il valore della ascissa per cui si ha il punto di nullo per la funzione

Pu: nessuna

Ricerca dello zero di una funzione in un intervallo definito

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 2

Ricerca dello zero di una funzione in un intervallo definito

a

h b h

x

m

x

m

=(b+a)/2

Si verifica se in xm si ha lo zero ... metodo di bisezione ...

Ai due estremi (a,b) la funzione deve assummere valori di segno opposto

a x

m

b

x

m

Se in xm il valore della funzione è maggiore di zero la ricerca continua nel semintervallo (a, xm), poi in (x’m, xm) e così via fin quando si è trovato il punto di nullo o l’intervallo si è dimezzatto ad una ampiezza pari o inferiore a quella della approssimazione fissata

Se in xm il valore della funzione è minore di zero la ricerca continua nel semintervallo (xm ,b), poi ...

(2)

2 Elementi di Informatica a.a. 2014/15 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria – Università del Sannio - CdL Ingegneria Energetica

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 3

Descrizione del metodo di elaborazione:

• Si richiede in input l’immissione degli estremi dell’intervallo e la approssimazione;

• viene valutato il valore della funzione nel punto medio dell’intervallo (a,b): se in esso la funzione ha un nullo il procedimento termina altrimenti continua dimezzando l’intervallo e continuando la ricerca nel semintervallo per cui il valore della funzione nel punto medio di questo ha valore di segno opposto a quello di uno degli estremi.

• Il procedimento continua fino a quando è trovato il punto di nullo (con la

approssimazione indicata) o l’ampiezza dell’intervallo è inferiore o uguale a quella dell’approssimazione indicata.

• Si utilizzeranno due sottoprogrammi di tipo funzione:

• Uno per definire la funzione di cui valutare il punto di zero

• L’altro implementante l’algoritmo che cerca il punto di zero dimezzando di volta in volta l’intervallo in cui è effettuata la ricerca

Ricerca dello zero di una funzione in un intervallo definito

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 4

Ricerca dello zero di una funzione in un intervallo definito

y= 3*x-7 Funzione per

cui trovare il punto di zero

Y = 0  X = 2, 3333

X Y

(3)

3 Elementi di Informatica a.a. 2014/15 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria – Università del Sannio - CdL Ingegneria Energetica

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 5

Ricerca dello zero di una funzione in un intervallo definito

y= 3*x-7 Funzione per

cui trovare il punto di zero

Y = 0  X = 2, 3333

X

Y float fnz(float x)

{float y;

y= 3*x-7 return y;

}

Sottoprogramma C di tipo function, descrivente la funzione per cui trovare il punto di zero

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 6

#include <stdio.h>

#include <math.h>

float fnz(float x) ;

float zerofun (float a, float b, float ep);

main ()

{float estinf, estsup, eps;

do

{ printf("Immetti estremo inferiore intervallo \n");

scanf("%f",&estinf);

printf("Immetti estremo superiore intervallo \n");

scanf("%f", &estsup);

if ((fnz(estinf) * fnz(estsup))>0) printf ("estremi non validi \n");

} while ((estinf>=estsup) || (fnz(estinf) * fnz(estsup))>0);

do

{printf(" Immetti precisione \n");

scanf("%f", &eps);

} while (eps<=0);

printf(" ESTINF= %f ESTSUP= %f precisione= %f \n",estinf, estsup, eps);

printf ("Lo zero si trova nel punto x= %f \n", zerofun(estinf,estsup, eps));

printf("FINE \n");

}

Ricerca dello zero di una funzione

in un intervallo definito

(4)

4 Elementi di Informatica a.a. 2014/15 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria – Università del Sannio - CdL Ingegneria Energetica

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 7

Ricerca dello zero di una funzione in un intervallo definito float fnz(float x)

{float y;

y= 3*x-7 return y;

}

Funzione per cui trovare il punto di zero

float zerofun (float a, float b, float ep) { float x1, x2, xm, finf, fmed;

finf=fnz(a);

x1=a; x2=b;

do

{ xm=(x1+x2)/2;

fmed=fnz(xm);

if (finf*fmed<0) x2=xm;

else { x1=xm;

finf=fmed;}

}while (fabs(x2-x1)>=ep);

printf(“Y = %f EPS = %f \n”, fmed, ep);

return ((x1+x2)/2);

}

Funzione implementante l’algoritmo che cerca il punto di zero dimezzando l’intervallo di ricerca

Riferimenti

Documenti correlati

Per ipotesi tutte le derivate parziali della funzione sono nulle, in particolare sono funzioni continue e quindi, per il teorema del differenziale totale, la funzione f

Di seguito si riporta il riassunto degli argomenti svolti; i riferimenti sono a parti del Cap.8 (Calcolo integrale ...) Par.5 (Metodi elementari ...) del testo ed alle note alla fine

D’ora in poi ci limiteremo salvo avviso contrario a considerare funzioni defi- nite su intervalli non ridotti a un punto, o unioni di tali intervalli.. Una volta nota una primitiva

Ad esempio, vediamo come si possa riottenere il limite notevole per il confronto fra la funzione sin x e la funzione x, per x che tende a 0.... Derivate successive delle

• viene valutato il valore della funzione nel punto medio dell’intervallo (a,b): se in esso la funzione ha un nullo il procedimento termina altrimenti continua dimezzando l’intervallo

• viene valutato il valore della funzione nel punto medio dell’intervallo (a,b): se in esso la funzione ha un nullo il procedimento termina altrimenti continua dimezzando l’intervallo

Per il teorema di Weierstrass la risposta esatta `

L’insieme delle soluzioni formano uno spazio vettoriale di dimensione 2.. L’integrale si pu`o calcolare sia in cartesiane, sia con un cambiamento di variabili in coordinate