Calcolo dell’arcoseno col metodo dicotomico

Slides:



Advertisements
Presentazioni simili
INFORMATICA Strutture iterative
Advertisements

Programmazione Procedurale in Linguaggio C++
Simulazione - Inversione Cinematica
Algoritmi numerici Zeri di una funzione Integrale di una funzione
Programmazione Mod A - Cap 2 - prof. Burattini
Equazione di secondo grado.
Linguaggio C++ Fondamenti Un primo semplice esempio:
Radice quadrata di un numero
Strutture di controllo Esercizi!. Utilizzare i metodi: I modi per poter richiamare un metodo, di una classe (ad esempio SavitchIn) sono due. 1) E’ sempre.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Calcolo dell’arcoseno col metodo dicotomico
Introduzione. 2 Perché Java? Java è un linguaggio di programmazione nato per essere eseguito su macchine e sistemi operativi molto diversi fra loro. A.
Qualche esercizio per fissare le idee. Esercizio 1. Scrivere un programma SommaApprossimata che chiede all’utente di inserire due numeri con la virgola,
Indici di Posizione Giulio Vidotto Raffaele Cioffi.
Unità A2 Java: le basi del linguaggio
Java World Matrici.
I teoremi sulle funzioni derivabili
LA DERIVATA DI UNA FUNZIONE
Studio di funzione.
Introduzione al linguaggio C
MASSIMO COMUNE DENOMINATORE (M.C.D)
Tutorato Elementi di Informatica 2013
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
Insiemi di punti: altre caratteristiche
Approcci nella soluzione di un problema
JAVA usa una rappresentazione in VIRGOLA MOBILE
04/09/2018 Il concetto di limite 1 1.
Sulla complessità Lezione n°2
Cerchio e Circonferenza
Prof.ssa Carolina Sementa
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Valutazione Soglie Transizione ADC
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
Linearizzazione di un sensore
Circonferenza e cerchio
Appunti di analisi matematica: Integrale Definito
TERNE PITAGORICHE Obiettivi dell’esercitazione
Programmazione e Laboratorio di Programmazione
Programmare.
Codicfiche Interi Complemento alla base.
iterazione o ricorsione nel pensare per OGGETTI
Linearizzazione di un sensore
Scrivere programmi corretti
Fondamenti di Informatica
© 2007 SEI-Società Editrice Internazionale, Apogeo
Equazioni.
Cosa c’è in copertina? Un bambino che si chiama Roberto e il … mago dei numeri.
Interpretare la grandezza di σ
Strapazziamo le immagini…
Backtracking Lezione n°13 Prof.ssa Rossella Petreschi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
= 17 somma addendi + ADDIZIONE
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Bastoncini per moltiplicare
Unità A2 Java: le basi del linguaggio
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
Le equazioni goniometriche
LINGUAGGIO C Alberi e livelli
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Le variabili Tipo Valori ammissibili
Macchine a stati finiti
Sistemi e Tecnologie della Comunicazione
Fondamenti di Informatica
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
La programmazione strutturata
Algoritmi.
Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri.
Corso di Fondamenti di Informatica
Transcript della presentazione:

Calcolo dell’arcoseno col metodo dicotomico INVSIN Calcolo dell’arcoseno col metodo dicotomico

Esercitazione 6, esercizio 7 Si realizzi un algoritmo in grado di tabulare il valore della funzione arcsin(x) per x compreso nell'intervallo [a,b] con passo c. I valori di a, b, c siano forniti in input da tastiera. Non si utilizzi a tale scopo la funzione arcsin() di libreria, ma si realizzi una funzione invsin(z1,z2,k,e) in grado di calcolarla col metodo di bisezione.

Studio del problema in matematica. Definizione: z = sin()  = arcsin(z)

La funzione seno:

Per l’adozione del metodo dicotomico: Devo considerare un intervallo in cui la funzione è monotona: Nell’intervallo -/2  + /2 la funzione seno è monotona crescente valori assunti: -1  +1

Applicazione metodo dicotomico Fissato un k, devo trovare un : Pongo z1 = -/2, z2 = +/2 Calcolo il valore media=(z1+z2)/2 Se sin(media) = k, media e’ il risultato cercato, altrimenti Se sin(media) è > k, sposto z2 a media, altrimenti sposto z1 a media.

Problemi di terminazione Poiché sin(media) = k potrebbe non verificarsi mai (lavoro con reali), posso porre: |sin(media) – k| < epsilon Svantaggi: applico la precisione alla funzione inversa, e potrei essere in una zona quasi piatta.

Problemi di terminazione (2) In alternativa, potrei verificare se z1 e z2 sono troppo vicini, ad esempio: z2 – z1 < 2 * epsilon Altro metodo ancora: contare le iterazioni, se si supera una prefissata soglia si prende per buono l’ultimo valore. Nota: spesso nel metodo dicotomico si usano tutti e tre i criteri, per avere un algoritmo robusto.

Funzione invsin() Double invsin(double a, double b, double k, double precisione) { float media; int finito; finito = FALSE; while(!finito) media = (a+b)/2; if(fabs(sin(media)-k) > precisione) finito = TRUE; else if(sin(media) > k) b = media; a = media; } return(media);

ATTENZIONE Visto che chiede la precisione dalla tastiera, se fossero stati usati i float, l'utente avrebbe dovuto essere avvertito che la precisione deve essere data al massimo su 7 cifre (il famoso epsilon della macchina), altrimenti il programma potrebbe andare in loop.

ATTENZIONE(1) Per quanto riguarda pigreco, il C definisce in math.h le costanti M_PI, M_PI_2 e M_PI_4 rispettivamente per pi greco, pi greco mezzi, pi greco quarti (ATTENZIONE: non e' compatibile con  ISO C90, occorre andare in: Setting Compile e togliere lo spunto in terza posizione, corrispondente a -ansi).