• Aucun résultat trouvé

TD 13 : Scilab (2

N/A
N/A
Protected

Academic year: 2022

Partager "TD 13 : Scilab (2"

Copied!
14
0
0

Texte intégral

(1)

TD 13 : Scilab (2

ème

partie) - Corrigé

Exercice 1 : u =

8. 5. 2.

v =

- 1. 1. 3.

w =

1. 1. 1.

M =

8. 5. 2.

- 1. 1. 3.

1. 1. 1.

Exercice 2 : On suppose que est déclaré numériquement et on considère le vecteur défini par x=1:n.

1. La commande s=sum(x) renvoie le résultat de :

= + 1 2

y=cumsum(x) renvoie un vecteur constitué des sommes partielles, pour = 10, on obtient : y =

1. 3. 6. 10. 15. 21. 28. 36. 45. 55.

2. La commande p=prod(x) renvoie le résultat de :

= !

z=cumprod(x) renvoie un vecteur constitué des produits partiels (des factoriels intermédiaires), pour = 10, on obtient :

z =

1. 2. 6. 24. 120. 720. 5040.

3. La commande x.^x renvoie le vecteur x dont les composantes sont élevées à leur propre puissance : 1 2 3

4. La commande x*ones(n,1) renvoie le résultat du produit de la matrice de taille (1,n) représentée par le vecteur x par la matrice de taille (n,1) constituée uniquement de 1.

On obtient inalement la somme

= + 1 2

5. La commande ones(1,n)./x renvoie le vecteur %1 &

En utilisant la commande de la question 4. :

ones(1,n)./x*ones(n,1) renvoie bien la somme demandée.

6. Voici deux réponses possibles : n=1

x=1:n

while ones(1,n)./x*ones(n,1)<=10 do n=n+1;x=1:n end

disp(n)

(2)

Ou encore : n=1 s=1

while s<=10 do n=n+1;s=s+1/n end

disp(n)

Les deux programmes renvoient la valeur 12367.

Exercice 3 :

1. a=1:10;x=3*ones(1,10)./a

Ou directement : x=3*ones(1,10)./(1:10) 2. a=1:10;b=a.^2;y=ones(1,10)./b Ou directement : y=ones(1,10)./(1:10).^2 3. a=1:10;z=3.^a

Ou directement : z=3.^(1:10)

Exercice 4 :

1) max(0:7:1000) : la réponse est 994.

2) max(0:7:1000)+7 : la réponse est 1001.

Exercice 5 :

1. On utilise une matrice de même taille que A constituée de 1 et on utilise la commande ./ : B=ones(2,3)./A

Exemple : le programme A=[2,5,4;8,4,2],B=ones(2,3)./A renvoie : A =

2. 5. 4.

8. 4. 2.

B =

0.5 0.2 0.25 0.125 0.25 0.5 2.

a=input(‘entrez la valeur de a :’) b=input(‘entrez la valeur de b :’) n=input(‘entrez la valeur de n :’) A= b*ones(n,n)+(a-b)*eye(n,n)

Exercice 6 : a)

u0=input(‘entrez la valeur de u0 :’) n=input(‘entrez la valeur de n :’) u(1)=0.5*sqrt(3+u0^2)

for k=1:n-1 u(k+1)=0.5*sqrt(3+u(k)^2) end

disp(u(n),’u(n)=’)

(3)

Ou avec la méthode déjà rencontrée dans le TD 12 : u=input(‘entrez la valeur de u0 :’) n=input(‘entrez la valeur de n :’) for k=1:n u=0.5*sqrt(3+u^2)

end disp(u)

b Il suffit de rajouter les instructions : s=sum(u)+u0;disp(s) (car u0 n’est pas compté dans les composantes du vecteur u)

Ou avec la méthode déjà rencontrée dans le TD 12 : u=input(‘entrez la valeur de u0 :’) n=input(‘entrez la valeur de n :’) s=u

for k=1:n u=0.5*sqrt(3+u^2);s=s+u end

disp(s)

c L’utilisation du vecteur u n’est pas très pratique, on utilisera la méthode rencontrée dans le TD 12 : u=input(‘entrez la valeur de u0 :’)

n=1

while abs(u-1)>=10^-3 do n=n+1;u=0.5*sqrt(3+u^2) end

disp(n)

Exercice 7 :

1. function [z]=f(x,y),z=x^3-4*x*y^2,endfunction x=-2:0.1:2;y=x;fplot3d(x,y,f)

2. a) ()), +) = ,-)), +)

-)), +). = ,3− 4+

−8+ .

()1,1 = %−1−8& donc ‖()1,1‖ = 4−1+ −8 = √65

‖()1,1‖ ()1,1 =1 1

√65%−1−8& = 7 89− 1

√65

− 8

√65:

;<

(4)

On cherche , + tel que , − 1+ − 1. = 1

‖())1,1)‖ ())1,1) On en déduit que , + = ,1 − 1

√65, 1 − 8

√65.

b ()1,0 = %30& donc ‖()1,0‖ = 43+ 0 = 3

‖()1,0‖ ()1,0 =1 1 3 %3

0& = %1 0&

On cherche , + tel que , − 1+ − 0. = 1

‖())1,0)‖ ())1,0) On en déduit que , + = 2,0

Enfin : ()−1,1 = %−18 & donc ‖()−1,1‖ = 4−1+ 8 = √65

‖()−1,1‖ ()−1,1 =1 1

√65%−18 & = 7 89− 1

√658

√65 :

;<

On cherche , + tel que , + 1+ − 1. = 1

‖())−1,1)‖ ())−1,1) On en déduit que , + = ,−1 − 1

√65, 1 + 8

√65. c)1,1 = −3 , )1,0 = 1 et )−1,1 = 3

Les points 1,1,0,1 et −1,1 se trouvent respectivement sur les lignes de niveau −3, 1 et 3 dfunction [z]=f(x,y),z=x^3-4*x*y^2,endfunction

x=-2:0.1:2;y=x;contour(x,y,f,[-3,1,3]) xarrows([1,1-1/sqrt(65)],[1,1-8/sqrt(65)]) xarrows([1,2],[0,0])

xarrows([-1,-1-1/sqrt(65)],[1,1+8/sqrt(65)])

Il semblerait que le gradient en un point soit perpendiculaire à la ligne de niveau en ce point …

(5)

Exercice 8 :

1. (a) x=grand(1,10000,’nor’,25,3);s=linspace(15,35,41);

me=median(x),m=mean(x),sigma=stdev(x),histplot(s,x), function [z]=f(x),z= exp(-((x-25)/3)^2/2)/3/sqrt(2*%pi) endfunction

fplot2d(15:0.1:35,f) On obtient :

me =

24.974130070739 m =

24.984630162199 sigma =

2.9844231218918

(b) x=grand(1,10000,’nor’,13,sqrt(5));s=linspace(5,20,16);

me=median(x),m=mean(x),sigma=stdev(x),histplot(s,x),

function [z]=f(x),z= exp(-((x-13)/sqrt(5))^2/2)/sqrt(5)/sqrt(2*%pi) endfunction

fplot2d(5:0.1:20,f)

On obtient : me =

12.994024295146 m =

12.989562083588 sigma =

2.2108599647122

(6)

(c) x=grand(1,10000,’nor’,100,sqrt(50));s=linspace(80,120,41);

me=median(x),m=mean(x),sigma=stdev(x),histplot(s,x),

function [z]=f(x),z= exp(-((x-100)/sqrt(50))^2/2)/sqrt(50)/sqrt(2*%pi) endfunction

fplot2d(80:0.1:120,f)

On obtient : me =

100.14115536851 m =

100.05300413481 sigma =

7.2041162854493

(7)

2. D’après ces graphiques et ces résultats, il semblerait que la moyenne, la médiane et le mode sont égaux pour une loi normale, ce qui n’est pas très surprenant en analysant la densité :

): ↦ 1

D√2Eexp ,−1

2 % − H D &

.

En la dérivant, on montre facilement qu’elle admet un maximum pour = H : le mode est donc égal à la moyenne.

De plus, sa courbe est symétrique par rapport à la droite d’équation = H donc l’intégrale I )JKJL

MN = 1

2 ∶la médiane est elle aussi égale à H.

Exercice 9 :

x=rand(1,50);y=-2.1*x+2+0.4*grand(1,50,’nor’,-1,0.3);

plot2d(x,y,-6,rect=[0,-0.8,1,1.8])

plot2d(x,corr(x,y,1)/stdev(x)^2*(x-mean(x))+mean(y),3) plot2d(corr(x,y,1)/stdev(y)^2*(y-mean(y))+mean(x),y,5)

Exercice 10 :

rand(1,10000) renvoie 10 000 valeurs prises par une loi uniforme sur [0,1[.

6*rand(1,10000) renvoie donc 10 000 valeurs appartenant à [0,6[.

floor(6*rand(1,10000)) renvoie donc 10 000 valeurs appartenant à R0; 5T

Enfin, floor(6*rand(1,10000))+1 renvoie donc 10 000 valeurs appartenant à R1; 6T Pour donner les fréquences d’apparition des faces, on utilise l’instruction tabul.

x=floor(6*rand(1,10000))+1 ;m=tabul(x,’i’);f=m(:,2)/10000;m(:,2)=f

(8)

Scilab renvoie la matrice : m =

1. 0.1597 2. 0.1707 3. 0.1706 4. 0.1615 5. 0.1651 6. 0.1724

Exercice 11 :

A=rand(20,20) renvoie une matrice carrée d’ordre 20 contenant des valeurs prises par une loi uniforme sur [0,1[. La matrice contient donc 400 valeurs réelles comprises entre 0 et 1.

sum(A<0.5) compte le nombre de coefficients de A inférieurs à 0,5.

Si X suit une loi uniforme sur [0,1[, alors UV < 0,5 = : x est donc très proche de 400/2=200.

Exercice 12 :

1. Chaque valeur de x simule une loi uniforme sur [0,1[. La condition x<p simule un événement de probabilité 1 − X (échec). La variable c compte le nombre d’expériences nécessaires à l’obtention du premier succès de probabilité X. Ce programme simule une loi géométrique de probabilité X.

2. Ce programme simule la même loi géométrique de probabilité X mais ne permet pas d’afficher les valeurs prises par x (ce qui n’a pas grande importance …)

Remarque : grand(1,1,’geom’,p) permet de simuler la même loi que dans les questions précédentes.

Exercice 13 :

On désigne par X un réel de ]0,1[ et un entier naturel.

1. Astuce : si V suit une loi de Bernoulli de paramètre X, alors Y = 2V − 1 prend la valeur −1 avec la probabilité 1 − X et la valeur 1 avec la probabilité X :

p=input(‘donner la valeur de p :’) z=2*grand(1,1,’bin’,1,p)-1

2. (a) n=input(‘donner la valeur de n :’) p=input(‘donner la valeur de p :’) u=2*grand(1,n,’bin’,1,p)-1

(b) L’instruction sum(u==1)compte le nombre de coefficients de u égaux à 1 et a en donne la fréquence, a est donc une estimation du réel p : si n est assez grand, la valeur renvoyé pour a devrait être assez proche de p.

Pour n=10 000 et p=0.2, Scilab renvoie a=0.2045

3. (a) On utilise l’instruction cumsum qui fait le cumul (sommes partielles) des abscisses successives : n=input(‘donner la valeur de n :’)

p=input(‘donner la valeur de p :’)

u=2*grand(1,n,’bin’,1,p)-1 ; x=cumsum(u)

(b) L’instruction t=1:n;plot(t,x) permet de dessiner le « voyage » du point

(9)

Exemple de voyage avec n=100 et p=0.5 :

(c) L’instruction sum(x==0) compte le nombre de retours à l’origine

Exercice 14 :

Ce jeu est une chaîne de Markov à 4 états : 0, 1, 2, 3 (attention : les états classiques d’une chaîne de Markov sont 1, 2, 3 et 4…).

Le point O est « réfléchissant », c’est-à-dire que, si à l’instant il est en O, il est certain qu’à l’instant + 1 il sera en A :

UZ[\]^V_ = 0 = 0, UZ[\]^V_ = 1 = 1, UZ[\]^V_= 2 = 0, UZ[\]^V_ = 3 = 0 Si le mobile est en A à l’instant , il sera de façon équiprobable en O ou en B à l’instant + 1 : UZ[\^V_ = 0 =1

2 , UZ[\^V_ = 1 = 0, UZ[\^V_= 2 = 1

2 , UZ[\^V_ = 3 = 0 S’il est en B à l’instant , il sera de façon équiprobable en A ou en C à l’instant + 1 :

UZ[\^V_ = 0 = 0, UZ[\^V_ = 1 =1

2 , UZ[\^V_= 2 = 0, UZ[\^V_ = 3 =1

Le point C est « absorbant », c’est-à-dire que, si à l’instant le mobile est en C, il est certain qu’à l’instant 2 + 1 il sera encore en C :

UZ[\^V_ = 0 = 0, UZ[\^V_ = 1 = 0, UZ[\^V_= 2 = 0, UZ[\^V_ = 3 = 1 D’où la matrice de transition :

` = a

0 1

1/2 0 0 0

1/2 0 0 1/2

0 0 0 1/20 1 c On écrit l’instruction :

M=[0,1,0,0;1/2,0,1/2,0;0,1/2,0,1/2;0,0,0,1];x=grand(20,’markov’,M,1)-1 (le 1 en fin de parenthèse signifie que le mobile est à l’état initial au départ et le -1 ramène les valeurs 1, 2, 3, 4 à 0, 1, 2, 3)

Scilab renvoie :

1. 2. 1. 0. 1. 2. 1. 0. 1. 2. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3.

On remarque que l’état 3 est très vite atteint et ne sera plus quitté : point C absorbant …

(10)

Exercice 15 :

On obtient sans hésiter la matrice de transition suivante :

` = d2/3 1/6 1/6 1/6 2/3 1/6 1/6 1/6 2/3e

1. M=[2/3,1/6,1/6;1/6,2/3,1/6;1/6,1/6,2/3];x=grand(20,’markov’,M,1) Scilab renvoie :

3. 3. 3. 2. 2. 3. 3. 3. 3. 2. 2. 1. 1. 1. 2. 2. 2. 1. 2. 1.

2. On va calculer les fréquences d’apparition de chaque état : n=input(‘entrez la valeur de n :’);

M=[2/3,1/6,1/6;1/6,2/3,1/6;1/6,1/6,2/3];x=grand(n,’markov’,M,1);

a=sum(x==1)/n,b=sum(x==2)/n,c=sum(x==3)/n

Pour n=100 000, Scilab renvoie : a =

0.33101 b =

0.33363 C =

0.33536

Il semblerait que l’état stable soit (1/3 1/3 1/3) …

Exercice 16 :

1. D’après le théorème de transfert, l’intégrale peut être interprétée comme l’espérance de la variable Y.

2. On estime cette valeur grâce à l’estimateur classique de la moyenne : la moyenne empirique g = 1

g

où g, g, … , g) est un échantillon de la variable g.

On créée d’abord le vecteur g, g, … , g :

y=ones(1,n)./(1+(grand(1,n,’unf’,0,1).^3)) Puis on calcule la moyenne des valeurs du vecteur obtenu : m=sum(y)/n

Pour n=1000, Scilab renvoie : m =

0.8351676706354

Pour n=10000, Scilab renvoie : m =

0.8357847485893

Pour n=100000, Scilab renvoie : m =

0.8354447864191

Pour info : la valeur exacte de cette intégrale est ln2) + 2√3Arctan , 1√3.

3 ≈ 0,83565

(11)

Exercice 17 :

1. On sait que, si V suit une loi de Poisson de paramètre 3, alors : UV ≤ 10 = 3

! oM

]

]

2. Pour simuler cette somme, on va simuler un grand nombre de lois de Poisson de paramètre 3 et déterminer la proportion de valeurs inférieures ou égales à 10.

find(grand(1,n,’poi’,3)<=10) renvoie un vecteur dont les valeurs sont inférieurs ou égales à 10 length(find(grand(1,n,’poi’,3)<=10)) renvoie le nombre d’éléments du vecteur dont les valeurs sont inférieurs ou égales à 10

Enfin length(find(grand(1,n,’poi’,3)<=10))/n renvoie la proportion des éléments précédents.

Pour n=10000, Scilab renvoie : ans =

0.9998

Pour n=100000, Scilab renvoie : ans =

0.99971

Exercice 18 : 1 %10 &

√1 + p

] ]

= 2]

√1 + p

] ]

× %10 & ,1 2.

,1 2.

]M

Grâce au théorème de transfert, la somme correspond à l’espérance de la variable g =√_[rst où V suit une loi binomiale de paramètres 10 et : on va estimer cette somme à l’aide de la moyenne empirique.

On construit le vecteur g, g, … , g et on calcule sa moyenne.

On créée d’abord le vecteur g, g, … , g :

y=2^10*ones(1,n)./sqrt(1+(grand(1,n,’bin’,10,0.5).^4)) Puis on calcule la moyenne des valeurs du vecteur obtenu :

m=sum(y)/n

Après trois essais pour n=100000, Scilab renvoie : m =

64.339696138403 m =

64.520817416365 m =

64.902525112992

2 1 o ×√

!

_N

= √ ×1

!

_N

oM= √ ×1

!

_N ]

oM

Grâce au théorème de transfert, la somme correspond à l’espérance de la variable g = √V où V suit une loi de Poisson de paramètre 1 : on va estimer cette somme à l’aide de la moyenne empirique.

On construit le vecteur g, g, … , g et on calcule sa moyenne.

On créée d’abord le vecteur g, g, … , g :

(12)

y=sqrt(grand(1,n,’poi’,1))

Puis on calcule la moyenne des valeurs du vecteur obtenu : m=sum(y)/n

Après trois essais pour n=100000, Scilab renvoie : m =

0.7733623611594 m =

0.7736400334573 m =

0.7754627778695

3 1

2

_N

= 1

_N

×1 2 ,1

2.

M

Grâce au théorème de transfert, la somme correspond à l’espérance de la variable g =[u où V suit une loi géométrique de paramètre : on va estimer cette somme à l’aide de la moyenne empirique.

On construit le vecteur g, g, … , g et on calcule sa moyenne.

On créée d’abord le vecteur g, g, … , g :

y=ones(1,n)./((grand(1,n,’geom’,0.5)).^3) Puis on calcule la moyenne des valeurs du vecteur obtenu : m=sum(y)/n

Après trois essais pour n=100000, Scilab renvoie : m =

0.5371978045009 m =

0.5359285497733 m =

0.5359281321983

Exercice 19 : 1 I 41 + vK

∶ dwaprès le théorème de transfert, cette intégrale est lwespérance de la variable g déinie par g = 41 + Vv où V suit la loi uniforme sur Z1; 2^.

On estime cette valeur grâce à l’estimateur classique de la moyenne : la moyenne empirique g = 1

g

où g, g, … , g) est un échantillon de la variable g.

On créée d’abord le vecteur g, g, … , g : y=sqrt(1+grand(1,n,’unf’,1,2).^5)

Puis on calcule la moyenne des valeurs du vecteur obtenu : m=sum(y)/n

Après 3 essais, pour n=100 000, Scilab renvoie les valeurs

3.1554338436265, 3.1457093746594, 3.147035072448

2 I oMy 1 + pK

_N

] = I 1

1 + p× oMyK

_N ]

(13)

Dwaprès le théorème de transfert, cette intégrale est lwespérance de la variable g déinie par g = 1

1 + Vp où V suit la loi exponentielle de paramètre 1.

On estime cette valeur grâce à l’estimateur classique de la moyenne : la moyenne empirique g = 1

g

où g, g, … , g) est un échantillon de la variable g.

On créée d’abord le vecteur g, g, … , g :

y=ones(1,n)./(1+grand(1,n,’exp’,1).^4) Puis on calcule la moyenne des valeurs du vecteur obtenu : m=sum(y)/n

Après 3 essais, pour n=100 000, Scilab renvoie les valeurs

0.6319015564869, 0.6321750889907, 0.6307853808621

3Par parité, I oMy{ 1 + K

_N

] =1

2 I oMy{ 1 + K

_N MN

La densité d’une loi normale de paramètres H et Dest définie par : ): ↦ 1

D√2Eexp ,−1

2 % − H D &

.

On en déduit que la densité d’une loi normale de paramètres 0 et est définie par : ): ↦ √2

√2Eexp− = 1

√EoMy{ 12 I oMy{

1 + K

_N

MN = √E

2 I 1

1 + × 1

√EoMy{K

_N

Dwaprès le théorème de transfert, cette intégrale est lMN wespérance de la variable g déinie par g = √E

2 1

1 + V où V suit la loi normale de paramètres 0 et ,1

√2.. On estime cette valeur grâce à l’estimateur classique de la moyenne :

la moyenne empirique g = 1

g

où g, g, … , g) est un échantillon de la variable g.

On créée d’abord le vecteur g, g, … , g :

y=sqrt(%pi)/2*ones(1,n)./(1+grand(1,n,’nor’,0,1/sqrt(2)).^2) Puis on calcule la moyenne des valeurs du vecteur obtenu :

m=sum(y)/n

Après 3 essais, pour n=100 000, Scilab renvoie les valeurs

0.6710823470904, 0.6714306677270, 0.6722606725135

Exercice 20 :

1. Pour tout ∈ R1; T, }V =0 + ~ 2 =~

2 et V =~ − 0 12 = ~

12 }g

‚ƒé„…‚†é

2

}V

= 2

× ,~

2. = ~ et g

‚ƒ‡éˆ‰ƒ‡„ƒŠ‰,2 .

V

= 4

× ‹~

12Œ =~ 3 g est bien un estimateur sans biais }g = ~ et son risque quadratique (égal à sa variance) converge vers 0 donc il est également convergent.

(14)

Étudions l’estimateur Y : Pour cela étudions la variable aléatoire  = MaxV, V, … , V) :

∀ ∈ ℝ, U ≤ = U‘V ≤ ∩ V ≤ ∩ … ∩ V ≤ “ = UV ≤ × … × UV ≤ = ‘”“

où ” est la fonction de répartition des variables V de loi uniforme sur Z0, ~^.

∀ ∈ ℝ, ” =

•–

—

–˜ 0 si < 0

~ si ∈ Z0; ~^

1 si > ~

š , donc ∀ ∈ ℝ, U ≤ =

•–

—

–˜ 0 si < 0

%

~&

si ∈ Z0; ~^

1 si > ~

š

On en déduit une densité de  :

∀ ∈ ℝ, ) = ”w =

•–

—

–˜ 0 si < 0 ~ %

~&

M si ∈ Z0; ~^

0 si > ~

š = ›M

~ si ∈ Z0; ~^

0 sinon

š

On en déduit l’espérance et la variance de  : } = I )K_N

MN = I M

~ K

œ

] =

~I œ K

] =

~× ~_

+ 1 = + 1 ~ On en déduit que }Y = + 1

= + 1

×

+ 1 ~ = ~ Y est donc un estimateur sans biais de ~.

Il reste à déterminer sa variance. Commençons par la variance de  : } = I _N )K

MN = I M

~ K

œ

] =

~I œ _K

] =

~ × ~_

+ 2 = + 2 ~ Ainsi  = } − } =

+ 2 ~− % + 1 ~&

= ~, 1

+ 2 − + 1.

= ~‹ + 1

+ 2 + 1− + 2

+ 2 + 1Π= ~ + 2 + 1 Enin, Y = , + 1

.

= , + 1 .

~

+ 2 + 1 = ~

Conclusion ∶ Y est bien un estimateur sans biais }Y = ~ + 2 et son risque quadratique (égal à sa variance) converge vers 0 donc il est également convergent.

2. n=input(‘entrez la valeur de n :’);

theta=input(‘entrez la valeur de theta :’);

y=0 ;z=0 ;

for k=1:1000 ; x=grand(1,n,’unf’,0,theta) ; y=y+2*sum(x)/n/1000;

z=z+(n+1)/n*max(x)/1000 end

disp(y,’y est égal à:’); disp(z,’z est égal à :’) En trois essais, pour ~ = 3 et n=100, Scilab renvoie :

y est égal à:

2.9974665210244

y est égal à:

3.0030461471289

y est égal à:

2.9958794153877

z est égal à : 2.9993097247482

z est égal à : 3.0003877081149

z est égal à :

2.9989419509175

3. On a vu que les risques quadratiques respectifs de g et Y sont œ{ et _œ{ : le deuxième converge plus vite vers 0 que le premier, il est donc logique que z soit plus proche de 3 que y …

Références

Documents relatifs

Écris alors les égalités de fractions

Écris alors les égalités de fractions

[r]

Peut-on déterminer la valeur exacte de cette

[r]

Quels sont les points situés à la même

2 Réécris chaque nombre avec un dénominateur positif et le minimum de signes

2  Réécris chaque nombre avec un dénominateur positif et le minimum de signes