Matrice e prodotto scalare
Date in ingresso due matrici quadrate aventi la stessa dimensione e contenenti numeri interi M1 e M2 (le matrici possono essere considerate già inizializzate) scrivere una funzione (linguaggio C o pseudolinguaggio) che calcola il prodotto scalare della diagonale principale M1 per la diagonale secondaria di M2. Si ricorda che il prodotto scalare è la somma dei prodotto dei singoli elementi dei vettori coinvolti.
Non riesco a risolvere questo esercizio, se qualcuno può farmi vedere come risolverlo
Non riesco a risolvere questo esercizio, se qualcuno può farmi vedere come risolverlo



Risposte
Partiamo da qualcosa di più semplice. Sapresti fare un programma che stampa la diagonale principale e secondaria di una matrice?
Purtroppo no, in quanto è l'unico argomento trattato molto male sui miei libri.. sai per caso indirizzarmi a qualche link che tratta l'argomento in maniera approfondita?
Grazie
Grazie
Per prima cosa un po' di definizioni:
1. La diagonale principale di una matrice quadrata \(A = (A_{i\,j})\) di ordine \(N\) è il vettore di elementi \( A_{i\,i} \) con \( 1 \leq i \leq N\).
2. La diagonale secondaria di una matrice quadrata \(B = (B_{i\,j})\) di ordine \(N\) è il vettore di elementi \( A_{i\,(N-i+1)}\) con \( 1 \leq i \leq N\).
Siccome in C gli indici partono da zero (e non da uno come normalmente fanno in matematica), dovrai cambiare gli indici in modo opportuno. Supponendo di aver già definito matrici quadrate \(A\) e \(B\), l'ordine \(N\) delle matrici e il contatore \(i\), i seguenti codici mostrano come stampare queste due diagonali:
Per poter fare l'esercizio originale devi a questo punto mettere insieme i due cicli precedenti e moltiplicare tra di loro i valori che sono nelle due diagonali (corrispondenti allo stesso valore del contatore \(i\)) e sommare tutti questi prodotti tra di loro.
1. La diagonale principale di una matrice quadrata \(A = (A_{i\,j})\) di ordine \(N\) è il vettore di elementi \( A_{i\,i} \) con \( 1 \leq i \leq N\).
2. La diagonale secondaria di una matrice quadrata \(B = (B_{i\,j})\) di ordine \(N\) è il vettore di elementi \( A_{i\,(N-i+1)}\) con \( 1 \leq i \leq N\).
Siccome in C gli indici partono da zero (e non da uno come normalmente fanno in matematica), dovrai cambiare gli indici in modo opportuno. Supponendo di aver già definito matrici quadrate \(A\) e \(B\), l'ordine \(N\) delle matrici e il contatore \(i\), i seguenti codici mostrano come stampare queste due diagonali:
for (i = 0; i < N; ++i) { printf("%f ", A[i][i]); }
for (i = 0; i < N; ++i) { printf("%f ", B[i][N - i - 1]); }
Per poter fare l'esercizio originale devi a questo punto mettere insieme i due cicli precedenti e moltiplicare tra di loro i valori che sono nelle due diagonali (corrispondenti allo stesso valore del contatore \(i\)) e sommare tutti questi prodotti tra di loro.