# -*- coding: utf-8 -*-
"""
Created on Tue Jan 30 17:25:43 2024

@author: abrunon
"""

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

# Définir la fonction polynomiale que vous souhaitez ajuster
def polynome(x, *coefficients):
    return np.polyval(coefficients, x)

# Générer des données expérimentales avec du bruit simulé
np.random.seed(0)
x_data = np.linspace(0, 10, 50)
y_data_exp = 2.5 * x_data**2 - 1.5 * x_data + 5 + np.random.normal(scale=5, size=len(x_data))

# Utiliser curve_fit pour ajuster le polynôme aux données expérimentales
initial_guess = [1, -1, 1]  # Supposons un polynôme de degré 2 pour cet exemple
coefficients_optimaux, covariance = curve_fit(polynome, x_data, y_data_exp, p0=initial_guess)

# Générer des données à l'aide des coefficients optimaux trouvés
y_data_fit = polynome(x_data, *coefficients_optimaux)

# Afficher les résultats
plt.scatter(x_data, y_data_exp, label='Données expérimentales')
plt.plot(x_data, y_data_fit, label='Ajustement polynomiale', color='red')
plt.legend()
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Ajustement polynomiale aux données expérimentales')
plt.show()

# Afficher les coefficients optimaux trouvés
print("Coefficients optimaux du polynôme :", coefficients_optimaux)
