Radice quadrata di un numero

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

Risolvere la seguente disequazione razionale intera di I grado
INFORMATICA Algoritmi fondamentali
INFORMATICA Strutture condizionali
Linearizzazione di un sensore
Programma: main() { istruzioni } ; assegnazione condizione ciclo istruzione: ;
Nel C non esiste un dato primario di tipo stringa; queste sono rappresentate con un array monodimensionale di caratteri (tipo char). Così per definire.
Calcolo del minimo comune multiplo (m.c.m.) Luigi Sante
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Iterazione A. Ferrari.
Procedure e funzioni ricorsive
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
ESERCITAZIONE N. 5 ESERCIZIO N. 1 Autore: Biagio Brattoli S I Corso.
INFORMATICA Strutture iterative
Esercitazione 5 Esercizio 3 (radice quadrata con metodo di Newton)
FUNZIONI DI BIBLIOTECA
Iterazione enumerativa (for)
Continuità delle funzioni. Funzione continua in un punto Sia y=f(x) una funzione definita in un intervallo, aperto o chiuso, e sia x 0 un punto interno.
Algoritmi Politecnico di Milano
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
Algebra di Boole ed elementi di logica
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Algoritmi numerici Zeri di una funzione Integrale di una funzione
INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
CONTINUITA’ Una funzione continua e’ una funzione il cui grafico non presenta interruzioni CONTINUA DISCONTINUA.
Programmazione Mod A - Cap 2 - prof. Burattini
APPUNTI SUL LINGUAGGIO C
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Strutture di controllo nel C
Strutture di controllo in C -- Flow Chart --
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Le funzioni.
Espressioni condizionali
Calcolo del Massimo Comun Divisore
METODI NUMERICI PER LA RICERCA DEGLI ZERI DI UNA FUNZIONE
Equazione di secondo grado.
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
Programmazione di Calcolatori
Massimo Comun Divisore
Bergamini, Trifone, Barozzi – La matematica del triennio
La complessità media O(n log n) di Quick-Sort vale soltanto se tutte le permutazioni dell’array in ingresso sono ugualmente probabili. In molte applicazioni.
14 marzo 2002 Avvisi:.
Esercizi su File.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
Anno accademico Le istruzioni di controllo in C.
Matematica I: Calcolo differenziale, Algebra lineare, Probabilità e statistica Giovanni Naldi, Lorenzo Pareschi, Giacomo Aletti Copyright © The.
Ripetizione La vera potenza dei programmi per computer risiede nella capacità di ripetere lo stesso calcolo o sequenza di istruzioni più volte, ogni volta.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Ottobre 2014.
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algebra di Boole ed elementi di logica Marco D. Santambrogio – Ver. aggiornata.
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Operatori di incremento e decremento
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Esercizio n.5 a) Dimostrare che, dato un qualunque  > 0, se  m’ : | I m’ + 1  I m’ |   allora Ciò consente, prefissato un certo  > 0, errore massimo.
Complessità Computazionale
F U N Z I O N I Definizioni Tipi Esponenziale Logaritmica
Conio.h contiene la dichiarazione di funzioni usate per richiamare alcune routine DOS di gestione del video e della tastiera. NECESSARIA PER system(‘’cls’’)
Calcolo della radice quadrata Con metodo della bisezione Rodolfo Pietrasanta matr
Calcolo dell’arcoseno col metodo dicotomico
I LIMITI.
1Funzioni continue - IISS "E. Medi" - Galatone - prof. Giuseppe Frassanito a. s. 2011/2012.
Metodi di ricerca approssimata dello zero di una funzione F(z) = 0.
Linearizzazione di un sensore
Linearizzazione di un sensore
Transcript della presentazione:

Radice quadrata di un numero Salomone Fabio matr. 191337

Problema Scrivere un algoritmo per determinare la radice quadrata di un numero positivo mediante il metodo di bisezione o metodo dicotomico.

Studio del problema nel suo dominio specifico (1) In matematica qualunque numero positivo possiede una radice quadrata, cioè un numero che moltiplicato per se stesso dà come risultato il numero iniziale. L’espressione funzionale è: y1/2 = x , cioè il numero y è tale che y = x2. Da cui: x2 – y = 0.

Studio del problema nel suo dominio specifico (2) In questo modo si riconduce il calcolo della radice al problema di determinare lo zero di una funzione. NOTA: si mette anche in relazione una funzione, la radice, con la sua funzione inversa, il quadrato.

Studio del problema nel suo dominio specifico (3) Per verificare se esiste lo zero della funzione applichiamo il teorema di esistenza degli zeri, cioè se una funzione è reale, continua in un intervallo chiuso e limitato [a,b] ed assume valori di segno opposto agli estremi dell’intervallo, allora esiste almeno un punto X tale che f(X)=0. Inoltre la funzione che si considera è strettamente monotona, quindi lo zero è unico.

Applicazione grafica del metodo dicotomico F(x) F(x) = x2 F(b) Q2 Q3 Y Q1 F(a) x O a M1 X M3 M2 b

Passo importante (1) Per applicare il metodo dicotomico bisogna individuare gli estremi superiore ed inferiore dell’intervallo in cui si cerca la radice quadrata: Ipotesi:generalmente la radice è  al valore stesso. Gli estremi si possono supporre: limite_inf = 0, limite_sup = valore; ATTENZIONE: nel caso di 0 < valore < 1 si ha radice > valore. Raffinamento: Se valore > 1, allora si possono inizializzare limite_inf = 1, limite_sup = valore; Se 0 < valore <= 1 allora si può avere limite_inf = 0, limite_sup = 1.

Passo importante (2) Determinati gli estremi su cui operare bisogna applicare il metodo di bisezione o dicotomico, il quale consiste in tre passi: Calcolare il punto medio dell’intervallo; Calcolare il quadrato del valor medio; Restringere l’intervallo di iterazione del procedimento, spostando il limite superiore o inferiore dell’intervallo nel punto medio.

Bozza dell’algoritmo (1) Leggi valore In base a valore, determina limite_inf e limite_sup /* passo importante: */ medio  (limite_inf + limite_sup) / 2 quadrato  medio * medio Se (quadrato > valore) limite_sup  medio Altrimenti limite_inf  medio DOMANDA: Quante volte eseguo il passo?

Bozza dell’algoritmo (2) Leggi valore In base a valore, determina limite_inf e limite_sup /* Ipotesi */ Finché quadrato  valore /* passo importante: */ medio  (limite_inf + limite_sup) /2 quadrato  medio * medio Se (quadrato > valore) limite_sup  medio Altrimenti limite_inf  medio

Osservazione quadrato  valore è equivalente a not (quadrato = valore). Osserviamo l’uguaglianza: Poiché quadrato è il risultato di un’elaborazione (medio * medio), l’uguaglianza potrebbe non essere mai raggiunta (quindi l’algoritmo andrebbe in “loop”). SOLUZIONE: quadrato = valore è equivalente a (quadrato – valore) = 0, allora si può porre ragionevolmente: |quadrato – valore| <  (con  piccolo a piacere, compatibilmente con la precisione della rappresentazione).

Bozza dell’algoritmo (3) Leggi valore In base a valore, determina limite_inf e limite_sup /* Raffinamento */ Finché |quadrato – valore| > epsilon /* passo importante: */ medio  (limite_inf + limite_sup) / 2 quadrato  medio * medio Se (quadrato > valore) limite_sup  medio Altrimenti limite_inf  medio ATTENZIONE: Devo inizializzare quadrato in modo da garantire che si entri nel ciclo.

Bozza dell’algoritmo (4) Leggi valore In base a valore, determina limite_inf e limite_sup quadrato  valore + 2*epsilon Finché |quadrato – valore| > epsilon /* passo importante: */ medio  (limite_inf + limite_sup) / 2 quadrato  medio * medio Se (quadrato > valore) limite_sup  medio Altrimenti limite_inf  medio

Algoritmo L’algoritmo generale da seguire è: Leggi valore da tastiera; Verifica se valore è un numero positivo, altrimenti hai finito; Assegna gli estremi dell’intervallo; Inizializza quadrato, per poter entrare nel ciclo; Applica il metodo dicotomico, calcolando medio e quadrato, finché la differenza tra quadrato e valore è maggiore di un epsilon fissato; Visualizza medio; Calcola la radice con la funzione sqrt(x) e visualizzala per confronto.

Start Stop Leggi valore Se valore >= 0 Se valore >= 1 F V Se valore >= 1 F Stampa ERRORE limite_inf = 1 limite_sup = valore limite_inf = 0 limite_sup = 1 Inizializza quadrato = valore + 2*EPSILON Finché |quadrato - valore| > EPSILON F Stampa medio V Calcola medio Calcola quadrato Calcola sqrt (valore) Se quadrato > valore V F Stampa sqrt limite_sup = medio limite_inf = medio Stop

Programma in linguaggio C #include <stdio.h> #include <stdlib.h> #include <math.h> #define EPSILON 0.001 int main() { double valore; double limite_sup, limite_inf; double quadrato, medio; printf("Inserisci il dato di cui vuoi la radice quadrata: "); scanf("%lf", &valore); if (valore >= 0) if (valore > 1) limite_sup = valore; limite_inf = 1; } else limite_sup = 1; limite_inf = 0;

quadrato = valore + 2 * EPSILON; while ( fabs(quadrato - valore) > EPSILON ) { medio = (limite_sup + limite_inf) / 2; quadrato = medio * medio; if (quadrato > valore) limite_sup = medio; else limite_inf = medio; } printf("\nLa radice quadrata di %f vale %f\n", valore, medio); printf("\nLa funzione sqrt fornisce il valore %f\n", sqrt(valore)); printf("\nIl valore inserito non è valido perche' e' negativo!\n"); return EXIT_SUCCESS;