// Exercices de la série 2 du cours d'OS AM : matrices et systèmes linéaires d'équations

// Une matrice 2x2 est un tableau de 2 lignes de 2 colonnes
// Une matrice 3x2 est un tableau de 3 lignes de 2 colonnes
// Le nombre de lignes du vecteur  x  doit être égale au nombre de colonne 
// de la matrice  A  pour que le produit  A*x  aie un sens.

function ex02()
//=============  
// Système linéaire de deux équations à deux inconnues
A = [4, -2; 9, -5];  // les  virgules et les  point-virgules sont importants !
b = [11; 23];
disp(A, "A = ");
disp(b, "b = ");

x = A\b;
disp(x, "x=A\b = ");

// Autre manière d'afficher, avec moins de lignes blanches.
mprintf("A*x = ");
disp(A*x);
endfunction
//ex02();


function ex03()
//=============  
// Résolution d'un système de 3 équations à 3 inconnues
A = [4, -2, 4; 2, -5, 7; 3, -2, 3];  // les  virgules et les  point-virgules sont importants !
b = [12; 13; 8];
disp(A, "A = ");
disp(b, "b = ");

x = A \ b;
disp(x, "x=A\b = ");

disp(A*x, "A*x = ");
endfunction
//ex03();


function ex04()
//=============  
// Résolution d'un système de 4 équations à 4 inconnues

A = [4, -2, 4, 4; 2, -5, 7, -9; 3, -2, 3, 4; 7, 3, -3, 8];
b = [12; 13; 8; 6]
x = A \ b;
disp(x, "Solution : x = ");

disp(A*x, "A*x = ");
endfunction
//ex04();

function ex05()
//=============  
// Système linéaire de deux équations à deux inconnues, sans solution.
A = [4, -6; 2, -3];
b = [17; 8];
disp(A, "A = ");
disp(b, "b = ");

x = A\b;
disp(x, "x=A\b = ");

// Vérification :
disp(A*x, "A*x = ");

// On constate que la solution donnée par Scilab donne un produit proche de
// celui désiré. 
// Il est optimal dans un certain sens que nous ne verrons pas ici.
endfunction
//ex05();


function ex06()
//=============  
// Système linéaire de trois équations à trois inconnues, sans solution.
A = [4, -2, 4; 2, -5, 7; 6, -7, 11];
b = [12; 13; 26];
disp(A, "A = ");
disp(b, "b = ");

x = A \ b;
disp(x, "x=A\b = ");

disp(A*x, "A*x = ");
// On constate que la solution donnée par Scilab donne un produit proche de
// celui désiré. 
endfunction
//ex06();


function ex07()
//=============  
// Système linéaire de trois équations à deux inconnues.
A = [4, -2; 2, -5; 3, -2];
b = [14; -5; 8];
disp(A, "A = ");
disp(b, "b = ");

x = A \ b;
disp(x, "x=A\b = ");

disp(A*x, "A*x = ");
// On constate que la solution donnée par Scilab donne un produit proche de
// celui désiré. 
endfunction
ex07();

