mode(7)
//Le script aide_TP2 permet de se familiariser avec
//les commandes simples de Scilab concernant les matrices.F

disp('Matrice adjointe, produit :')
u=[0 %i 2]     //variantes : "u=[0,%i,2]"
u', u.'        //matrice adjointe et transposée
3*u, u/2, u'*u, u*u'F

disp('Id, zéros et uns, diagonale :')
eye(2,2), eye(2,3)    //l'identite "I" se lit comme "eye"
zeros(2,3), ones(3,2)
A=[1 2            //variante : "A=[1 2; 3 4]"
3 4]
diag(A)                //extraction de diagonale
diag([1 4])            //construction de matrice diagonale
D1=diag(ones(2,1),-1), D2=diag(ones(2,1),1)F

disp('Taille, norme, parties réelle et imaginaire :')
u=[0 %i 2], row=size(u,'r'), column=size(u,'c'), length(u)
norm(u,1), norm(u,2), norm(u,'inf'), norm(u)
A=[1 2; 3 4], size(A), size(A,'r'), size(A,'c'), length(A)
z=1+2*%i
norm(z), abs(z), real(z), imag(z), conj(z)F

disp('Déterminant, valeurs propres :')
A=[1 2; 3 4], det(A)
p=poly([1,-1],'t')    //un polynôme de racines 1 et -1
C=companion(p)    //une matrice de pol. car. multiple de p
spec(C), poly(C,'t')    //spectre (ens. des v. p.) et pol. car.
t=poly(0,'t'); s=det(C-t*eye())   //une variante pour le pol. car.F

disp('Matrice par blocs (utile) :')
A=[1 2; 3 4]
[A,[7 8]'], [A;[7 8]]   //variante: "[A [7 8]'], [A;7 8]"F

disp('Puissance :')
A=[1 2; 3 4]
inv(A), 1/A  //cf. "help slash"
B=A^2
B^0.5, ans^2            //une racine carrée de B autre que AF

disp('Opérations terme à terme (attention) :')
A=[1 2; 3 4]
A+1
A.^2
sqrt(A)        //matrice A.^0.5 des rac. carrées des coefficients
exp(A)         //l'exponentielle de la matrice A serait "expm(A)"
A.*A
A./A
1 ./A          //à ne pas confondre avec 1. /A (inverse de A)F

disp('Extraction de sous-matrices (important) :')
M=[1 2 3; 4 5 6]
M(1,2), M([2,2],[3:-1:2])    //utilisation des coefficients de M
M(1,:), M(:), M([2,1],:)    //":" donne tous les éléments
M(1,$), M(:,$-1)            //"$" donne le dernier élémentF

disp('Matrices creuses :')
S=sparse([1,2;2,4;3,1],[7,8,9]) //indices (i,j) puis valeurs
T=full(S), sparse(T)    //T est "S complétée avec ses zéros"
U=T(1:2,2:4)F

clear, abort