3OS
2020 - 2021

Fascicule OS Math

Télécharger le fascicule d'exercices ici (version 1.96 du 10.11.20).

1. Méthodes numériques

La dichotomie

# dichotomie 1
# variables f, a, b et n le nombre d’étapes voulues.
def dicho(f, a, b, n):
    for i in range(n):
        c = (a + b)/2
        if f(a)*f(c) <= 0:
            b = c
        else:
            a = c
    return a, b					
# dichotomie 2
# variables f, a, b et tol la tolérance souhaitée
def dicho(f, a, b, tol):
    while b - a > tol:
        c = (a + b)/2
        if f(a)*f(c) <= 0:
            b = c
        else:
            a = c
    return a, b

La méthode de Newton

# variables x, f, df, tol la tolérance souhaitée
def newton(x, f, df, tol):
    n = 1
    while abs(f(x)) > tol:
        x = x - f(x) / df(x)
        n += 1
    return x, n				
			

La méthode de la sécante

# variables x, x_, f et tol la tolérance souhaitée
def secante(x, x_, f, tol):
    n = 1
    while abs(f(x_) - f(x)) > tol:
        x, x_ = x_, x_ - (x_ - x) * f(x_) / (f(x_) - f(x))
        n += 1
    return x, n
			

Intégration numérique


import random

def listeDePointsAlea(a, b, n):
    # intervalle [a ; b], n: nombre de points
    # donne n+1 intervalles
    L = [a, b]
    for _ in range(n):
        L.append(random.uniform(a,b))
    L.sort()
    return L

def sommeRectanglesInfAlea(a, b, n, f):
    aireInf = 0.0
    L = listeDePointsAlea(a, b, n)
    for k in range(n+1):
        dx = L[k+1]-L[k]
        mini = f(L[k])
        maxi = f(L[k+1])
        if mini>maxi:
            mini, maxi = maxi, mini
        aireInf += dx*mini
    return aireInf
	

Adapter ce code pour déterminer l'aire obtenue avec les rectangles qui donnent une aire supérieure, l'aire calculée avec des trapèzes et l'aire calculée avec une somme de Riemann.

2. Equations diffférentielles

Cours donnés en classe

3. Révision