1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
"""
Différences finies centrées, ordre 02 en h.
Mise en évidence des erreurs de troncature et d'arrondis.
"""
from math import sin, cos
def df(x):
return cos(x)
def err_centree(x, f, df, h):
return abs(df(x) - (f(x + h / 2) - f(x - h / 2)) / h)
def err_progressive(x, f, df, h):
return abs(df(x) - (f(x + h) - f(x)) / h)
def err_retrograde(x, f, df, h):
return abs(df(x) - (f(x) - f(x - h)) / h)
def main():
f = lambda x: sin(x) # Fonction étudiée
df = lambda x: cos(x) # Fonction dérivée de la fonction étudiée
x0 = 1 # Point où le nombre dérivé est calculé
hs = [1 / (10**i) for i in range(1, 15)] # Liste des pas h
print(
"h \t\t Diff. finies Prog. Diff. finies Retro. Diff. finies centrées"
)
for h in hs:
print("{:.1e} \t {:.4e} \t {:.4e} \t {:.4e}".format(
h, err_progressive(x0, f, df, h), err_retrograde(x0, f, df, h),
err_centree(x0, f, df, h)))
main()
|