--> A=[1 2 3; -4 0 2; 17 8 -9]
--> A=[1,2,3,-4,0,2,17,8,-9]
--> A=[1,2,3;-4,0,2;17,8,-9]
Entrer une seconde matrice B quelconque de meme taille en ajoutant un ; à la fin de votre ligne. Qu'est ce qui a changé ?
On peut également entrer des valeurs complexes dans une matrice. Les éléments complexes s'écrivent sous la forme
2+3*%isont séparés par une virgule et chaque ligne par un ;
1+i -2+3*i -1 imatrice identité, diagonales, extraction de la diagonale, matrices de zero et de uns
Certaines fonctions sont disponibles pour générer automatiquement des matrices types. Pour obtenir la matrice identité de dimension nxm, on peut écrire : I=eye(n,m)
Testez ce qui se passe si n > m, n=m, n < m.
Pour obtenir une matrice diagonale A, dont les éléments diagonaux sont formés des éléments d'un vecteur donné a, tapez : A = diag(a). Testez la fonction pour un vecteur a que vous choisirez.
Inversement, a = diag(A) extrait de la matrice A la diagonale principale sous la forme d'un vecteur colonne placé dans a.
Vous pouvez générer rapidement une matrice remplie de zero ou de un avec les fonctions ones(n,m) et zeros(n,m). Ces deux fonctions acceptent également une matrice comme argument (tout se passe alors comme si on avait donné les dimensions de la matrice argument). Testez chacune de ces fonctions.
matrice de nombres aléatoires
La fonction rand(n,m) permet de générer des matrices remplies de nombres pseudo-aléatoires.
--> V = linspace(0,1,11)
linspace va créer dans cet exemple un vecteur de 11 valeurs allant linéairement de 0 a 1. Une instruction analogue permet de donner directement l'incrément, la valeur de départ et la borne d'arret :
--> V = 0:0.1:1
Lorsque l'incrément est égal à 1, on peut l'omettre : V=1:10
Commande | Exemple | Description |
' | V' | Transposée d'une matrice, d'un vecteur |
, ; | M=[V,V], N=[V;V] | Concaténation de matrices |
(,) | M(2,3), M(1,:) | Renvoie un élément d'une matrice ou une sous-matrice |
Le produit (*) et l'addition (+) de matrices sont possibles de meme qu'entre une matrice et un scalaire. Appliquer une fonction (comme sqrt par exemple) à une matrice, l'applique à tous ses éléments. Pour multiplier et diviser deux matrices de meme dimension A et B élément par élément, on emploie les opérateurs .* et ./
La notation x=M\y permet de résoudre le systeme linéaire Mx=y.
Tapez les commandes nécessaire pour résoudre le système suivant :
x + 3*y - 6*z = 5 3*y + 6*z = 3 2*x + 5*y - 5*z = 0
Tapez la commande who. Qu'affiche-t-elle ? Tapez clear, puis who. Qu'est-ce qui vient de changer ?
Nous commencons par définir un échantillonnage de l'intervalle x :
-->x=linspace(0,2*%pi,101);
Puis :
-->y=exp(-x)*cos(3*x);
Une erreur se produit. Pourquoi ? Que faut-il changer pour la corriger ?
--> plot(x,y,"b") plot dessine la courbe dans une nouvelle fenetre. (b désigne la couleur bleue)
--> xtitle("y=exp(-x).cos(3x)","x","y")
xtitle affiche une légende pour les axes et le nom du graphe.
Ecrire vos commandes dans la fenetre d'edition, puis sauvez votre travail sous un nom de fichier avec une extension .sce
Pour charger votre script dans scilab, choisissez l'option de menu Execute > Load into Scilab
Exercice : Tracer le graphe de la fonction sin(x)/x pour x dans l'intervalle [0,4pi] (écrire un script)
- Ecrire une fonction qui calcule les résultats de l'équation du second degré
- Ecrire le code d'une fonction chapeau phi(t,a,b,c) puis tracer la. (La fonction vaut 0 pour t<=a et t>=c, et 1 en t=b.)
- Ecrire une fonction qui calcule le produit vectoriel de deux vecteurs
- Ecrire une fonction qui évalue un polynome par la règle de Horner
- Ecrire une fonction qui calcule la suite de fibonacci (chaque terme est la somme des deux termes qui le précèdent)
- Ecrire une fonction qui effectue une recherche dichotomique dans un vecteur et renvoie le numero de l'intervalle trouvé et si la recherche a été fructueuse ou non. (on utilisera la fonction length(x) pour obtenir la longueur du vecteur x)
- Ecrire une fonction qui réalise un tri par insertion (à titre d'exercice car la fonction sort existe)