Skip to content

Instantly share code, notes, and snippets.

@lefuturiste
Last active March 29, 2021 07:13
Show Gist options
  • Save lefuturiste/c84a033c5ca7e1980eaca82e0a2ab690 to your computer and use it in GitHub Desktop.
Save lefuturiste/c84a033c5ca7e1980eaca82e0a2ab690 to your computer and use it in GitHub Desktop.
# TP 20, Représentation des nb réeels
"""
3. Donner une fonction binaire(x, n) qui retourne la chaîne de caractère donnant l'écriture binaire de x dont la partie fractionnaire est bornée par n.
4. Donner une fonction decimal(c) qui fait l'opération inverse.
"""
def binaire(x, n):
s = ''
# on récupère en premier lieu l'écriture de la partie entière
PE = []
e = int(x)
while e != 0:
PE.append(e % 2)
e = e // 2
PE = list(reversed(PE))
PF = []
f = x-int(x)
while f > 0 and len(PF) <= n:
b = int(2*f > 1)
PF.append(b)
f = 2*f-b
return (PE, PF)
def decimal(c):
s = 0
for i in range(len(c[0])-1, -len(c[1])-1, -1):
if i >= 0:
v = c[0][len(c[0])-i-1]
else:
v = c[1][-i-1]
if v == 1:
s += 2**i
return s
# Ex 3
import numpy as np
import matplotlib.pyplot as plt
e = np.exp(1)
def suite(n):
return abs((1+1/n)**n - e)
x = [ 10**k for k in range(0, 22) ]
y = np.vectorize(suite)(x)
plt.xscale('log')
plt.plot(x, y)
plt.show()
# première phase, décroissance de la différence
# deuxième phase à partir de 1000, plateau, on est très proche de la limite e
# troisième phase à partir de 10^14, phénomène d'absorption qui conduit à une très grande imprécision, car on additionne deux nombres d'ordre de grandeurs différente
# exercice 4
# Erreur relative
# erreur absolue sur la mantisse : deltam <= 2^-9
# erreur absolue sur x : deltax = deltam x * 2^e
# or 2^-9 approx equal to
# erreur relative sur x : deltax/|x| <= 10
# Q2, l'exposant peut prendre des valeurs
# vu qu'on a le complement à deux de -63 à 127
'''
len(bin(128))-2 = 8
len(bin(127))-2 = 7
len(bin(-63))-2 = 7
len(bin(-64))-2 = 8
'''
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment