Vous êtes sur la page 1sur 3

Université d’Orléans – L3 EG semestre 5 Année Universitaire 2019-2020

Initiation à R Durée : 55 min

Correction contrôle continu 1

Nom : (On donnera systématiquement code et résultat numérique)

Exercice 1
1) Donner le code permettant d’obtenir un vecteur x composé de 100 000 tirages aléatoires indépendants
d’une variable aléatoire suivant une loi normale centrée réduite. Quelle est la moyenne empirique
obtenue ?

x=rnorm(100000)
mean(x) # On trouve quelque chose proche de 0

2) Soit y le vecteur tel que yi = x2i pour tout 1 ≤ i ≤ 100 000. Calculer y. Quelle est la moyenne
empirique de y?

y=x^2
mean(y) # On trouve quelque chose proche de 1

Alternativement, avec une boucle for (pas nécesssaire!)

y=NULL
n=length(x)
for (i in 1:n)
{
y[i]=x[i]^2
}
mean(y)

Exercice 2     
1 2 1 2 0 1
Soit A = , B = et C = . Résoudre l’équation matricielle CXA2 = B
3 3 −1 0 −1 0
d’inconnue X.
La solution est:
X = C −1 B((A2 )−1 )

A=matrix(c(1,2,3,3), nr=2,byrow=T)
B=matrix(c(1,2,-1,0),nr=2, byrow=T)
C=matrix(c(0,1,-1,0),nr=2, byrow=T)
X=solve(C)%*%B%*%solve(A%*%A)
X

> X
[,1] [,2]
[1,] 1.666667 -0.8888889
[2,] -1.000000 0.6666667

Exercice 3
Ecrire une fonction mafonction qui permet de tester si une matrice donnée est de format (n, 2n), c’est
à dire si elle a deux fois plus de colonnes que de lignes. Si c’est le cas, la fonction doit retourner la
somme de la dernière colonne. Dans le cas contraire, la fonction doit afficher "Format non adéquat".

1
mafonction =function (M)
{
if(ncol(M) == 2*nrow(M))
{
total_Col = sum(M[,ncol(M)])
print(total_Col)
}
else
{
print (’Format non adequat’)
}
}

# Test
M=matrix(1:8,nr=2,nc=4)
mafonction(M) # renvoie 15

M=M[,-1]
mafonction(M) # renvoie "Format non adequat"

Exercice4 
2 −4 −1
−2 −3 −4
Soit A = 0
.
7 5
−4 −6 −8
1) Ecrire un programme permettant de calculer et d’afficher tous les déterminants extraits de format
3x3 de A. Donner la valeur des déterminants extraits.

On doit supprimer une ligne de A (parmi 4):

A=matrix(c(2, -4, -1, -2, -3, -4, 0, 7, 5, -4, -6, -8),nr=4,byrow=T)

for (i in 1:4)
{
print(paste(’Le déterminant obtenu en rayant la’, i, ’e ligne est: ’,det(A[-i,])))
}

Toutes les matrices 3x3 extraites de A ont des déterminants nuls. Donc rang(A) < 3.

2) Ecrire un programme permettant de calculer tous les déterminants extraits de format 2x2 de A.

On doit choisir 2 lignes de A parmi 4 (6 possibilités) et 1 colonne parmi 3 (3 possibilités), au total on


a 6*3=18 possibilités.

for (k in 1:3)
{
for (i in 2:4)
{
for (j in 1:(i-1))
{
print(paste(’On a supprimé les lignes : ’,i,j,’ et la colonne : ’,k))
print(det(A[c(-i,-j),-k]))
}
}
}

2
3) Conclure par rapport au rang de la matrice A. Comment peut-on retrouver ce résultat en une ligne
de code de R?

On a des matrices 2*2 extraites de A, avec des déterminants non nuls. Donc rg(A)=2. Pour le retrouver
avec R en une seule ligne de commande:

qr(A)$rank

Exercice 5
Créer une matrice A de format 6x6 telle que:
* A[i, i] = 1 pour tout 1 ≤ i ≤ 6,
* A[i, i + 1] = −1 pour tout 1 ≤ i ≤ 5,
* le reste des valeurs soit égal à 0
1) Donner le code permettant de définir A.

A=matrix(0,nr=6,nc=6) # matrice 6*6 avec que des 0


for (i in 1:6) A[i,i]= 1
for (i in 1:5) A[i,i+1]= -1
A

2) Calculer la trace de A3 (sans boucle for).

Acube=A%*%A%*%A
sum(diag(Acube))

Vous aimerez peut-être aussi