Problemini del lunedì [22 Ott]
Si raccomanda, soprattutto a coloro che venerdì non son potuti
venire in laboratorio,
di (almeno provare a) risolvere i problemi in sospeso.
Nuovi problemi
- Si suggerisce di implementare in R (e visualizzarle graficamente)
le serie incontrate nel corso di analisi.
- Visto che in alcune serie compare il fattoriale,
vediamo come ottenerlo con R. Sia n il numero del quale
siamo interessati a valutare il fattoriale.
- Il modo più semplice è di usare factorial(n).
- Curiosamente si ottiene esattamente lo stesso risultato
con gamma(n+1), ma questa funzione è assolutamente
fuori programma,
- Possiamo costruirci il vettore di interi da 1 a n
e ad esso applicare prod() (il caso "0! = 1"
va trattato a parte).
[Se invece siamo interessati ai fattoriali di tutti
gli interi da 1 a n possiamo usare cumprod(),
analoga di cumsum() già incontrata.]
- Possiamo usare il loop "for(i in 1:n)" per
fare un prodotto alla volta, come già visto per la somma
di n termini (ma il termine iniziale, invece di essere
s=0, come nella somma, deve valere ovviamente p=1)
- Possiamo infine crearci la funzione fattoriale()
con argomento n, la quale 'ritorna' 1 se n è uguale a zero,
altrimenti moltiplica n per fattoriale(n-1).
Vale a dire abbiamo una funzione che richiama se stessa.
Sembra incredibile ma funziona: provare!
- Una volta che ha funzionato l'algoritmo recursivo del punto 5,
siccome "l'appetito vien mangiando", scrivere una funzione che
calcola in modo recursivo l'n-imo termine della successione
di Fibonacci (solo l'n-imo termine e non tutti i primi
n termini).
- Continuiamo a giocare con locator()
(e soprattutto con la geometria!)
- Dopo le rette e i cerchi ottenuti cliccando su due punti
del plot, si possono disegnare dei rettangoli, sempre
con due click, nell'ipotesi che i lati siano a coppie
paralleli agli assi.
(Si usi la funzione lines(), con argomenti
i vettori delle x e delle y,
ove i vettori sono ad esempio
x <- c(-1, 3, 3, -1, -1) e y <- c(-2, -2, 8, 8, -2),
valori da sostituire con quanto ottenuto da locator().)
- trasformare lo script dell'intersezione
di due rette in modo che esso chieda di cliccare su due
punti per tracciare la prima retta, che visualizza, e
poi su
altri due punti per tracciare la seconda retta; quindi visualizza
anche la seconda e il punto di intersezione fra le due;
- fare uno script che chieda di cliccare su due
punti per tracciare una retta, che visualizza,
poi di cliccare un terzo punto non sulla retta;
dopo di che
- visualizza il punto;
- si calcola i coefficienti della retta passante
per il punto e ortogonale alla retta già tracciata,
e la traccia;
- si calcola la distanza retta-punto e la scrive
sul plot mediante la funzione text() (imparare
ad usare mediante l'help o cercando su internet —
il testo da stampare è la stringa che si ottiene
mediante un opportuno sprintf(), già usato);
- si calcola il punto di intersezione fra
le due rette e lo mostra.
- Fare uno script che chieda di cliccare su due punti e
traccia il segmento fra essi, poi chiede di cliccare,
uno alla volta, su altri (N-2) punti e costruirsi la spezzata
fra i tutti punti.
- Interrompere (break) quando un punto è
'molto vicino' al precedente.
- Tracciare infine
il segmento che unisce il penultimo punto cliccato
al primo, disegnando così figure piane
'di fantasia'.
Torna alla pagina del corso