La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algebra Lineare Esercizi assegnati.

Presentazioni simili


Presentazione sul tema: "Algebra Lineare Esercizi assegnati."— Transcript della presentazione:

1 Algebra Lineare Esercizi assegnati

2 Esercizi assegnati Algortimi e codici C per:
Prodotto scalare - vettore Prodotto scalare - matrice Prodotto matrice - vettore Prodotto matrice - matrice

3 Prodotto scalare - vettore
Moltiplicando uno scalare a per un vettore B si ottiene un nuovo vettore i cui elementi sono il prodotto dello scalare per tutti gli elementi del vettore iniziale. read (a) for i = 1, n B(i) = a * B(i) endfor

4 Prodotto scalare - matrice
Moltiplicando uno scalare a per una matrice B si ottiene una nuova matrice i cui elementi sono il prodotto dello scalare per tutti gli elementi della matrice iniziale. read (a) for i = 1, n for j = 1, m B(i,j) = a * B(i,j) endfor

5 Prodotto matrice - vettore
Moltiplicando una matrice A per un vettore B si ottiene un vettore C i cui elementi sono determi-nati dal prodotto della corrispondente riga di A per il vettore B. for i = 1, n C(i) = 0 for j = 1, m C(i) = C(i) + A(i,j) * B(j) endfor

6 Prodotto matrice - matrice
Moltiplicando una matrice A per una matrice B si ottiene una matrice C i cui elementi sono determinati dal prodotto della corrispondente riga di A per la corrispondente colonna di B. for i = 1, n for k = 1, p C(i,k) = 0 for j = 1, m C(i,k) = C(i,k) + A(i,j) * B(j,k) endfor

7 Uso delle functions in C

8 Uso delle functions Riduzione delle linee di codice
sequenze di istruzioni identiche da ripetere più volte in punti diversi del programma Semplificazione della scrittura del codice Trsportabilità (riutilizzazione) in altri programmi

9 Definizione di function
Definizione del Tipo int, float, char, etc. Attribuzione di un nome p.e. main Dichiarazione degli argomenti p.e. main è priva di argomenti, per cui ( ) Corpo della funzione racchiuso tra { }

10 Dichiarazione di function
Nessaria se: il codice della function segue il codice della main il codice della function è in un file separato (opzione -c del compilatore) Non necessaria se il codice della function precede il codice della main

11 Scambio dati function/main
Function riceve dati da main attraverso gli argomenti formali (tipizzati) Main riceve un valore dello stesso tipo della function attraverso l’istruzione return La function NON restituisce risultati mediante gli argomenti Per restituire risultati attraverso gli argomenti si DEVONO usare i puntatori

12 Scoping (portata) delle variabili
Le variabili della function possono essere: gli argomenti (parametri) con valori ricevuti da function chiamante variabili locali, ossia variabili dichiarate ed utilizzate all’interno della function In caso di omonimia con variabili esterne la function riconosce ed usa solo le definizioni locali Le variabili locali sono sconosciute esternamente

13 Esempio di function 1 (1/4)
#include <stdio.h> main () { float epsis, rmins, epsilons (), rminsi (); double epsid, rmind, epsilond (), rmindo (); rmins = rminsi (); rmind = rmindo(); epsis = epsilons (); epsid = epsilond (); printf ("\nL'r-min s.p.: %e \n", rmins); printf ("L'r-min d.p.: %e \n", rmind); printf ("\nL'eps.ma. s.p.: %e \n", epsis); printf ("L'eps.ma. D.p.: %e \n\n", epsid); } /* continua */

14 (2/4) float rminsi () { float e, rmin; e = 1.; while (e != 0.)
} return rmin; double rmindo () double f, rmin; f = 1.; while (f != 0.) rmin = f; f = rmin/2; /* continua */ (2/4)

15 (3/4) float epsilons () { float a, b, epsi; a = 1.; do b = 1.;
a = epsi/2; b = b + a; } while (b != 1.); return epsi; /* continua */

16 (4/4) double epsilond () { double c, d, epsi; d = 1.; do c = 1.;
c = c + d; } while (c != 1.); return epsi;

17 Esempio di function 2 (main)
#include <stdio.h> main () { float epsis, rmins, epsilons (), rminsi (); double epsid, rmind, epsilond (), rmindo (); rmins = rminsi (); rmind = rmindo(); epsis = epsilons (); epsid = epsilond (); printf ("\nL'r-min s.p.: %e \n", rmins); printf ("L'r-min d.p.: %e \n", rmind); printf ("\nL'eps.ma. s.p.: %e \n", epsis); printf ("L'eps.ma. D.p.: %e \n\n", epsid); }

18 Esempio di function 2 (sub 1/3)
#include <stdio.h> float rminsi () { float e, rmin; e = 1.; while (e != 0.) rmin = e; e = rmin/2; } return rmin; double rmindo () double f, rmin; f = 1.; while (f != 0.) rmin = f; f = rmin/2; /* continua */

19 Esempio di function 2 (sub 2/3)
float epsilons () { float a, b, epsi; a = 1.; do b = 1.; epsi = a; a = epsi/2; b = b + a; } while (b != 1.); return epsi; /* continua */

20 Esempio di function 2 (sub 3/3)
double epsilond () { double c, d, epsi; d = 1.; do c = 1.; epsi = d; d = epsi/2; c = c + d; } while (c != 1.); return epsi;

21 Esempio di function 3 (1/4)
#include <stdio.h> void rminsi (float *rmin) { float e; e = 1.; while (e != 0.) *rmin = e; e = *rmin/2; } void rmindo (double *rmin) double f; f = 1.; while (f != 0.) *rmin = f; f = *rmin/2; } /*continua */

22 Esempio di function 3 (2/4)
void epsilons (float *epsi) { float a, b; a = 1.; do b = 1.; *epsi = a; a = *epsi/2; b = b + a; } while (b != 1.); } /*continua */

23 Esempio di function 3 (3/4)
void epsilond (double *epsi) { double c, d; d = 1.; do c = 1.; *epsi = d; d = *epsi/2; c = c + d; } while (c != 1.); } /*continua */

24 Esempio di function 3 (4/4)
main () { float epsis, rmins; double epsid, rmind; rminsi (&rmins); rmindo (&rmind); epsilons (&epsis); epsilond (&epsid); printf ("\nL'r-min s.p.: %e \n", rmins); printf ("L'r-min d.p.: %e \n", rmind); printf ("\nL'eps.ma. s.p.: %e \n", epsis); printf ("L'eps.ma. D.p.: %e \n\n", epsid); }


Scaricare ppt "Algebra Lineare Esercizi assegnati."

Presentazioni simili


Annunci Google