Mathématiques en seconde générale et technologique – Algoritmes

Rectification d'un arc de \(\mathcal{C}_f\)

Algorithme de calcul approché de longueur d'une portion de courbe représentative de fonction.
from math import sqrt
def longueur_approchee(f, a, b, n) :
    accu = 0
    pas = (b - a) / n
    pas2 = pas ** 2
    x1, x2 = None, a
    y1, y2 = None, f(x2)
    for i in range(n) :
        x1, x2 = x2, x2 + pas
        y1, y2 = y2, f(x2)
        accu += sqrt(pas2 + (y2 - y1) ** 2)
    return accu

print(longueur_approchee(lambda x : x ** 2, 0, 1, 1000))
print(longueur_approchee(lambda x : x ** 2, 0, 1, 1000000))

# Calcul exact
import sympy
def longueur_exacte(x, y, a, b) :
    e = sympy.Integral(sympy.sqrt(1 + sympy.diff(y, x) ** 2), (x, a, b))
    return e, e.doit()

x = sympy.symbols("x")
integrale, integre = longueur_exacte(x, x ** 2, 0, 1)
with open("resultat.tex", "w") as f :
    f.write("{} = {} \\approx {}".format(
        sympy.latex(integrale),
        sympy.latex(integre),
        integre.n()))
1.4789427830089967
1.478942857559278

\(\displaystyle \int_{0}^{1} \sqrt{4 x^{2} + 1}\, dx = \frac{1}{4} \operatorname{asinh}{\left (2 \right )} + \frac{\sqrt{5}}{2} \approx 1.47894285754460\)

Lionel Avon