In [3]:
from sympy import*
init_session()
IPython console for SymPy 0.7.5 (Python 3.2.3-32-bit) (ground types: python)

These commands were executed:
>>> from __future__ import division
>>> from sympy import *
>>> x, y, z, t = symbols('x y z t')
>>> k, m, n = symbols('k m n', integer=True)
>>> f, g, h = symbols('f g h', cls=Function)

Documentation can be found at http://www.sympy.org

Exercice 1

Question 1

Dans un hypermarché, 75 % des clients sont des femmes. Une femme sur cinq achète un article au rayon bricolage, alors que sept hommes sur dix le font. Une personne, choisie au hasard, a fait un achat au rayon bricolage. La probabilité que cette personne soit une femme a pour valeur arrondie au millième :

In [4]:
m
Out[4]:
$$m$$

Question 2

Dans cet hypermarché, un modèle d’ordinateur est en promotion. Une étude sta- tistique a permis d’établir que, chaque fois qu’un client s’intéresse à ce modèle, la probabilité qu’il l’achète est égale à 0, 3. On considère un échantillon aléatoire de dix clients qui se sont intéressés à ce modèle. La probabilité qu’exactement trois d’entre eux aient acheté un ordinateur de ce modèle a pour valeur arrondie au millième :

In [5]:
from scipy.stats import binom,norm
In [6]:
X = binom(10,0.3)
In [7]:
X.pmf(3)
Out[7]:
$$0.266827932$$

Question 3

Cet hypermarché vend des téléviseurs dont la durée de vie, exprimée en année, peut être modélisée par une variable aléatoire réelle qui suit une loi exponentielle de pa- ramètre \(\lambda\) . La durée de vie moyenne d’un téléviseur est de huit ans, ce qui se traduit 1 par : \(\lambda\)= 1/8 La probabilité qu’un téléviseur pris au hasard fonctionne encore au bout de six ans a pour valeur arrondie au millième

In [8]:
exp(-1/8*6)
Out[8]:
$$0.472366552741015$$
In [9]:
Z = norm(0,1) #loi normale centrée réduite Z = (Y-200)/sigma
In [10]:
Z.isf((1+0.954)/2) 
#inversion de la loi N(0;1) valeur de aplha telle que P(Z<alpha) = (1+0.954)/2
#où alpha = (184-200)/sigma
Out[10]:
$$-1.99539331017$$
In [11]:
sigma = -16/Z.isf((1+0.954)/2)
sigma
Out[11]:
$$8.0184693005$$
In [12]:
Y = norm(200,sigma)
In [13]:
Y.cdf(192)  #P(Y<192)
Out[13]:
$$0.159213237845$$

Exercice 2

On définit, pour tout entier naturel \(n\), les nombres complexes \(z\) par :

\(z_{0}= 16\)

\(z_{n+1}=\dfrac{1 + \text{i}}{2}z_{n}: \text{pour tout entier naturel} \: n\)

On note \(r_{n}\) le module du nombre complexe \(z_{n}\: : r_{n} =\left|z_{n}\right|\).

Dans le plan muni d'un repère orthonormé direct d'origine O, on considère les points \(A_{n}\) d'affixes \(z_{n}\)

In [14]:
def z(n):
    raison = (1+I)/2
    terme = 16
    for i in range(1,n+1):
        terme = terme*raison
    return simplify(terme)
In [15]:
for i in range(20):  #calcul des premiers termes
    print('z(%s)=%s'%(i,z(i)))
z(0)=16
z(1)=8 + 8*I
z(2)=8*I
z(3)=-4 + 4*I
z(4)=-4
z(5)=(1 + I)**5/2
z(6)=-2*I
z(7)=1 - I
z(8)=1
z(9)=1/2 + I/2
z(10)=I/2
z(11)=-1/4 + I/4
z(12)=-1/4
z(13)=(1 + I)**13/512
z(14)=-I/8
z(15)=1/16 - I/16
z(16)=1/16
z(17)=1/32 + I/32
z(18)=I/32
z(19)=-1/64 + I/64

In [16]:
a = (1+I)/2
a
Out[16]:
$$\frac{1}{2} + \frac{i}{2}$$
In [17]:
abs(a)
Out[17]:
$$\frac{\sqrt{2}}{2}$$
In [18]:
arg(a)
Out[18]:
$$\frac{\pi}{4}$$
In [19]:
abs(a)*exp(I*arg(a)) #forme exponentielle de a=(1+I)/2
Out[19]:
$$\frac{\sqrt{2}}{2} e^{\frac{i \pi}{4}}$$
In [20]:
O = 0
A1 = z(1)
A2 = z(2)
O, A1 , A2
Out[20]:
$$\begin{pmatrix}0, & 8 + 8 i, & 8 i\end{pmatrix}$$
In [21]:
arg((O-A2)/(A1-A2)) #(A2A1,A2O) est un angle droit 
Out[21]:
$$- \frac{\pi}{2}$$
In [22]:
def r(n):  #définition de la suite des modules rn=|zn|
    return simplify(abs(z(n)))
In [23]:
precedent = r(0)
for i in range(1,20):  #calcul des premiers quotients de 2 termes successifs de la suite r(n)
    courant = r(i)
    print('r(%s)/r(%s)=%s'%(i,i-1,courant/precedent))
    precedent = courant
r(1)/r(0)=sqrt(2)/2
r(2)/r(1)=sqrt(2)/2
r(3)/r(2)=sqrt(2)/2
r(4)/r(3)=sqrt(2)/2
r(5)/r(4)=sqrt(2)/2
r(6)/r(5)=sqrt(2)/2
r(7)/r(6)=sqrt(2)/2
r(8)/r(7)=sqrt(2)/2
r(9)/r(8)=sqrt(2)/2
r(10)/r(9)=sqrt(2)/2
r(11)/r(10)=sqrt(2)/2
r(12)/r(11)=sqrt(2)/2
r(13)/r(12)=sqrt(2)/2
r(14)/r(13)=sqrt(2)/2
r(15)/r(14)=sqrt(2)/2
r(16)/r(15)=sqrt(2)/2
r(17)/r(16)=sqrt(2)/2
r(18)/r(17)=sqrt(2)/2
r(19)/r(18)=sqrt(2)/2

La suite \((r_n)\) est visiblement géométrique de raison \(\frac{\sqrt{2}}{2}\)

Pour le prouver il suffit de remarquer que pour tout entier \(n\), \(r_{n+1}=|(1+i)/2|r_{n}=\frac{\sqrt{2}}{2}r_{n}\)

Pour tout entier \(n\), \(A_{n}A_{n+1}=|z_{n+1}-z_{n}|=|(i-1)/2*z_{n}|=|\frac{\sqrt{2}}{2}*z_{n}|=\frac{\sqrt{2}}{2}*r_{n}=r_{n+1}\)

Donc \(L_{n}=\sum_{i=0}^{n-1}A_{i}A_{i+1}=\sum_{i=0}^{n-1} r_{0}*\left(\frac{\sqrt{2}}{2}\right)^i=r_{0}\times \frac{1-\left(\frac{\sqrt{2}}{2}\right)^{n}}{1-\frac{\sqrt{2}}{2}}\)

In [54]:
Limit(r(1)*(1-(sqrt(2)/2)**n)/(1-sqrt(2)/2),n,oo)
Out[54]:
$$\lim_{n \to \infty}\left(\frac{8 \sqrt{2} \left(- \left(\frac{\sqrt{2}}{2}\right)^{n} + 1\right)}{- \frac{\sqrt{2}}{2} + 1}\right)$$
In [55]:
Limit(r(1)*(1-(sqrt(2)/2)**n)/(1-sqrt(2)/2),n,oo).doit()
Out[55]:
$$- \frac{16 \sqrt{2}}{-2 + \sqrt{2}}$$
In [56]:
simplify(_)
Out[56]:
$$16 + 16 \sqrt{2}$$

Exercice 3

Une image numérique en noir et blanc est composée de petits carrés (pixels) dont la couleur va du blanc au noir en passant par toutes les nuances de gris. Chaque nuance est codée par un réel \(x\) de la façon suivante :

\(\bullet\) \(x = 0\) pour le blanc

\(\bullet\) \(x = 1\) pour le noir

\(\bullet\) \(x = 0,01 \:;\: x = 0,02\) et ainsi de suite jusqu'à \(x = 0,99\) par pas de \(0,01\) pour toutes les nuances intermédiaires (du clair au foncé).

Une fonction \(f\) définie sur l'intervalle [0;1] est dite fonction de retouche si elle possède les quatre propriétés suivantes :

\(f(0) = 0\) ; \(f(1) = 1\) ; \(f\) est continue sur l'intervalle [0;1] ; \(f\) est croissante sur l'intervalle [0;1].

In [28]:
def f1(x):
    return 4*x**3-6*x**2+3*x
In [29]:
f1(x)
Out[29]:
$$4 x^{3} - 6 x^{2} + 3 x$$
In [30]:
import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline
In [31]:
u = np.linspace(0,1,500)
d = lambdify(x,x,'numpy')
f1l = lambdify(x,f1(x),'numpy')
plt.plot(u,d(u),'-r')  #en rouge la fonction identité
plt.plot(u,f1l(u),'--g') #en vert la fonction f
plt.xlim(0,1)
plt.ylim(0,1)
plt.show()

#assombrissement sur [0;1/2]
#éclaircissement sur [1;1/2]
In [32]:
solve(f1(x)-x,x) #résolution de f(x)=0
Out[32]:
$$\begin{bmatrix}0, & \frac{1}{2}, & 1\end{bmatrix}$$
In [33]:
def f2(x):
    return log(1+(exp(1)-1)*x)
In [34]:
f2(x)
Out[34]:
$$\log{\left (x \left(-1 + e\right) + 1 \right )}$$
In [35]:
def g(x):
    return f2(x)-x
In [36]:
g(x)
Out[36]:
$$- x + \log{\left (x \left(-1 + e\right) + 1 \right )}$$
In [37]:
def derivg(x):
    return diff(g(x),x)
In [38]:
derivg(x)
Out[38]:
$$-1 + \frac{-1 + e}{x \left(-1 + e\right) + 1}$$
In [39]:
simplify(_)
Out[39]:
$$\frac{- x \left(- e + 1\right) - e + 2}{x \left(- e + 1\right) - 1}$$
In [40]:
u = np.linspace(0,1,500)
gl = lambdify(x,g(x),'numpy')
derivgl = lambdify(x,derivg(x),'numpy')
plt.plot(u,gl(u),'-r')  #en rouge la fonction g
plt.plot(u,derivgl(u),'--g')  #en vert la fonction dérivée
plt.hlines(0,0,1,color='b')
plt.xlim(0,1)
plt.ylim(-1,1)
plt.show()
In [41]:
maximumg = g((exp(1)-2)/(exp(1)-1))
In [42]:
maximumg.evalf()
Out[42]:
$$0.123301561482245$$
In [43]:
u = np.linspace(0,1,500)
gl = lambdify(x,g(x),'numpy')
derivgl = lambdify(x,derivg(x),'numpy')
plt.plot(u,gl(u),'-r')  #en rouge la fonction g
plt.hlines(0.05,0,1,color='b') #y=0.05
plt.xlim(0,1)
plt.ylim(0,0.2)
plt.show()
In [44]:
from scipy.optimize import bisect
In [45]:
bisect(lambda x : g(x)-0.05,0,0.1)  
#valeur approchée de la première solution de g(x)=0.05 sur [0;1]
Out[45]:
$$0.08236260215708173$$
In [46]:
bisect(lambda x : g(x)-0.05,0.8,1)
#valeur approchée de la seconde solution de g(x)=0.05 sur [0;1]
Out[46]:
$$0.8512605708638147$$
In [47]:
#Traduction en Python de l'algorithme de la partie B
c = 0
for k in range(0,101):
    x = k/100
    y = f2(x)
    E = abs(y-x)
    if E >= 0.05:
        c = c+1
print(c)        
77

L'algorithme affiche le nombre de nuances (parmi les 101 entre 0 et 1 avec un pas de 0.01) telles que la distance entre la nuance initiale \(x\) et la nuance retouchée \(f(x)\) soit supérieure ou égale à 0,05.

La variable \(c\) sert de compteur.

D'après le tableau de variation de \(g:x \mapsto f_{2}(x)-x\) sur [0;1] et la résolution de \(g(x)=0,05\) on en déduit que :

On vérifie que \(9+77+15=101\)

In [48]:
x = symbols ('x')
In [49]:
A1 = Integral(x*exp(x**2-1),(x,0,1))
A1
Out[49]:
$$\int_{0}^{1} x e^{x^{2} - 1}\, dx$$
In [50]:
A1.doit()
Out[50]:
$$- \frac{1}{2 e} + \frac{1}{2}$$
In [51]:
A2 = Integral(4*x-15+60/(x+4),(x,0,1))
A2
Out[51]:
$$\int_{0}^{1} 4 x - 15 + \frac{60}{x + 4}\, dx$$
In [52]:
A2.doit()
Out[52]:
$$- 60 \log{\left (4 \right )} - 13 + 60 \log{\left (5 \right )}$$