import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# Paramètres pour la courbe de force (strength)
mu = 0.185  # Centre de la gaussienne sur l'axe x
sigma = 0.005  # Écart-type de la gaussienne

# Génération des données pour la courbe gaussienne
x_strength = np.linspace(0, 0.4, 1000)
y_strength = np.exp(-0.5 * ((x_strength - mu) / sigma) ** 2)

# Ajustement de la hauteur pour que le pic atteigne y=50
scaling_factor = 1000 / np.max(y_strength)
y_strength *= scaling_factor

# Transition exponentielle pour limiter la gaussienne entre 0.16 et 0.22 sur l'axe x
transition = np.exp(-50 * (x_strength - 0.16)) * np.exp(-50 * (0.22 - x_strength))
y_strength *= transition

# Tracer la courbe gaussienne avec la transition exponentielle
plt.figure(figsize=(8, 6))
plt.plot(x_strength, y_strength, color='red', label='Courbe gaussienne étroite avec transition exponentielle et pic à y=50')
plt.title('Courbe gaussienne avec transition exponentielle et pic maximal à y=50 (Strength)')
plt.xlabel('Valeurs de x')
plt.ylabel('Densité')
plt.legend()
plt.grid(True)
plt.show()

# Paramètres pour la courbe de stress
stress_mean = 0.2
stress_std_dev = 0.019

# Génération des données pour la courbe de stress
x_stress = np.linspace(0.1, 0.4, 1000)
y_stress = norm.pdf(x_stress, loc=stress_mean, scale=stress_std_dev)

# Tracer la courbe de stress - Distribution normale
plt.figure(figsize=(8, 6))
plt.plot(x_stress, y_stress, color='blue', label='Courbe de stress')
plt.title('Courbe de stress - Distribution normale')
plt.xlabel('Valeurs de x')
plt.ylabel('Densité')
plt.legend()
plt.grid(True)
plt.show()

# Courbes interposées Stress-Strength
plt.figure(figsize=(8, 6))
plt.plot(x_stress, y_stress, color='blue', label='Courbe de stress')
plt.plot(x_strength, y_strength, color='red', label='Courbe de force (strength)')
plt.title('Courbes interposées - Stress & Strength')
plt.xlabel('Valeurs de x')
plt.ylabel('Densité')
plt.legend()
plt.grid(True)
plt.show()

# Plot des fonctions de répartition cumulative (CDF)
plt.figure(figsize=(8, 6))
plt.plot(x_stress, np.cumsum(y_stress), color='blue', label='CDF - Stress')
plt.plot(x_strength, np.cumsum(y_strength), color='red', label='CDF - Strength')
plt.title('Fonctions de répartition cumulative (CDF)')
plt.xlabel('Valeurs de x')
plt.ylabel('CDF')
plt.legend()
plt.grid(True)
plt.show()

# Calcul du point de défaillance (failure rate) et des PPM (Parts Per Million)
failure_rate = x_strength[np.argmin(np.abs(y_strength - np.interp(x_strength, x_stress, y_stress)))]

total_population = 1000000  # Exemple d'une population de 1 million
ppm_strength = np.sum(y_strength > np.interp(x_strength, x_stress, y_stress)) / len(y_strength) * total_population
ppm_stress = np.sum(y_stress > np.interp(x_stress, x_strength, y_strength)) / len(y_stress) * total_population
ppm = (ppm_strength + ppm_stress) / 2  # Moyenne des PPM

print(f"Point de défaillance (Failure Rate): {failure_rate}")
print(f"PPM (Parts Per Million): {ppm}")

Embed on website

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