• Non ci sono risultati.

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
7
0
0

Testo completo

(1)

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 monotona in un intervallo definito

Ricerca dello zero di una funzione monotona 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

(2)

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 monotona in un intervallo definito

Ricerca dello zero di una funzione monotona in un intervallo definito

y= 3*x-7 Funzione per

cui trovare il punto di zero

Y = 0  X = 2, 3333

X Y

(3)

Elementi di Informatica

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

Ricerca dello zero di una funzione monotona 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

#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");

Ricerca dello zero di una funzione

monotona in un intervallo definito

(4)

Elementi di Informatica

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

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 monotona in un intervallo definito

Ricerca dello zero di una funzione monotona in un

intervallo definito

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; // punto medio in (x1, x2) fmed=fnz(xm); // valore fnz in punto medio 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

(5)

Elementi di Informatica

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

float fnz(float x) {float y;

y= 3*x-7 return y;

}

Funzione per cui trovare il punto di zero

Ricerca dello zero di una funzione monotona in un

intervallo definito

Y = 0  X = 2, 3333

X Y

Definizione del problema:

Si vuole effettuare il calcolo dell’integrale definito

a

b

f(x) dx

utilizzando la formula di quadratura di Eulero

Definizione della specifica del programma:

I: a, b reali estremi dell’intervallo di integrazione;

dx, reale, passo di integrazione; funzione da integrare Pi: b>a; dx>0

U: il valore dell’integrale

Pu: se le Pi non sono verificate il valore dell’integrale è indefinito

Descrizione del metodo di elaborazione:

Si richiede in input l’immissione degli estremi di integrazione e del passo di integrazione; si effettua il calcolo dell’integrale secondo il metodo di quadratura di Eulero:

Calcolo di integrale definito con il metodo di Eulero

dx

b bdx

(6)

Elementi di Informatica

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

funzione da integrare y = 3*x;

nell’intervallo (0, 3)

X Y

A = (3 * 9)/2 =13,5

0

33x dx = 13,5

dx = 0,5

A = 0,5 *(0 + 1,5 + 3 +4,5 + 6 + 7,5 + 9) = 0,5 *15,75

#include <stdio.h>

float funzione(float x);

float eulero (float a, float b, float dx);

main ()

{float estinf, estsup, passo;

do

{ printf("Immetti estremo inferiore di integrazione \n");

scanf("%f", &estinf);

printf("Immetti estremo superiore di integrazione \n");

scanf("%f", &estsup);

} while ((estinf>=estsup);

do

{ printf("Immetti passo di integrazione \n");

scanf("%f", &passo);

} while ((passo<=0);

printf("Integrale definito tra %f e %f = %f \n", estinf, estsup, eulero(estinf, estsup, passo));

}

Calcolo di integrale definito con il metodo di Eulero:

il programma C

(7)

Elementi di Informatica

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

Calcolo di integrale definito con il metodo di Eulero:

il programma C

float eulero (float a, float b, float dx) {

float x, S;

S=0;

for(x=a;(x<b);(x=x+dx)) S=S+funzione(x);

S=S*dx;

return S;

} // funzione da integrare

float funzione(float x) {float y = 3*x;

return y;

}

funzione da integrare in (0,3) // funzione da integrare

float funzione(float x) {float y = 3*x;

return y;

}

X Y

0

33x dx = 13,5

Riferimenti

Documenti correlati

Per il teorema di Weierstrass la risposta esatta `

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

Nello sviluppo della definizione di integrale per una funzione limitata su un intervallo chiuso e limitato, prima abbiamo definito l’integrale di una fun- zione a gradini ϕ ( come

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