Il valore calorico di proteine, grassi e glucidi è, rispettivamente, 4.1, 9.3 e 4.1 kcal/g. La tabella A indica la percentuale (ovvero il numero di grammi per 100 grammi di sostanza) di proteine, grassi e glucidi (1ª, 2ª, 3ª colonna) del pane, dei gamberetti e della maionese che una azienda impiega per produrre dei tramezzini. La azienda vuole combinare gli ingredienti in modo da produrre tramezzini che contengano ciascuno 12 g di proteine, 15 g di grassi e 40 g di glucidi.
    Siano:

A = 

8  1  55

1413
1803
B = 

4.1

9.3
4.1
C = 

12

15
40
X = 

p

g
m
S = ( 1  1  1)

(1)  Che cosa rappresentano le espressioni seguenti?
      A·B       Ct·B       At·X = C       S·X
(la trasposta Mt di M m×n è la matrice n×m ottenuta scambiando righe e colonne: Mt[i,j] = M[j,i])
(2)  Risolvi il problema della azienda.

# A è 3*3, B 3*1, A*B è 3*1:

/8   1  55\   /4.1\   / 8*4.1+ 1*9.3+55*4.1\   /267.6\   /270\
|14  1   3| * |9.3| = | 14*4.1+1*9.3+3*4.1 | = | 79  | = | 80|
\1  80   3/   \4.1/   \ 1*4.1+80*9.3+3*4.1 /   \760.4/   \760/
                                                    arrotond.
Sono le Chilocalorie fornite da 1 hg di ciascuna sostanza.

# C è 3*1, Ct è 1*3, Ct*B è 1*1:

             /4.1\
(12 15 90) * |9.3| = (12*4.1+15*9.3+90*4.1) = (352.7) = (350)
             \4.1/                                 arrotond.
Sono le Chilocalorie fornite da 1 tramezzino.

# At è 3*3 come A; X è 3*1;  At*X è 3*1 come C.

/8  14   1\   /p\   /12\
|1   1  80| * |g| = |15|
\55  3   3/   \m/   \40/  equivale a:

 8p + 14g +   m = 12
  p +   g + 80m = 15
55p +  3g +  3m = 40   È il sistema di equazioni che è il
                       modello del problema della ditta;
p, g e m sono il peso in hg dei tre ingredienti.

# S è 1*3, X è 3*1, S*X è 1*1:

          /p\
(1 1 1) * |g| = (p+g+m)  è il peso in hg di 1 tramezzino
          \m/

# Per risolvere il sistema At*X = C se usiamo un programma in
grado di effettuare calcoli matriciali eseguiamo (At)-1*C.

            /.6933568\   /0.69\
Si ottiene: |.4485657| = |0.45|    È il peso in hg dei
            \.173226 /   \0.17/    tre ingredienti

[Cliccando  QUI, puoi accedere ad R che ti consente
di svolgere il calcolo matriciale]


# Oppure si può usare la regola di Cramer
|8  14   1|          |12 14   1|
|1   1  80| = 59610  |15  1  80| = 41331
|55  3   3|          |90  3   3|

p = 41331/59610 = 0.69; in modo analogo si trovano g e m

# Oppure si può procedere manipolando il sistema

# Come risolvere il sistema con questo semplice script online
# (che puoi anche scaricare sul computer):

- - - - - - - - - - - - - - - - - - - - - - - - - # I calcoli con R A <- matrix(data=c(8,14,1,1,1,80,55,3,3), nrow=3, ncol=3); A # [,1] [,2] [,3] # [1,] 8 1 55 # [2,] 14 1 3 # [3,] 1 80 3 B <- matrix( data=c(4.1,9.3,4.1), nrow=3, ncol=1); B # [,1] # [1,] 4.1 # [2,] 9.3 # [3,] 4.1 A %*% B # [,1] # [1,] 267.6 # [2,] 79.0 # [3,] 760.4 C <- matrix( data=c(12,15,40), nrow=3, ncol=1); C # [,1] # [1,] 12 # [2,] 15 # [3,] 40 t(C) %*% B # [,1] # [1,] 352.7 library(MASS) ginv(t(A)) %*% C # [,1] # [1,] 0.6933568 # [2,] 0.4485657 # [3,] 0.1732260 # NOTA: potevo anche specificare i nomi di righe e colonne nomA <- list(c("pane","gamberetti","maionese"),c("proteine","grassi","glucidi")) A <- matrix(data=c(8,14,1,1,1,80,55,3,3), nrow=3, ncol=3, dimnames=nomA); A nomB <- list(c("CalPr","CalGr","CalGl")) B <- matrix( data=c(4.1,9.3,4.1), nrow=3, ncol=1, dimnames=nomB); B nomC <- list(c("GrPr","GrGr","GrGl")) C <- matrix( data=c(12,15,40), nrow=3, ncol=1, dimnames=nomC); C t(C) %*% B library(MASS) ginv(t(A)) %*% C # ovvero: matrix( ginv(t(A)) %*% C, dimnames=list(c("pane","gamberetti","maionese"))) # # Alternativa, per la soluzione del sistema: source("http://macosa.dima.unige.it/r.R") S = c(8,14,1, 12, 1,1,80, 15, 55,3,3, 40); sistema(S) # 0.6933568 0.4485657 0.1732260 # # Ovvero si possono usare questi script online.