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

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

# Paramètres pour la courbe de strength (pack)
strength_mean = 0.19
strength_std_dev = 0.009

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

# Génération des données pour la courbe de strength (pack)
x_strength = np.linspace(0.1, 0.3, 1000)
y_strength = norm.pdf(x_strength, loc=strength_mean, scale=strength_std_dev)

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

# Tracer la courbe de strength (pack)
plt.figure(figsize=(8, 6))
plt.plot(x_strength, y_strength, color='red', label='Strength (Pack)')
plt.title('Courbe de strength (pack) - Distribution normale')
plt.xlabel('Valeurs de x')
plt.ylabel('Densité')
plt.legend()
plt.grid(True)
plt.show()

# Courbes superposées Stress-Strength
plt.figure(figsize=(8, 6))
plt.plot(x_stress, y_stress, color='green', label='Stress (capacity Loss)')
plt.plot(x_strength, y_strength, color='red', label='Strength (Pack)')
plt.title('Stress & Strength')
plt.xlabel('Damage amount')
plt.ylabel('Densité')
plt.legend()
plt.grid(True)
plt.show()

# Tracer les fonctions de répartition cumulative (CDF)
plt.figure(figsize=(8, 6))
plt.plot(x_stress, np.cumsum(y_stress), color='green', label='CDF - Stress (Capacity Loss)')
plt.plot(x_strength, np.cumsum(y_strength), color='red', label='CDF - Strength (Pack)')
plt.title('Fonctions de répartition cumulative (CDF)')
plt.xlabel('Damage amount')
plt.ylabel('')
plt.legend()
plt.grid(True)
plt.show()

# Fonction à intégrer pour calculer la probabilité de défaillance (unreliability)
def integrand(x):
    return norm.pdf(x, loc=stress_mean, scale=stress_std_dev) * (1 - norm.cdf(x, loc=strength_mean, scale=strength_std_dev))

# Intégration numérique pour obtenir la probabilité de défaillance
unreliability, error = integrate.quad(integrand, -np.inf, np.inf)

# Calcul des PPM pour la courbe de strength (pack) par rapport à la courbe de stress
total_population = 1000000  # Exemple d'une population de 1 million
ppm_strength_pack = np.sum(y_strength > np.interp(x_strength, x_stress, y_stress)) / len(y_strength) * total_population

print(f"Probabilité de défaillance (Unreliability): {unreliability:.4f}")
print(f"PPM de la courbe de strength (Strength Pack): {ppm_strength_pack}")

Embed on website

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