
1. Si scriva un programma in C che calcoli la sommatoria (senza il fattore 10)
   dell'immagine riportata in BuonAnnoMath.jpeg (che eventualmente
   può essere visualizzato aprendo con il browser il file aug_mat.html).

   [ nome del programma: sommatoria.c ]

2. Variante del punto precedente:
   - si metta il calcolo della sommatoria in una funzione
     che abbia come argomenti (k1 e k2, interi positivi)
     gli estremi della sommatoria, mettendo nella funzione dei controlli
     valori di k per i quali il denominatore si annulla;
   - si passino gli estremi della sommatoria da riga di comando.

   [ nome del programma: sommatoria1.c    ]
   [ uso, ad esempio:  ./sommatoria1 2 10 ]
   

3. In corrispondenza dei valori della variabile x 
      2, 3, 4, 5, 6, 7, 8, 9, 10
   la variabile y assume i valori
     4.692, 3.842, 3.145, 2.575, 2.108, 1.726, 1.413, 1.157, 0.947

   Mediante una opportuna analisi fatta con R
    - dire come y dipende da x;
    - trovare i coefficienti dell'andamento

   [ nome dello script: andamento.R ]

4. Si scrivano le funzioni C swapRighe() e swapColonne() che facciano
   lo 'swap', rispettivamente, di due righe o di due colonne di una
   matrice a valori float.
   Per provarle,
   - si definisca nel main una matrice quadrata 10x10
     aventi come elementi quelli della tabellina pitagorica.
     [Vedi anche il punto successivo]
   - si scrivi una funzione che stampi la matrice in modo ordinato.
   Quindi, nel main,
   - si stampi la matrice;
   - si esegua lo swap fra le righe 3 e 7;[*]
   - si stampi la matrice risultante;
   - si esegua lo swap fra le colonne 2 e 8;[*]
   - si stampi la matrice risultante.

   [*] Attenzione a non confondere l'usuale numerazioni
       di righe e colonne della matematica con quella
       degli indici degli array del linguaggio C!

   [ nome del programma: swap_righe_e_colonne.c ]


5. Si scriva il comando R che definisca, nel modo più conciso possibile,
   la matrice quadrata della tabellina pitagorica vista nel
   punto precedente, seguito dal comando per mostrarla sul monitor.

   [ nome dello 'script' (due sole righe!): tabellina.R ]


6. Un pallone di massa di 100 grammi viene lasciato cadere (ossia
   parte con velocità iniziale nulla) da un'altezza di 10 metri.
   Esso è soggetto sia alla forza peso (ovviamente),
   che a quella di resistenza dell'aria, modellizzata
   come dipendente dal quadrato della velocità, con un
   un coefficiente eta pari a 0.02 N/(m/s)^2.
   Si scriva un programma in C che
   - calcoli la velocità limite, ovvero quella che
     raggiungerebbe il pallone nel'ipotesi che l'altezza
     sia talmente grande che essa possa essere raggiunta;
   - valuti, in funzione del tempo, discretizzato a intervali
     dt di 0.01 secondi, posizione e velocità;[*]
   - scriva su un file di tipo testo (ovvero non binario) i valori
     di tempo, posizione e velocità separati da spazi
     (ovvero il file sarà formato da tre colonne).

  [*] In caso di dubbi sul funzionamento del programma,
      - si inseriscano, come al solito, opportune stampe;
      - si ponga eta=0 al fine di controllare con quanto
        ci si attende da una caduta libera.
        
  [ nome del programma: caduta_in_aria.c 
    nome del file:      caduta_in_aria.txt ]

7. (Continuazione) Si scriva quindi uno script R che rilegga
   il file scritto nel punto precedente e plotti, nel modo
   che si riterrà opportuno,
    - posizione in funzione del tempo;
    - velocità in funzione del tempo.

   [ nome dello script: analisi_caduta.R ]


8. Data la funzione, in R,
       f <- function(x) sqrt(x)/sqrt(1+sin(x)^2)
   si scriva uno script mediante il quale    
   - si grafichi la funzione per x compreso fra 0 e pi/2;
   - si valuti l'integrale della funzione in tale intervallo
     dalle aree di 10000 'scriscioline opportune';
   - si valuti anche l'integrale per campionamento, mediante
     l'estrazione di 100000 'a caso' in un rettangolo opportuno;
   - si confrontino infine i risultati con quanto si ottiene
     utilizzando l'apposita funzione di R che calcola integrali
     numerici.

    [ nome dello script: integrali.R ]


9. Scrivere un programma C che generi N numeri casuali
   interi in modo uniforme nell'intervallo [1,100]
   e che conti quanti di essi sono divisibili per 23.
   (Si inizializzi la random con il proprio numero di matricola.)

   Si facciano delle prove per N=100, 1000, 10000 e 100000
   e si scrivano i risultati come commento in fondo al programma. 

    [ nome del programma: numeri_casuali,c ]


10. Scrivere uno script R il quale, usando le funzioni
    'ad alto livello' di R:
    - generi una matrice quadrata 5x5 di nome A i cui elementi
      sono estratti 'a caso' uniformemente fra -1 e 1
      e siano arrotondati a 3 cifre decimali mediante round();
    - si stampi la matrice;
    - calcoli il determinante e lo stampi;
    - calcoli l'inversa della matrice ('iA') e la stampi;
    - calcoli il prodotto della matrice inversa
      per la matrice di partenza e stampi il risultato.

    [ nome dello script: matrici.R ]
