from math import sqrt
def f(x):
"""
Une fonction croissante sur [-10; 0] puis décroissante sur [0;10]
"""
return -x*x
def g(x):
"""
Une fonction croissante sur [-5; (1+sqrt(2))/2]
puis décroissante sur [(1+sqrt(2))/2;5]
"""
return -x*x + (1+sqrt(2))*x - sqrt(2)
(1+sqrt(2))/2
def h(x):
"""
fonction croissante sur [-2, 2/21]
puis décroissante sur [2/21, 100]
"""
return -(x-1/3)*(x+1/7)
2/21
def milieu(a,b):
return (a+b)/2
def approx_extrem(a, b, f, epsilon):
while b-a >= epsilon:
m = milieu(a,b)
c = milieu(a,m)
d = milieu(m,b)
if f(c) > f(m):
a,b = a,m
else:
if f(d) > f(m):
a,b = m,b
else:
a,b = c,d
return m
approx_extrem(-10, 10, f, 0.001)
approx_extrem(-5, 5, g, 0.001)
approx_extrem(-2, 100, h, 0.001)