• Aucun résultat trouvé

MPSI / PCSI 21 mars 2015

N/A
N/A
Protected

Academic year: 2022

Partager "MPSI / PCSI 21 mars 2015"

Copied!
2
0
0

Texte intégral

(1)

Stanislas

DS n°02 Correction

Devoir Surveillé

2h

MPSI / PCSI 21 mars 2015

Solution de l’exercice 1.

1 . a) Coder l'intensité d'une couleur nécessite 1 octet. Coder un pixel nécessite de coder un triplet de couleurs, soit 3 octets. Lorsque l'image contient 1024 pixels en largeur et 1024 en hauteur, elle contient 1024

2

pixels. Ainsi, le nombre d'octets nécessaires pour la stocker est 3 · 1024

2

. Finalement, le stockage de cette image nécessite

3 · 2

20

octets . b) Le codage d'une image monochrome nécessite de coder :

• la couleur, soit 3 octets.

• la valeur de la largeur, ici 256 = 2

8

soit 1 octet.

• la valeur de la hauteur, ici 1024 = 2

10

soit 2 octets.

Ainsi, le nombre minimal d'octets nécessaire est de 6 octets . 2 . a) Eectuons des divisions euclidiennes :

191 = 11 · 16 + 15

= (BF )

16

, 48 = 3 · 16

= (30)

16

. Ainsi, le code HEXA de la couleur fraise est

#BF3030 . b) Comme,

(21)

16

= 2 · 16 + 1

= 33, (17)

16

= 16 + 7

= 23, (7D)

16

= 7 · 16 + 13

= 125, alors le codage RGB du bleu Klein est

(33, 23, 125).

c) On utilise les primitives proposées dans l'énoncé. Si l'entier est inférieur à 9 , il est codé par lui-même, sinon on utilise les lettres de l'alphabet.

1

def s e i z e (n ) :

2

i f n < 10 :

3

return str (n)

4

else :

5

return chr (n−10+65)

Stanislas MPSI / PCSI

d) On calcule le reste et le quotient de la division euclidienne de l'argument par 16 puis on utilise la fonction précédente.

1

def dec_to_hex (n ) :

2

a , b = n//16 , n%16

3

return s e i z e ( a ) + s e i z e (b)

e) On parcourt le triplet RGB et on concatène les écritures en base 16 pour obtenir le code HEXA.

1

def rgb_dec_to_hex ( couleur ) :

2

s = '#'

3

for p in couleur :

4

s = s + dec_to_hex (p)

5

return s

3 . a) D'une part, comme M et m sont deux entiers compris entre 0 et 255 , leur moyenne l'est également. Ainsi,

` ∈ [0, 1].

Comme M et m sont des entiers positifs, alors

MM+mm

∈ [0, 1] . De plus, si ` > 1/2 , alors M + m ∈ [255, 510] et 510 − M − m ∈ [0, 255] et s ∈ [0, 1] . Finalement,

s ∈ [0, 1].

Si M = r et v > b , alors M − m = r − b > v − b > 0 . Ainsi, t ∈ [0, 60] . Si M = r et v < b , alors (v − b)/C ∈ ] − 1, 0] et t ∈ [300, 360[ . Dans les autres cas, le rapport est compris strictement entre

− 1 et 1 et, nalement,

t ∈ [0, 360[.

Le triplet (t, s, `) étant un triplet de ottants, chacun des éléments nécessite 64 bits de stockage soit 8 octets. Ainsi, le codage du triplet nécessite

24 octets .

b) Comme T ∈ J 0, 360 K, son stockage nécessite 2 octets. Comme S et L sont des entiers de l'intervalle J 0, 100 K, leur stockage nécessite 1 octet. Ainsi, le stockage du triplet nécessite

4 octets .

Solution de l’exercice 2.

1.

1

def f 1 ( alpha2 , gamma ) :

2

return ( a−L* cos ( alpha2)+ l * s i n (gamma))**2 \

3

+(L* s i n ( alpha2)+ l * cos (gamma))**2

l **2

2.

1

def determine_gamma ( g , alpha2 , x1 , x2 ) :

2

i f g ( alpha2 , x1 )* g ( alpha2 , x2 ) >0:

3

print ( 'pas de zero' )

4

return 0

5

e l i f g ( alpha2 , x1 ) > 0 :

Stanislas MPSI / PCSI

(2)

6

x1 , x2=x2 , x1

7

while abs( x1−x2)>1e

−9:

8

tmp = ( x1+x2 )/2

9

i f g ( alpha2 , tmp) > 0 :

10

x2 = tmp

11

else :

12

x1 = tmp

13

return ( x1+x2 )/2

3.

1

def f 2 ( alpha2 , lamb ) :

2

gamma = determine_gamma ( f1 , alpha2 ,

−20* pi /180 ,80* pi /180)

3

return ( a+c* s i n ( alpha2)+ l * cos (gamma))**2 +\

4

(b−c* cos ( alpha2)− l * s i n (gamma))**2

lamb**2

4.

1

def d e r i v e e ( f , x , y , h ) :

2

return ( f ( x , y+h)− f (x , y ) ) / h

5.

1

def determine_lambda ( g , alpha2 , lambda0 ) :

2

lambda = lambda0

3

h = 1e−5

4

while abs( g ( alpha2 ,lambda))>1e

−9:

5

lambda = lambda

g ( alpha2 , lambda) / d e r i v e e ( g , alpha2 , lambda , h)

6

return lambda

6.

1

alpha2 = l i n s p a c e (−10* pi /180 ,10* pi /180 ,50)

2

lambda1 = [ ]

3

for alpha in alpha2 :

4

lambda1 . append ( determine_lambda ( f2 , alpha , 1 0 0 0 ) )

5

6

p l o t ( alpha2 *180/ pi , array ( lambda1 ) )

7

x l a b e l ( 'Alpha 2 (degre)' )

8

y l a b e l ( 'Lambda (mm)' )

9

t i t l e ( 'Evolution de la longueur du verin en fonction de l\'angle alpha2' )

10

show ( )

Stanislas MPSI / PCSI

Références

Documents relatifs

The probably smarter way is an interpreter, with data structures that controls the behaviour: a sequence of read operations processes the input stream, and writes the resulting

Pour coder une image, il suffit d'associer à chaque pixel sa couleur dominante, c'est-à-dire le nombre de couleurs qu’occupe chaque pixel, et de coder les couleurs des pixels les

Au fil de ce cours, nous aborderons également d’autres langages comme le XHTML ou le PhP lorsque cela justifié et afin que vous ayez une compréhension globale

Regarde la vidéo, si tu ne sais plus comment faire ... Regarde la vidéo, si tu ne sais plus comment faire .... 2)Construis la médiatrice (d) du segment [UV] avec la règle

Technicien de maintenance électromécanicien, ingénieur en automatisme, chef de projets réalisation. Technicien de maintenance électromécanicien, ingénieur en automatisme, chef

[r]

• Les images en couleurs réelles utilisent 24 bits par pixel, ce qui signifie qu'il faut 3 octets pour coder chaque pixel, en prenant soin de respecter l'ordre de l'alternance

Pour coder les couleurs d’un pixel dans le système RVB, le fichier image associe à chaque pixel 3 octets correspondant aux trois couleurs primaires. Il y a donc 256 valeurs pour