Les tableaux. B. Opérations sur les tableaux 7 B.1.Opérationsélémentparélément... 7. a)opérationsarithmétiques... 9



Documents pareils
Introduction à MATLAB R

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

LES TYPES DE DONNÉES DU LANGAGE PASCAL


TD3: tableaux avancées, première classe et chaînes

Présentation du langage et premières fonctions

Calcul Formel et Numérique, Partie I

TP 1. Prise en main du langage Python

TP 1 Introduction à Matlab Février 2009

Programmes des classes préparatoires aux Grandes Ecoles

Cours 02 : Problème général de la programmation linéaire

Initiation à la Programmation en Logique avec SISCtus Prolog

Représentation des Nombres

Cours 7 : Utilisation de modules sous python

Calcul différentiel sur R n Première partie

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Python - introduction à la programmation et calcul scientifique

EXCEL TUTORIEL 2012/2013

1. Structure d'un programme FORTRAN 95

Exercices Corrigés Premières notions sur les espaces vectoriels

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Initiation à la programmation en Python

STAGE IREM 0- Premiers pas en Python

Cours Informatique Master STEP

Programmation linéaire

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Le langage SQL Rappels

Corrigé des TD 1 à 5

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Débuter avec Excel. Excel

Correction de l examen de la première session

Chapitre 2. Matrices

Plan du cours Cours théoriques. 29 septembre 2014

Calcul Formel et Numérique, Partie I

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Bases de programmation. Cours 5. Structurer les données

Cours d initiation à la programmation en C++ Johann Cuenin

Fonctions de plusieurs variables

avec des nombres entiers

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

Cours d Analyse. Fonctions de plusieurs variables

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

Chap III : Les tableaux

Initiation à LabView : Les exemples d applications :

Informatique Générale

Rappels sur les suites - Algorithme

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

L analyse boursière avec Scilab

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Compter à Babylone. L écriture des nombres

Les outils actuels permettent-ils d automatiser la production de cartes? De quels outils dispose-t-on?

Petit Guide de Survie en Scilab

Définitions. Numéro à préciser. (Durée : )

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Architecture des Systèmes d Information Architecture des Systèmes d Information

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

Exercice : la frontière des portefeuilles optimaux sans actif certain

Chapitre 1 Qu est-ce qu une expression régulière?

Programmation linéaire et Optimisation. Didier Smets

L informatique en BCPST

Examen Médian - 1 heure 30

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Découverte de Python

Suites numériques. Exercice 1 Pour chacune des suites suivantes, calculer u 1, u 2, u 3, u 10 et u 100 : Introduction : Intérêts simpleset composés.

Le produit semi-direct

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INTRODUCTION À L ANALYSE FACTORIELLE DES CORRESPONDANCES

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

Introduction à l étude des Corps Finis

Utilisation d objets : String et ArrayList

Probabilités stationnaires d une chaîne de Markov sur TI-nspire Louis Parent, ing., MBA École de technologie supérieure, Montréal, Québec 1

Précision d un résultat et calculs d incertitudes

Programmation linéaire

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Simulation de variables aléatoires

Excel avancé. Frédéric Gava (MCF)

Poker. A rendre pour le 25 avril

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Séance 0 : Linux + Octave : le compromis idéal

Optimisation, traitement d image et éclipse de Soleil

Comment créer et utiliser une fonction

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Calculs de probabilités

Présentation du cours de mathématiques de D.A.E.U. B, remise à niveau

Cours de Probabilités et de Statistique

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Programme awk------introduction rapide

SAS de base : gestion des données et procédures élémentaires

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Résolution de systèmes linéaires par des méthodes directes

I. Introduction aux fonctions : les fonctions standards

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Formes quadratiques. 1 Formes quadratiques et formes polaires associées. Imen BHOURI. 1.1 Définitions

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Programmation Web. Madalina Croitoru IUT Montpellier

Transcription:

Lycée Fénelon BCPST 1 Informatique Cours Les tableaux A. Définition des tableaux 3 A.1.Lestableauxmonodimensionnels: lesvecteurs..................... 3 a)définitiond unvecteur.............................. 3 b)consultationetmodificationdescoordonnéesd unvecteur......... 4 A.2.Lestableauxbidimensionnels: lesmatrices...................... 5 a)définitiond unematrice............................. 5 b)consultationetmodificationdescoefficientsd unematrice.......... 6 B. Opérations sur les tableaux 7 B.1.Opérationsélémentparélément............................. 7 a)opérationsarithmétiques............................ 7 b)opérationsfonctionnelles............................ 8 c)concaténation.................................. 8 d)extraction..................................... 8 B.2.Opérationsmatricielles.................................. 9 a)opérationsarithmétiques............................ 9 b)transposition................................... 9

Introduction En informatique, il est souvent nécessaire de gérer un grand nombre de données. Pour que cellesci restent directement accessibles sans qu il soit nécessaire de créer une variable pour chacune, il est nécessaire de disposer d un type de variable composée qui permette: de représenter simultanément plusieurs données; de manipuler collectivement ou individuellement chacune d entre elles. Dans la plupart des langages de programmation, les tableaux (qui contiennent des éléments de même nature) et les listes(qui peuvent contenir des éléments de natures différentes) jouent ce rôle. Dans ce troisième chapitre consacré à la programmation, nous décrivons(en langage SCILAB) lasyntaxedelastructurededonnéesdetypetableauetnousapprenonsàlamanipuler. 2

A. Définition des tableaux A. 1. Les tableaux monodimensionnels: les vecteurs Un tableau à une dimension, que nous appelerons aussi vecteur, est un assemblage de données homogènes, c est-à-dire une suite finie d éléments de même nature: on range des nombres avec des nombres,deschaînesdecaractèresavecdeschaînesdecaractères,... Dans cette structure de données, les éléments sont désignés par un numéro, que l on appelle indice. Cetindiceestunentiercomprisentre1etnoùndésignelenombred élémentsdutableau. En SCILAB, les tableaux sont créés dynamiquement, c est-à-dire qu il n est pas utile de préciser à l avance leur taille. En particulier, si l on rajoute un élément dans un tableau préexistant, c est SCILAB qui se charge d agrandir le tableau avant d y placer le nouvel arrivant. Notons que cette méthode de création dynamique des tableaux est couteuse en calculs et ralentit donc la machine. a) Définition d un vecteur Ilexistedeuxtypesdetableauxàunedimension: lesvecteurslignesetlesvecteurscolonnes. Création d un vecteur Il existe plusieurs façons de définir un vecteur: Définition d un vecteur en extension: On place les éléments entre crochets en séparant lesélémentsparunevirgule: [x 1, x 2,..., x n ]pouravoirunvecteurligneetparun point-virgule: [x 1 ; x 2 ;...; x n ]pourobtenirunvecteurcolonne. Définition d un vecteur ligne en compréhension: Si les éléments du tableau forment unesuitearithmétique,onutilisel instructiondébut:pas:fin(oudébut:fin)que nousavonsdéjàrencontrée dans les boucles. Ainsi, la commande [début:pas:fin] désigne le vecteur ligne dont début est le premier élément, pas est le pas d incrémentation(quivaut1pardéfaut)etfinestlavaleurànepasdépasser. Définition coordonnées par coordonnées: On peut définir un vecteur u en affectant une par une ses coordonnées. Ainsi, en écrivant u(1)=x 1, u(2)=x 2,..., u(n)=x n, on fabriqueunvecteurcolonne,notéu,dontlesélémentssontx 1, x 2,..., x n. Définition par concaténation: Pour ajouter l élément x à un tableau u préexistant, on peutécrireu=[u, x]pourl ajouteràdroiteouu=[x, u]pourl ajouteràgauche. Exercice 1. --> u=[1, 3, 5], v=[1; 2], w=[9: 2:1], // le pas peut être négatif --> [] // [] désigne le tableau vide --> a(1)=1, a(2)=4, a(3)=9, a(5)=25 --> u=[u, 9], w=[11, w] Lorsquedébut>fin,levecteur[début:fin]estletableauvide. Pourtransformerunvecteurligneuenunvecteurcolonneoul inverse,onécritu=u (car le désigne la transposition; nous le verrons). Dans la définition coordonnées par coordonnées, si l on oublie de préciser l une des coordonnées, SCILAB l affecte automatiquement à la valeur 0. Dansladéfinitionparconcaténation, il fautqueletableauexistedéjàavantdelui ajouter unélément: c estunedéfinitionparrécurrence. Siletableautabn existepas,ondoit,avant deluiajouterunélément,lecréerparinitialisationenposanttab=[]. 3

b) Consultation et modification des coordonnées d un vecteur Une fois les données stockées dans un tableau, il est bien entendu nécessaire de pouvoir y accéder pour en connaître les valeurs ou les modifier. Accès aux éléments Sizozoestlenomd unevariabledetypevecteur(ligneoucolonne),lacommande length(zozo) désigne le nombre d éléments du tableau zozo. Dès lors, si n est ce nombre d éléments (c est-à-dire n =length(zozo)), alors zozo(1), zozo(2),..., zozo(n) désignent respectivement le premier, le deuxième,..., le n-ème élément du vecteur. Attention! Ne confondez pas l indice d une case et la valeur qu elle contient: dans la notation zozo(i),idésignelenumérodelacaseetzozo(i)l élémentcontenudanslai-èmecasedutableau zozo. Exercice 2. --> u=[1, 3, 5, 7], v=[8: 2:3] --> length(u), length(v) --> u(0) --> u(2), v(3), u(length(u)) --> u(5)=9, v(3)=0 Pour SCILAB, les vecteurs n ont pas de case numérotée 0. C est parfois un peu enquiquinant, parexemplepourreprésenterunesuitedontlepremiertermes appelleu 0. Ladernièrelignedecommandedel exercicemontrequel onpeutajouterunélémentàun vecteur ou même réaffecter l une de ses coordonnées. Exercice 3. Écrireunefonctionsommevect,dontlavariableestunvecteuru,quicalculelasommedes éléments de u. Dans un fichier sommevect.sci, on écrit function s = sommevect(u) s=0; for i=1:length(u) do s=s+u(i); end endfunction En fait, cette fonction existe déjà dans SCILAB et s appelle sum mais vous ne pouvez l utiliser le jour du concours que si vous savez écrire le script ci-dessus(dixit le jury). 4

A. 2. Les tableaux bidimensionnels: les matrices Un tableau à deux dimensions n et m, que nous appelerons aussi matrice n m, est un assemblage de n vecteurs de même dimension m, c est-à-dire une suite finie à deux indices constituée d éléments de même nature. Dans cette structure de données, les éléments sont désignés par un couple de coordonnées entières, que l on appelle couple d indice. Le premier indice correspond au numéro de la ligne et le second désigne celui de la colonne. Signalons que pour SCILAB, tout est de type tableau: un nombre est un tableau 1 1, un vecteurligneestuntableau1 n,unvecteurcolonneestuntableaun 1,unechaînedecaractère estunvecteurdontlescoordonnéescorrespondentauxcodesasciidescaractèresdelachaîne,... a) Définition d une matrice L encadré suivant vous explique comment associer la méthode de création des vecteurs lignes avec celle des vecteurs colonnes pour définir un tableau à deux dimensions. Création d une matrice Làencore,ilexisteplusieursméthodespourdéfinirunematricen m(c est-à-direàn lignesetmcolonnes): Définition d une matrice en extension: On place ses éléments, appelés coefficients, entre crochets en séparant les éléments d une même ligne par des virgules et les lignes par des points virgules. Ainsi, la notation [x 1,1, x 1,2, x 1,3, x 1,4 ; x 2,1, x 2,2, x 2,3, x 2,4 ; x 3,1, x 3,2, x 3,3, x 3,4 ] désigne la matrice x 1,1 x 1,2 x 1,3 x 1,4 x 2,1 x 2,2 x 2,3 x 2,4 x 3,1 x 3,2 x 3,3 x 3,4 Pour certaines lignes, on peut évidemment utiliser une définition en compréhension: début:pas:fin. Définition coordonnées par coordonnées: On peut définir un tableau A en affectant une par une ses coordonnées. Ainsi, en écrivant A(1,1)=x 1,1, A(1,2)=x 1,2,..., A(n,m)=x n,m,onfabriquelamatricedontlescoefficientssontlesa i,j. Exercice 4. --> A=[1, 3, 5, 7; 9:2:15; 17, 19, 21, 23], // pas très lisible --> B=[1, 2, 3; --> 4, 5, 6; // plus long mais plus clair --> 7, 8, 9] --> C(1,1)=1, C(1,2)=1, C(1,3)=1, C(2,2)=1, C(2,3)=1, C(3,3)=1 --> D=[0, 1, 0; --> 7, 8] Lorsqu on crée une matrice par affectations successives de ses coefficients et que l on oublie de préciser l un des coefficients, SCILAB l affecte automatiquement à la valeur 0. La création de D se passe mal car les deux lignes n ont pas le même nombre d éléments. SCILAB proteste en renvoyant le commentaire: Dimension ligne/colonne incohérente 5

b) Consultation et modification des coefficients d une matrice L accès aux coefficients d une matrice est aussi simple que dans le cas des vecteurs sauf qu il nécessite l usage d un couple d indice(comme à la bataille navale). On peut aussi accéder à une ligne ou une colonne. Accès aux coefficients, aux lignes et aux colonnes SiZOZOestunevariabledetypematricedetaillen m,lacommande size(zozo) stockedansunvecteurligneàdeuxcaseslenombredelignes(enpremièrecoordonnée)et le nombre de colonnes(en seconde coordonnée) de la matrice ZOZO. Ainsi, size(zozo, 1) est lenombredelignesetsize(zozo,2)estlenombredecolonnes. Deplus, ZOZO(i,j) désigne l élément placé à l intersection de la i-ème ligne et de la j-ème colonne; ZOZO(i,:)désignelai-èmeligne; ZOZO(:, j) désigne la j-ème colonne. Exercice 5. --> A=rand(3, 3) --> A(1,2), A(4,1)=10, A(1,1)=0 --> A(2,:), A(:,3), A(3,:)=[ 1, 2, 3], A(:,1)=[] --> length(a) // length fournit encore le nombre d éléments rand(n,m) génère une matrice aléatoire de taille n m dont les coefficients sont choisis aléatoirement dans[0; 1]. Ladeuxièmelignedecommandemontrequel onpeutajouterunélémentàunematriceou même réaffecter l un de ses coefficients. L instruction A(:,1)=[] supprime la première colonne (en la remplaçant par une colonne vide). Exercice 6. Écrire une fonction maxmat, dont la variable est une matrice A, qui détermine le plus grand desélémentsdea. Dans un fichier maxmat.sci, on écrit function m = maxmat(a) m=a(1,1); for i=1: size(a,1) do for j=1: size(a,2) do if m<a(i,j) then m=a(i,j), end; end end endfunction En fait, cette fonction existe déjà dans SCILAB et s appelle max mais, là encore, vous ne pouvez l utiliser le jour du concours que si vous savez écrire le script correspondant. 6

B. Opérations sur les tableaux Nous allons distinguer deux types d opérations sur les tableaux: les opérations élément par élément(que l on appelle aussi opérations scalaires) et les opérations matricielles(qui ne sont pas au programme et qu il faut donc savoir programmer). En pratique, nous utiliserons assez peu ces opérations. B. 1. Opérations élément par élément La plupart des opérations classiques(addition, soustraction, multiplication, division, application d une fonction,...) s étendent naturellement au cas des tableaux en s appliquant simultanément à tous les éléments. a) Opérations arithmétiques Les principales opérations élément par élément(ou terme à terme) sur les tableaux sont: Opération mathématique scalaire Instruction SCILAB addition scalaire + + soustraction scalaire multiplication scalaire. division scalaire./ puissance scalaire ˆ.^ Attention à ne pas oublier le. devant l opérateur!! Si op désigne l une des opérations terme à terme décrites ci-dessus, on retiendra que pour effectueraopb,ilestnécessairequelestableauxaetbsoientdemêmesdimensionsàmoinsque l und euxsoitunscalaire(untableau1 1)auquelcaslescalaireestopéré(àl aidedeop)àtous les éléments du tableaux. Exercice 7. --> M=[1, 0, 1; 0, 1, 0; 1, 0, 1], N=[1, 2, 3; 4, 5, 6; 7, 8, 9], P=[1; 2; 3] --> M+N, M N, M. N, M./N, N.ˆ2 --> M+1, M 1, M. 3, M./5 --> M. P --> M P Lorsqu on opère(élément par élément) deux tableaux de taille différentes, SCILAB n est pas d accord et le fait savoir par un commentaire du type inconsistent operation. Ici,SCILABrefuselecalculeM. P(nousvenonsd expliquerpourquoi)maisacceptelecalcul M P (nous verrons que l opérateur sans le. correspond à la multiplication matricielle). Il ne faut donc surtout pas oublier le. qui précède, / ou ˆ si l on veut effectuer une multiplication, une division ou une élévation à la puissance TERME À TERME. 7

b) Opérations fonctionnelles Les fonctions usuelles que connait SCILAB offrent la particularité de s appliquer aussi bien à des éléments(en général des scalaires) qu à des tableaux constitués de ces éléments. Exercice 8. --> M=[%pi/2, %pi; 0, 1], --> sin(m), exp(m) c) Concaténation La concaténation est l opération qui permet de créer un nouveau tableau en assemblant(par juxtaposition) plusieurs sous-tableaux de dimensions adéquates. Nous l avons déjà rencontré dans le cas des vecteurs. Pour la syntaxe, on commence par déclarer chacun des sous-tableaux en les affectant à des variables puis tout se passe comme si ces sous-tableaux étaient de simples scalaires (à condition que les tailles des sous-tableaux soient compatibles pour la juxtaposition). Exercice 9. --> A=[0], B=[1, 1], C=[2; 2; 2], D=[3, 3; 3, 3; 3, 3] --> M=[A, B; C, D] Remarque : Schématiquement, on a réalisé l opération suivante: 0 1 1 ց ւ 0 1 1 2 ր տ 3 3 concaténation 2 3 3 2 3 3 2 3 3 2 3 3 2 3 3 d) Extraction Lorsqu on dispose d une matrice, SCILAB offre la possibilité d en extraire une sous-matrice. Pourlasyntaxe,oncréeuntableauetonl affecteàlavariablea(parexemple),puisonutilisela commandea([i 1, i 2,..., i p ], [j 1, j 2,..., j q ])pourextrairelasous-matricedontlescoefficients sontàl intersectiondeslignesi 1, i 2,..., i p etdescolonnesj 1, j 2,..., j q. Exercice 10. --> A=[1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12] --> Aext=A([1, 3], [2, 3, 4]) Remarque : LacommandeA([1, 3],[2, 3, 4])extraitdelamatriceAunematrice2 3dontlescoefficients sontàl intersectiondeslignes1,3etdescolonnes2,3,4. 8

B. 2. Opérations matricielles SCILAB a été spécifiquement conçu pour permettre la manipulation simple des matrices. Ainsi, toutes les opérations usuelles(opérations arithmétiques matricielles, transposition, détermination du rang, calcul de l inverse,...) sont évidemment disponibles (à condition que les formats des matrices le permettent). Toutefois, dans le cadre du programme de BCPST, il est recommandé de limiter l usage des opérations de l algèbre linéaire à des cas très simples(et encore, à condition de savoir programmer lafonctionquicorrespond). C estl unedesexigencesdujury! Ilpeutparaîtrecurieuxdesepriver ainsi de l une des caractéristiques principales de SCILAB mais l objectif de ce cours n est pas de fairedevousdesexpertsenscilabmais,beletbien,devousintroduirelesprincipesgénéraux de l informatique(généralisables à d autres logiciels). a) Opérations arithmétiques Les principales opérations matricielles sont: Opération mathématique matricielle Instruction SCILAB addition matricielle + + soustraction matricielle multiplication matricielle puissance matricielle ˆ ^ Cettefois,iln y apasde. devant l opérateur!! L addition et la soustraction matricielles n ont pas à être (re)définies puisqu elles coïncident avec les opérations élément par élément correspondantes. PoureffectuerA B,ilestnécessairequelesmatricesAetBsoientcompatiblespourcecalcul, c est-à-direquelenombredecolonnesdeasoitaussilenombredelignesdeb. La puissance matricielle ne s applique qu à des matrices carrées!!! Exercice 11. --> M=[ 9, 7, 3; 13, 10, 4; 4, 3, 1], N=[1, 0; 2, 0; 3, 1] --> M N, Mˆ3, N M Remarque : SCILABrefuseévidemmentdefairelecalculN M(puisquelesformatsdesmatricesnes y prètent pas) en indiquant une Multiplication incohérente. b) Transposition En dehors des opérations arithmétiques introduites ci-dessus, c est la seule autre opération matricielle que nous introduirons. Du point de vue syntaxique, la transposition d une matrice réelle A s effectue en postfixant une apostrophe, c est-à-dire en écrivant A (on notera la différence avec la notation mathématique quiconsisteàpréfixerl exposant t ). Exercice 12. --> P=[1, 2; 3, 4; 5, 6] --> P 9