UdMHaut
UdMBAS

IFT1020
Programmation II

Département d'informatique et de recherche opérationnelle

Direction de l'enseignement de service en informatique
 

Image Java
 
Été 2005

Accueil

Professeurs et
Démonstrateurs

Horaires et locaux

Notes de cours

Cours
après Cours

Démonstrations
et devoirs

Examens

Liens utiles

Au sujet du
livre de cours

Consultez vos notes

Foire aux questions
(FAQ)

Sessions antérieures

  Solution Démonstration #12  
 
Dernière mise à jour : mer 20 jui 2005 23:07:57 EDT
 

Buts:

  • Analyse numérique: SOLUTION

Changement de Base

  • 1. Donner la valeur décimale des entiers suivants, la base dans laquelle ces entiers sont codés étant précisée.
    • (a) 1011011 et 101010 en binaire (base 2) ;

        (1011011)2 = (91)10 ; (101010)2 = (42)10

    • (b) A1BE et C4F3 en hexadécimal (base 16) ;

        (A1BE)16 = (41406)10 ; (C4F3)16 = (50419)10

    • (c) 77210 et 31337 en octal (base 8).

        (77210)8 = (32392)10 ; (31337)8 = (13023)10

  • 2. Coder l’entier 2 397 successivement en base 2, 8 et 16.
      (2397)10 = (100101011101)2 = (4535)8 = (95D)16

  • 3. Donner la valeur décimale du nombre 10101, dans le cas où il est codé en base 2, 8 ou 16.
      (10101)2 = (21)10 ; (10101)8 = (4161)10 ; (10101)16 = (65793)10 ;

    Nombres entiers et Arithmétique

  • 4. Combien d’entiers positifs peut-on coder en binaire sur un octet ?
      Un octet contient 8 bits, on peut donc coder 28 = 256 entiers.

  • 5. Combien de bits faut-il pour représenter 65 563 entiers différents en binaire ?
      Avec b bits, on peut coder 2b entiers différents. Pour coder n entiers, il nous faut donc m bits tels que 2m-1 < n <= 2m, c.-à-d. m-1 < log2n <= m. On a donc m = [log2n]. Ainsi pour n=65563, on a m=log265563=17

  • 6. Coder en binaire sur un octet les entiers 105 et 21 puis effectuer l’addition binaire des entiers ainsi codés. Vérifier que le résultat sur un octet est correct.
      (105)10 = (1101001)2 ; (21)10 = (10101)2 ; La somme donne: (1101001)2 + (10101)2 = (1111110)2 ; Aucun débordement sur un octet.

    Représentation binaire des entiers négatifs

  • 7. Indiquer la valeur codée par le mot de 16 bits 1101100101110101 suivant qu’il représente un entier non signé, ou un entier signé.
      En non signé, la valeur est (1101100101110101)2 = (55 669)10. En signé, le premier bit (bit de signe) vaut 1, c’est donc un nombre négatif dont la valeur est -(101100101110101)2 = -(22901)10

  • 8. Indiquer la valeur codée par la suite 1101100101110101 qui représente un entier signé en complément à 2 sur 16 bits.
      C’est un nombre négatif. Complément à 2 : 0010011010001011 donc -9867.

  • 9. Coder les entiers 61 et -61 sur un octet en utilisant la représentation par le signe et la valeur absolue. Montrer que l’addition binaire de ces entiers ainsi codés produit un résultat incorrect. Montrer qu’en revanche le résultat est correct si ces entiers sont codés en utilisant la représentation par le complément à 2.
      En utilisant la représentation signe et valeur absolue: (61)10 = (00111101)2 ; (-61)10 = (10111101)2 ; La somme donne: (00111101)2 + (10111101)2 = (11111010)2 = (-122)10;
      Le résultat est incorrect!
      En utilisant la représentation par complément à 2: (61)10 = (00111101)2 ; (-61)10 = (11000011)2 ; La somme donne: (00111101)2 + (11000011)2 = (00000000)2 = (0)10;
      Par contre ici nous arrivons au bon résultat.

    Représentation des réels

  • 10. En virgule fixe, décoder le nombre binaire 11.011 puis coder en binaire le réel 11.625.
      (10.011)2 = [1x21+1x20+0x2-1+1x2-2+1x2-3+]10 = [2+1+0.25+0.125]10 = 3.37510
      (11.625)10 = [8+2+1+0.5+0.125]10 = [23+21+20+2-1+2-3+]10 = 1011.1012

  • 11. En virgule flottante normalisée, coder en binaire au format simple précision le réel 12.575

      Correction

      Si vous suivez les notes de cours, vous devez obtenir ce résultat: (12.575)10 = (1100.1001001...)2
      S:0
      E:10000010
      M:10010010011001100110011

      Le résultat ci-dessus (précédemment affiché) est obtenu avec un décalage de 1 bit donc moins précis car on perd le 23 bits qui équivaut à 2-20. (12.575)10 = (1100.1001001...)2 = [0.11001001001 ... x 10100]2 = 0|10000011|11001001001100110011001|

    Chiffres significatifs et erreurs absolue/relative

  • 12. Si tous les chiffres significatifs de 476.6 et 3.11918 sont exacts: Quelle est l'erreur absolue de leur somme? Quelle en est l'erreur relative? Combien de chiffres significatifs exacts a-t-elle?
      u*=476.6, du=0.05 (du étant delta u); v*=3.11918, dv=0.5 x 10-5
      erreur absolue de leur somme: du + dv = 0.050005 approx. = 0.05 u+v = (476.6 + 3.11918)+/- 0.05 = 479.71918 +/- 0.05
      Il y a donc une décimale exacte dans la somme, et on peut écrire, en arrondissant:
      u+v = 479.7 +/- 0.1
      L'erreur relative de la somme est:
      0.050005/479.71918 = 0.00010424... approx. = 0.0001

  • 13. Calculer le produit de 369.7 par 0.0042131 si les chiffres significatifs de ces quantités sont tous exacts. Erreur relative, erreur absolue. Arrondir au nombre de chiffres significatifs exacts.
      Posons u = 369.7 +/- 0.05 et v = 0.0042131 +/- 0.5x10-7
      Pour l'erreur absolue du produit, on peut utiliser la formule directe: udv + vdu
      369.7x0.5x10-7+0.0042131x0.5 approx. = 0.00023
      L'erreur relative de u: 0.05/369.7 approx. = 0.00014
      L'erreur relative de v: 0.5x10-7/0.004231 approx. = 0.000012
      et uv = 1.55758307
      L'erreur relative du produit est donc 0.00014 + 0.000012 approx. = 0.00015 donc 3 chiffres significatifs exacts (3 décimales exacts).
      uv = 1.558 +/- 0.001

    Zéros d'une fonction à l'aide de Newton

  • 14. En utilisant la méthode de Newton, calculer les bornes sup et inf de la racine carrée de 2, pour deux itérations et pour une valeur de départ x0=1.41
      f(x)=x2-2; f'(x)=2x et x0=1.41
      sachant la formule de Newton : xn+1=xn-f(x)/f'(x), nous aurons ce qui suit:
      x0=1.41
      x1=x0-f(x0)/f'(x0)=x0-([x02-2]/[2x0])=1/2(x0+2/x0)
      x1=1/2(1.41+2x1.41)=1.4143
      x2=2 ; Comme a valeur est approximée <=> x1x2=2 donc si x1=1.4143, x2=2/x1=1.4141
      la vraie valeur de x est comprise entre x1 et x2 donc: 1.4141 < x < 1.4143
      en suivant le même principe:
      x2=1/2(1.4143+2x1.4143)=1.4142136
      et 1.4142135 < x < 1.4142136

  • 15. Trouver le zéro de la fonction x3+4x2-10=0 dans l'intervalle [1,2]. Précision=0.0005 et le nombre d'itérations=20. Quel est le nombre réel d'itérations utilisés pour calculer le zéro de la précédente fonction.

      f(x)=x3+4x2-10
      f'(x)=3x2+8x
      et l'equation de Newton se ramène à:
      xn+1=xn-[x3+4x2-10/3x2+8x]
      Pour (le point de départ) x0=1, nous aurons ce qui suit:
      x0=1 ; x1=1.4545454545 et f(x1)=1.5401953418
      x1=1.4545454545 ; x2=1.3689004011 et f(x2)=0.0607196886
      x2=1.3689004011 ; x3= 1.3652366002 et f(x3)=0.0001087706
      x3= 1.3652366002 ; x4=1.3652300134 et f(x4)=0.0000000004

      On constate que |f(x4)-f(x3)| < 0.0005 donc nous arrêtons le calcul à ce niveau.
      Ainsi 4 itérations ont suffit pour trouver un zéro qui satisfasse aux conditions préalablement fixées.




  • dift1020@iro.umontreal.ca
    [top]