Esercizi sulle funzioni

Esercizi sulle funzioni
Calcolo di π con la formula di Leibnitz. Si implementi la funzione:
double Pi_greco (int n)
// pre: 0 ≤ n
// post: ritorna un’approssimazione di pi-greco calcolata
//
come la somma dei primi n termini della formula
//
di Leibnitz, moltiplicata per 4
che calcoli π usando i primi n termini nella somma infinita nota come formula di Leibnitz:
1 1 1 1
π
1− + − + −L =
3 5 7 9
4
(Nota: il metodo converge molto lentamente, come si potrà vedere eseguendo il programma).
Coefficienti binomiali. Si scriva il codice della funzione:
long CoeffBin (int n, int k)
// pre: 0 ≤ k ≤ n
// post: ritorna C(n; k) (n su k)
A questo scopo, in luogo della definizione
 n
n!
C (n; k ) =   =
 k  k!(n − k )!
si impieghi la formula:
 n  n n − k

 =   ⋅
.
 k + 1  k  k + 1
Radice quadrata col metodo di Newton. Il metodo di Newton per il calcolo della radice quadrata
di un numero a si basa sull’osservazione che, se x è un’approssimazione di a allora
y=
1
x +
2
a

x
è un’approssimazione migliore. Si scriva una funzione che calcoli la radice quadrata b di a tale che
b 2 − a < 0.0001 . (Suggerimento: come valore iniziale di x si prenda a ).
Numeri triangolari. Un numero intero è triangolare se appartiene alla sequenza infinita generata
dalla legge:
t1 = 1, t i +1 = t i + (i + 1)
Si implementi la funzione:
bool Triangolare (int n)
// pre: 0 < n
// post: ritorna true se n = t_i per qualche i, false altr.
Test di primalità. Si implementi una funzione che decide se un intero positivo è primo:
bool Primo (int n)
// pre: 0 ≤ n
// post: ritorna true se n è primo, false altrimenti
A questo scopo si utilizzi un algoritmo elementare che controlli la divisibilità di n, sfruttando per
migliorarlo soltanto i seguenti fatti:
1. se n è pari e > 2 non è primo;
2. se n è composto allora esiste un divisore proprio di n che sia ≤ n .
Sviluppo in serie di ex.
esponenziale sia:
Ricordiamo come lo sviluppo in serie di Taylor della funzione
∞
1 k
1
1
x = 1 + x + x2 + x3 + L
2
3!
k = 0 k!
ex = ∑
Si implementi la funzione Exp() con un’approssimazione assegnata, in due modi:
1. si implementi una funzione Fact() per il fattoriale e la si usi con pow() (per le potenze
intere di x) in una implementazione diretta della formula di Taylor;
1
1
x
x k +1 = x k ⋅
2. si sfrutti il fatto che
evitando sia Fact() che pow().
k!
(k + 1)!
k +1