# -*- coding: python -*-
import math

def f(x):
    return x/2 - math.sin(x) + math.pi/6 - math.sqrt(3)/6

def df(x):
    return 0.5 - math.cos(x)

# Racine exacte pour mesurer la distance |xn - alpha|
alpha = math.pi / 3 

def executer_dichotomie(a, b, etapes=5):
    print("=" * 90)
    print("RÉSULTATS : TABLEAU DE LA DICHOTOMIE")
    print("=" * 90)
    print(f"{'n':<4}{'an':<10}{'xn':<10}{'bn':<10}{'sign(f(an))':<13}{'f(xn)':<12}{'sign(f(bn))':<13}{'|xn-a|':<12}")
    print("-" * 90)
    
    for n in range(etapes):
        xn = (a + b) / 2
        fxn = f(xn)
        s_an = "+" if f(a) > 0 else "-"
        s_bn = "+" if f(b) > 0 else "-"
        erreur = abs(xn - alpha)
        
        print(f"{n:<4}{a:<10.5f}{xn:<10.5f}{b:<10.5f}{s_an:<13}{fxn:<12.5e}{s_bn:<13}{erreur:<12.5e}")
        
        if f(a) * fxn < 0:
            b = xn
        else:
            a = xn

def executer_newton(x0, etapes=5):
    print("\n" + "=" * 50)
    print("RÉSULTATS : TABLEAU DE NEWTON-RAPHSON")
    print("=" * 50)
    print(f"{'n':<4}{'xn':<12}{'f(xn)':<15}{'|xn-a|':<12}")
    print("-" * 50)
    
    xn = x0
    for n in range(etapes):
        fxn = f(xn)
        erreur = abs(xn - alpha)
        print(f"{n:<4}{xn:<12.5f}{fxn:<15.5e}{erreur:<12.5e}")
        
        # Ajustement des indices calqué sur la maquette de votre document
        if n == 0:
            xn = xn - fxn / df(xn)
            n = 2
        else:
            xn = xn - fxn / df(xn)

if __name__ == "__main__":
    # Bornes et point de départ définis
    executer_dichotomie(-math.pi/2, math.pi, 5)
    executer_newton(-math.pi/2, 5)
    

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: