$\textstyle \parbox{10cm}{\scriptsize\bf
Universit\'e Ren\'e Descartes -- Paris...
...3cm} {\large \bf Sujet 1 }\\
45, rue des Saints-P\\lq eres 75270 Paris cedex 06}$

Calcul scientifique : examen du 24 mai 2005


L1 : Licence sciences et technologies,
mention mathématiques, informatique et applications


Nombre de pages de l'énoncé : 3. Durée 1 heure 30.
NB : L'examen se compose de 10 questions indépendantes. Pour chaque question 5 affirmations sont proposées, parmi lesquelles 2 sont vraies et 3 sont fausses. Pour chaque question, indiquez sur votre copie les lettres des 2 affirmations que vous pensez vraies. Chaque question pour laquelle les 2 affirmations vraies sont données rapporte 2 points.
Tout document est interdit. Les calculatrices et les téléphones portables, même à titre d'horloge, sont également interdits.

Attention : les lignes de commande sont indépendantes les unes des autres, c'est-à-dire qu'on suppose qu'à chaque ligne on vient de démarrer une nouvelle session Scilab.
Rappel : Les codes des couleurs sont 1 pour noir et 5 pour rouge. Question 1. Les lignes proposées sont écrites dans un éditeur et sauvegardées dans un fichier intitulé f.sci. On utilise ensuite la commande getf("f.sci"). Cela permet de définir une fonction qui à deux matrices carrées de même taille $ A=(a_{i,j})$ et $ B=(b_{i,j})$, associe $ C=(c_{i,j})$ telle que $ c_{i,j}=\max(a_{i,j},b_{i,j})$ :
A :
(FAUX) C=max(A,B)
B :
(VRAI) function C=f(A,B)
C=B;
bool=A>B;
C(bool)=A(bool);
endfunction
C :
(FAUX) n=size(A); for i=1:n(1), for j=1:n(2), C(i,j)=max(A(i,j),B(i,j)); end; end;
D :
(VRAI) function C=f(A,B)
C=max(A,B);
endfunction
E :
(FAUX) function f(A,B)
C=max(B,A);
endfunction
Question 2. La ligne de commande proposée affiche un message d'erreur:
A :
(VRAI) deff("y=f(x)","y=x*log(x)"); x=linspace(1,10,100); f(x)
B :
(FAUX) deff("y=f(x)","y=x.*log(x)"); x=linspace(1,10,100); f(x)-x
C :
(FAUX) deff("y=f(x)","y=x.*log(x)"); x=linspace(1,10,100); fplot2d(x,f);
D :
(FAUX) deff("y=f(x)","y=x.*log(x)"); x=linspace(1,10,100); plot2d(x,f(x));
E :
(VRAI) deff("y=f(x)","y=x.*log(x)"); x=linspace(0,10,100); f(x)
Question 3. Les lignes proposées sont écrites dans un éditeur et sauvegardées dans un fichier intitulé f.sci. On utilise ensuite la commande getf("f.sci"). Cela permet de définir une fonction qui prend en entrée une matrice $ A=(a_{ij})$ et retourne en sortie une matrice $ B=(b_{ij})$ de mêmes dimensions telle que $ b_{ij}=a_{ij}$ si $ j$ est impair et $ b_{ij}=0$ sinon.
A :
(FAUX) function B=f(A)
B=kron(A,[0;1]);
endfunction
B :
(FAUX) function B=f(A)
for i=2:n,
B(:,i)=0;
end;
endfunction
C :
(VRAI) function B=f(A)
B=A; n=size(A,"c");
for i=2:2:n,
B(:,i)=0;
end;
endfunction
D :
(VRAI) function B=f(A)
B=A; n=size(A,"c");
indices = find( (-1)^[1:n]==1 );
B(:,indices)=0;
endfunction
E :
(FAUX) function B=f(A)
C=ones(size(A,"r"),1)*( (-1)^[1:size(A,"c")] );
B=(A+A*C)/2;
endfunction
Question 4. Les opérations suivantes définissent la fonction plus qui retourne la somme de deux matrices :
A :
(FAUX) Sauver dans le fichier f.sci les lignes
function C=f(A,B)
C=A+B;
endfunction
puis charger le fichier par getf("f.sci")
B :
(VRAI) Sauver dans le fichier f.sci les lignes
function C=plus(A,B)
C=A+B;
endfunction
puis charger le fichier par getf("f.sci")
C :
(FAUX) Sauver dans le fichier f.sci les lignes
function plus(A,B)
C=A+B;
endfunction
puis charger le fichier par getf("f.sci")
D :
(FAUX) Sauver dans le fichier f.sci les lignes
function C=plus(A,B)
for i=1:n, for j=1:n, C(i,j)=A(i,j)+B(i,j); end; end;
endfunction
puis charger le fichier par getf("f.sci")
E :
(VRAI) Sauver dans le fichier f.sce la ligne
deff("C=plus(A,B)","C=A+B")
puis charger le fichier par exec("f.sce")
Question 5. La commande plotframe([0,0,3,3],[2,10,2,10]); suivie de la ligne de commande proposée affiche un triangle rouge:
A :
(VRAI) x=[1,2,1,1]; y=[1,1,2,1]; plot2d(x,y,5,"000")
B :
(FAUX) x=[1,2,1]; y=[1,1,2]; plot2d(x,y,5,"000")
C :
(VRAI) x=[1,2,1]; y=[1,1,2]; plot2d([x,1],[y,1],5,"000")
D :
(FAUX) x=[1,2;1]; y=[1,1;2]; plot2d(x,[y,1],5,"000")
E :
(FAUX) x=[1,2,1]; y=[1,1,2]; plot2d([x,1,2],[y,1,2],5,"000")
Question 6. La commande x=linspace(-%pi,%pi,200)'; y=sin(x); suivie de la ligne de commande proposée affiche sur le même graphique la fonction $ \sin(x)$ en trait continu noir et son approximation de Taylor en 0 à l'ordre 3 en trait continu rouge:
A :
(VRAI) t3=x-x.^3/6; plot2d([x,x],[y,t3],[1,5]);
B :
(FAUX) plot2d(x,y,-1); t3=x-x.^3/6; plot2d(x,t3,5);
C :
(VRAI) plot2d(x,y,1); deff("y=f(x)","y=x-(x.*x.*x)/6"); fplot2d(x,f,5,"000");
D :
(FAUX) plot2d(x,y); deff("y=f(x)","y=x-(x*x*x)/6"); t3=f(x); plot2d(x,t3,5);
E :
(FAUX) plot2d(x,y); deff("y=f(x)","y=x-(x.*x.*x)/6"); fplot2d(x,f);
Question 7. La ligne de commande suivante affiche une valeur numérique proche de $ \int_1^3 \ln (t)\, dt$ :
A :
(VRAI) integrate("log(x)","x",1,3)
B :
(FAUX) t=[1,3]; inttrap(t,log(t))
C :
(VRAI) t=[1:0.001:3]; inttrap(t,log(t))
D :
(FAUX) t=[1:0.001:3]; sum(log(t))
E :
(FAUX) t=[1:0.001:3]; sum(log(t)/0.001)
Question 8. La ligne de commande proposée affiche le vecteur ligne v=[0,0,0,2,2,2] :
A :
(VRAI) v=[%f,%f,%f,%t,%t,%t]; v=2*bool2s(v)
B :
(FAUX) v=[zeros(3,1);2*ones(3,1)]
C :
(FAUX) v=[0,0,0;2,2,2]
D :
(FAUX) v=2*[zeros(1,3),ones(1,3)]'
E :
(VRAI) A=[zeros(3,3),2*ones(3,3);4*ones(3,6)];v=A(1,:)
Question 9. La ligne de commande proposée affiche la matrice carrée à 10 lignes et 10 colonnes $ A$, dont les coefficients d'ordre $ (i,i+1)$ valent $ i$ pour $ i=1...9$, tous les autres étant nuls :
A :
(FAUX) v=[1:9]; A=diag(v)
B :
(VRAI) v=[1:9]; A=[zeros(9,1),diag(v);zeros(1,10)]
C :
(VRAI) A=zeros(10,10); for i=1:9, A(i,i+1)=i; end; A
D :
(FAUX) for i=1:9, for j=1:9, if j==i+1 then, A(i,j)=i; else A(i,j)=0 end; end; A
E :
(FAUX) A=toeplitz(zeros(10,1),[0,1,zeros(1,8)])
Question 10. On pose A=[1:3;3:-1:1;0:2] et v=[2;1;0] :
A :
(VRAI) v'*A*v est un réel.
B :
(FAUX) v.*v' est une matrice à trois lignes et trois colonnes.
C :
(VRAI) v(3:-1:1)'==A(3,:) donne [T T T]
D :
(FAUX) v(3:-1:1)==A(:,3)' donne [T T T]
E :
(FAUX) B=A'; B(:,3)==v donne [T T T]