programmi c++

1
LABORATORIO DI PROGRAMMAZIONE E CALCOLO Canale 2, A.A. 2013/14 Foglio di esercizi N. 10 57) Scrivere un programma che genera i valori delle due successioni: a n = (1 + 1/n) n , b n = (1 + 1/n) n+1 al variare di n. Osservare che a n < e < b n , con a n crescente e b n decrescente. Aggiungere come criterio di arresto b n - a n per una tolleranza ε assegnata e studiare come varia il valore di n finale in funzione della tolleranza. 58) Scrivere un programma che dato x [-2, 3] determina un valore appros- simato di e x attraverso il calcolo del relativo polinomio di Taylor p n ( x) (di punto iniziale x 0 = 0), e confronta al crescere di n il valore ottenuto con quello fornito dalla funzione exp(x) della libreria math.h di C. Utilizzare in particolare il program- ma per calcolare un valore approssimato di e, e confrontare i risultati con quelli forniti dall’esercizio precedente. 59) Usando l’esercizio precedente scrivere in un file i valori del polinomio di Taylor p n ( x) di e x di grado n assegnato su N nodi equidistanti di un intervallo [a, b] contenente l’origine. Lanciare poi il programma Gnuplot mettendo a confronto il grafico del file creato con quello corrispondente della funzione exp( x). Ripetere il procedimento per valori di n crescenti. Confrontare l’errore massimo ottenuto sull’intervallo con la corrispondente stima a priori fornita dal resto di Lagrange della formula di Taylor. 60) Scrivere un programma che realizza un’approssimazione polinomiale di Tay- lor (con x 0 = 0) della funzione cos( x) accurata entro una tolleranza ε per ogni x [-π, π]. Usare come criterio di arresto la stima dell’errore relativo. 61) (facoltativo) Scrivere un programma in grado di calcolare in modo eciente il logaritmo naturale di un numero reale positivo x. Dato x il programma determina i numeri α [0.5, 1[ e β tali che x = α * 2 β , di modo che log( x) = log(α) + β * log(2). Quindi calcola il log(α) attraverso lo sviluppo di Taylor log(α) = log( 1 - z 1 + z ) ’-2 * (z + z 3 3 + ... + z 2n-1 2n - 1 ) dove z = (1 - α)/(1 + α) ]0, 1/3], e n ` e scelto come il primo numero per il quale z 2n-1 /(2n - 1) (ε tolleranza assegnata). 62) Scrivere un programma che assegnata una funzione derivabile f ( x) e un punto x 0 , calcola e stampa in una tabella i valori in x 0 delle dierenze finite prime di f in avanti, all’indietro e centrata, al variare del passo h. Iniziare da un passo h = 0.2e ripetere dimezzando ogni volta il passo. Assegnando anche la funzione derivata ` e possibile tabulare anche l’errore assoluto commesso in funzione di h. Confontare i risultati con le stime teoriche di convergenza delle formule precedenti.

Upload: pixi1992

Post on 19-Oct-2015

12 views

Category:

Documents


5 download

DESCRIPTION

esercizi teorici e non in c++/c su algoritmi di analisi numerica

TRANSCRIPT

  • LABORATORIO DI PROGRAMMAZIONE E CALCOLOCanale 2, A.A. 2013/14

    Foglio di esercizi N. 1057) Scrivere un programma che genera i valori delle due successioni:

    an = (1 + 1/n)n , bn = (1 + 1/n)n+1

    al variare di n. Osservare che an < e < bn, con an crescente e bn decrescente.Aggiungere come criterio di arresto bn an < per una tolleranza assegnata estudiare come varia il valore di n finale in funzione della tolleranza.

    58) Scrivere un programma che dato x [2, 3] determina un valore appros-simato di ex attraverso il calcolo del relativo polinomio di Taylor pn(x) (di puntoiniziale x0 = 0), e confronta al crescere di n il valore ottenuto con quello fornitodalla funzione exp(x) della libreria math.h di C. Utilizzare in particolare il program-ma per calcolare un valore approssimato di e, e confrontare i risultati con quelliforniti dallesercizio precedente.

    59) Usando lesercizio precedente scrivere in un file i valori del polinomio diTaylor pn(x) di ex di grado n assegnato su N nodi equidistanti di un intervallo [a, b]contenente lorigine. Lanciare poi il programma Gnuplot mettendo a confronto ilgrafico del file creato con quello corrispondente della funzione exp(x). Ripetereil procedimento per valori di n crescenti. Confrontare lerrore massimo ottenutosullintervallo con la corrispondente stima a priori fornita dal resto di Lagrangedella formula di Taylor.

    60) Scrivere un programma che realizza unapprossimazione polinomiale di Tay-lor (con x0 = 0) della funzione cos(x) accurata entro una tolleranza per ognix [pi, pi]. Usare come criterio di arresto la stima dellerrore relativo.

    61) (facoltativo) Scrivere un programma in grado di calcolare in modo efficienteil logaritmo naturale di un numero reale positivo x. Dato x il programma determinai numeri [0.5, 1[ e tali che x = 2, di modo che log(x) = log()+ log(2).Quindi calcola il log() attraverso lo sviluppo di Taylor

    log() = log(1 z1 + z

    ) ' 2 (z + z3

    3+ ... +

    z2n1

    2n 1)dove z = (1 )/(1 + ) ]0, 1/3], e n e` scelto come il primo numero per il qualez2n1/(2n 1) < ( tolleranza assegnata).

    62) Scrivere un programma che assegnata una funzione derivabile f (x) e un puntox0, calcola e stampa in una tabella i valori in x0 delle differenze finite prime di f inavanti, allindietro e centrata, al variare del passo h. Iniziare da un passo h = 0.2 eripetere dimezzando ogni volta il passo. Assegnando anche la funzione derivata e`possibile tabulare anche lerrore assoluto commesso in funzione di h. Confontare irisultati con le stime teoriche di convergenza delle formule precedenti.