1 / 24

Algebra Lineare

Algebra Lineare. Esercizi assegnati. Esercizi assegnati. Algortimi e codici C per: Prodotto scalare - vettore Prodotto scalare - matrice Prodotto matrice - vettore Prodotto matrice - matrice. Prodotto scalare - vettore.

megan
Télécharger la présentation

Algebra Lineare

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 aper un vettoreBsi ottiene un nuovo vettorei 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 aper una matriceBsi 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 endfor

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

  6. Prodotto matrice - matrice Moltiplicando una matrice Aper una matriceBsi ottiene una matrice C i cui elementi sono determinati dal prodotto della corrispondente riga diA per la corrispondente colonna diB. 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 endfor 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’istruzionereturn • La function NON restituisce risultati mediante gli argomenti • Per restituire risultati attraverso gli argomenti si DEVONOusare 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. 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; } return rmin; } /* continua */ (2/4)

  15. (3/4) 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 */

  16. (4/4) double epsilond () { double c, d, epsi; d = 1.; do { c = 1.; epsi = d; d = epsi/2; 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; } return rmin; } /* 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); }

More Related