algebra lineare

24
Algebra Lineare Algebra Lineare Esercizi assegnati

Upload: megan

Post on 24-Jan-2016

56 views

Category:

Documents


1 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Algebra LineareAlgebra Lineare

Esercizi assegnati

Esercizi assegnatiEsercizi assegnati

Algortimi e codici C per:– Prodotto scalare - vettore– Prodotto scalare - matrice– Prodotto matrice - vettore– Prodotto matrice - matrice

Prodotto scalare - vettoreProdotto 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

Prodotto scalare - matriceProdotto 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) endforendfor

Prodotto matrice - vettoreProdotto 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) endforendfor

Prodotto matrice - matriceProdotto matrice - matriceMoltiplicando 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 endforendfor

Uso delle functions in CUso delle functions in C

Uso delle functionsUso 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

Definizione di functionDefinizione 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 { }

Dichiarazione di functionDichiarazione 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

Scambio dati function/mainScambio 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

Scoping (portata) delle variabiliScoping (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

Esempio di function 1 (1/4)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 */

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)

(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 */

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

(4/4)

Esempio di function 2 (main) 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);}

Esempio di function 2 (sub 1/3) 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 */

Esempio di function 2 (sub 2/3) 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 */

Esempio di function 2 (sub 3/3) 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;}

Esempio di function 3 (1/4)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 */

Esempio di function 3 (2/4)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 */

Esempio di function 3 (3/4)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 */

Esempio di function 3 (4/4)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);}