TD 12 : Scilab - Corrigé
Exercice 1 :
1) x=1/sqrt(2*%pi)*exp(-1.5^2/2) y=log(1+3*sqrt(2))
2) x=
5.
y=
3.1415926 ans=
3. (valeur affectée automatiquement à ans car non affecté à une variable) z=
8.
ans=
0.
ans=
3.
x=
-2.
Exercice 2 :
L’instruction disp(c,b,a) affiche en premier a, puis c, car inversion de l’ordre d’affichage.
entrez la valeur de a :2 entrez la valeur de b :3 entrez la valeur de c :4
10.
7.
5.
Exercice 3 :
a=input(‘entrez la valeur de a :’) b=input(‘entrez la valeur de b :’)
c=a // on sauvegarde le contenu de a dans une 3ème variable a=b // on affecte à a la valeur de b
b=c // on affecte à b la valeur initiale de a sauvegardée dans c ou bien :
a=input(‘entrez la valeur de a :’) b=input(‘entrez la valeur de b :’)
c=b // on sauvegarde le contenu de b dans une 3ème variable b=a // on affecte à b la valeur de a
a=c // on affecte à a la valeur initiale de b sauvegardée dans c
Exercice 4 : 1)
n=input(‘entrez la valeur de n :’) S=0
for k=1:n S=S+1/k^2 end
disp(u)
2)
n=input(‘entrez la valeur de n :’) P=1
for k=1:n P=P*(1+1/k^2) end
disp(P) 3) a)
n=input(‘entrez la valeur de n :’) u=2
for k=1:n u=1-exp(-u) end
disp(u) b)
n=input(‘entrez la valeur de n :’) u=2
disp(u)
for k=1:n u=1-exp(-u) disp(u)
end
Exercice 5 :
epsilon=input(‘entrez la valeur de epsilon :’) u=1
n=0
while abs(u-sqrt(2))>=epsilon do u=1/2*(u+2/u) n=n+1
end disp(n)
Exercice 6 :
function [z]=min(a,b),if a<b then z=a else z=b endfunction
Exercice 7 :
1) On utilise la propriété : 𝑘! = 𝑘(𝑘 − 1)!
function [z]=fact(n),z=1, for k=1:n z=z*k, end endfunction
2) Si 𝑘 > 𝑛, (𝑛 𝑘) = 0, sinon (𝑛
𝑘) =
𝑛!
𝑘! (𝑛 − 𝑘)!=𝑛(𝑛 − 1)(𝑛 − 2) … (𝑛 − 𝑘 + 1)
𝑘(𝑘 − 1) … × 2 × 1 = 𝑛 − 𝑘 + 1
1 ×𝑛 − 𝑘 + 2
2 × …𝑛 − 1 𝑘 − 1×𝑛
𝑘 function [z]=coeffbin(n,k)
if k>n then z=0
else z=1,for i=1:k z=z*(n-k+i)/i end
end
endfunction
Exercice 8 : Suite de Fibonacci
n=input(‘entrez la valeur de n :’) u=1
v=1 disp(u) disp(v)
for k=2:n w=v, v=u+v, u=w disp(v)
end
Exercice 9 : Conjecture de Syracuse
La condition u==2*floor(u/2) est vraie lorsque u est pair et fausse lorsque u est impair.
k=input(‘entrez la valeur de k :’) u=k
n=0
while u<>1 do n=n+1
if u==2*floor(u/2) then u=u/2 else u=3*u+1 end
end disp(n)
Exercice 10 :
1) Les valeurs prises par une variable aléatoire de loi uniforme sur [𝑎, 𝑏], sont telles que : 𝑎 ≤ 𝑥 ≤ 𝑏 ⇔ 0 ≤ 𝑥 − 𝑎 ≤ 𝑏 − 𝑎 ⇔ 0 ≤ 𝑥 − 𝑎
𝑏 − 𝑎≤ 1
La fonction rand choisit un réel aléatoire dans l’ensemble [0; 1[, la fonction (b-a)*rand+a choisit alors un réel aléatoire dans l’ensemble [𝑎; 𝑏[ :
a=input(‘entrez la valeur de a :’) b=input(‘entrez la valeur de b :’) x=(b-a)*rand()+a
Si on se place maintenant sur ⟦𝑎, 𝑏⟧ = {𝑎; 𝑎 + 1; … ; 𝑏}, pour choisir un entier au hasard dans cet ensemble, on choisit un réel au hasard sur [𝑎; 𝑏 + 1[ et on prend sa partie entière :
a=input(‘entrez la valeur de a :’) b=input(‘entrez la valeur de b :’) x=floor((b+1-a)*rand()+a)
2) Pour simuler un événement de probabilité 𝑝, on utilise la condition rand()<p ou rand()<=p : n=input(‘entrez la valeur de n :’)
p=input(‘entrez la valeur de p :’) x=0
for k=1:n a=rand(), if a<=p then x=x+1 end
end disp(x)
Exercice 11 : D’après ECRICOME 2014
1. Pour tout 𝑥 > 0, ln(1 + 𝑥) > 0 donc 𝑓(𝑥) > 0 sur ]0; +∞[ et donc sur [0; +∞[.
Pour montrer que, pour tout entier naturel 𝑛, 𝑢𝑛 existe, il suffit de montrer que chacun des termes de la suite est strictement positif ce qui est immédiat par récurrence.
2. N=input(‘entrez la valeur de N :’) u=%e
for k=1:N u=u/log(1+u) end
disp(u)
Exercice 12 : D’après EDHEC 2013
1. (a) On démontre ce résultat par récurrence :0 ≤ 𝑢0 ≤ 1 donc vrai au rang 0.
Hérédité : on suppose que 0 ≤ 𝑢𝑛 ≤ 1 pour un certain entier naturel 𝑛 et on montre que 0 ≤ 𝑢𝑛+1 ≤ 1 0 ≤ 𝑢𝑛 ≤ 1 ⇒ 0 ≤ 𝑢𝑛2 ≤ 1 ⇒ 1 ≤ 𝑢𝑛2 + 1 ≤ 2 ⇒1
2≤𝑢𝑛2 + 1
2 ≤ 1 ⇒ 0 ≤ 𝑢𝑛+1 ≤ 1 Conclusion : pour tout entier naturel 𝑛, 0 ≤ 𝑢𝑛 ≤ 1.
(b) Pour tout 𝑛 ∈ ℕ, 𝑢𝑛+1− 𝑢𝑛 =𝑢𝑛2 + 1
2 − 𝑢𝑛 = 𝑢𝑛2+ 1 − 2𝑢𝑛
2 =(𝑢𝑛− 1)2 2 ≥ 0 on en déduit que la suite (𝑢𝑛) est croissante.
(c) La suite (𝑢𝑛) est croissante et majorée par 1 donc elle converge. Etant donné que la focntion définissant cette suite est une fonction polynôme donc continue sur ℝ, sa limite est une solution de l’équation :
𝑥 =𝑥2+ 1
2 ⇔𝑥2 − 2𝑥 + 1
2 = 0 ⇔ 𝑥 = 1 Conclusion : La suite (𝑢𝑛) converge vers 1.
2. Inutile de tester l’inégalité 1 − 𝑢𝑛 > 0 car elle est vraie pour tout entier 𝑛.
u=0 n=0
while 1-u>=10^-3 do u=(u^2+1)/2,n=n+1 end
disp(n)
Exercice 13 : D’après ECRICOME 2011
C’est la méthode appelée « dichotomie ». Définissons d’abord la fonction phi : function [z]=phi(x)
if x==0 then z=1
else z=1-x^2*log(x) end
endfunction
Puis programmons les termes des suites : a=sqrt(2),b=2
for k=1:7 if phi(a)*phi((a+b)/2)<0 then b=(a+b)/2 else a=(a+b)/2 end
end
disp(b,a)
Exercice 14 : D’après ECRICOME 2010
On considère l’application 𝜑 définie sur ℝ+∗ par :
𝜑(𝑥) = ln(𝑥) − ln(𝑥 + 1) +1 𝑥 1. Voir corrigé ECRICOME 2010
Montrer que l’équation 𝜑(𝑥) = 1 admet une unique solution 𝛼 sur ℝ+∗ et que 1
3< 𝛼 < 1 2
2. On va raisonner par dichotomie, comme dans l’exercice 13 : on construit deux suites (𝑎𝑛) et (𝑏𝑛) qui encadrent 𝛼, on calcule l’écart 𝑏𝑛− 𝑎𝑛 et on s’arrête lorsqu’il est inférieur ou égal à 10−3.
La fonction 𝜑 étant décroissante, phi((a+b)/2)<1 signifie que 𝜑(𝑎) > 1 > 𝜑 (𝑎+𝑏2 ) et donc que 𝑎 < 𝛼 <𝑎+𝑏2
function [z]=phi(x), z=log(x)-log(x+1)+1/x endfunction
a=1/3,b=1/2
while b-a>10^-3 do if phi((a+b)/2)<1 then b=(a+b)/2 else a=(a+b)/2 end
end
disp(b,a)
Exercice 15 : D’après EDHEC 2010
On crée une fonction qui simule les valeurs prises par une variable de loi exponentielle de paramètre 1 en utilisant Z :
function [z]=expo(x), z=-log(1-rand()) endfunction
Exercice 16 :
n=0, fact=1, erreur=1, s=1 while erreur >0,00001
n=n+1
fact=fact*n s=s+1/fact
erreur=1/(n*fact) end
disp(s)
Exercice 17 : D’après EDHEC 2014 function [X]=simul(theta), Y=1
while rand()>1/(1+theta) do Y=Y+1, end X=Y-1
endfunction
Exercice 18 : D’après ECRICOME 2014 1.
function [x]=lancer(p),if rand()<p then x=1, else x=0,end endfunction
2.
function [x]=premier_pile(p),u=0,while lancer(p)=0 do u=u+1, end x=u
endfunction 3.
p=input(‘entrez la valeur de p :’)
function [x]=lancer(p),if rand()<p then x=1, else x=0,end endfunction
function [x]=premier_pile(p),u=0,while lancer(p)=0 do u=u+1, end x=u
endfunction
a=premier_pile(p)+premier_pile(p)-1 disp(a)