import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# Paramètres pour la courbe de force (strength)
mu = 0.19 # Centre de la gaussienne sur l'axe x
sigma = 0.009 # Écart-type de la gaussienne
# Génération des données pour la courbe gaussienne
x_strength = np.linspace(0.1, 0.3, 1000)
y_strength = norm.pdf(x_strength, loc=mu, scale=sigma)
# 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='Strength (Pack)')
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.35, 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='green', 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()
# Paramètres pour la courbe de strength au niveau cellulaire
cell_mean = 0.25
cell_std_dev = 0.025
# Génération des données pour la courbe de strength au niveau cellulaire
x_cell = np.linspace(0.1, 0.35, 1000)
y_cell = norm.pdf(x_cell, loc=cell_mean, scale=cell_std_dev)
# Tracer la courbe de strength au niveau cellulaire - Distribution normale
plt.figure(figsize=(8, 6))
plt.plot(x_cell, y_cell, color='blue', label='Courbe de strength (niveau cellulaire)')
plt.title('Courbe de cellule - 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.plot(x_cell, y_cell, color='blue', label='Strength (Cell level)')
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.plot(x_cell, np.cumsum(y_cell), color='blue', label='CDF - Strength (Cell level)')
plt.title('Fonctions de répartition cumulative (CDF)')
plt.xlabel('Damage amount')
plt.ylabel('')
plt.legend()
plt.grid(True)
plt.show()
# Calcul des PPM pour la courbe de force (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
# Calcul des PPM pour la courbe de force (Strength cellulaire) par rapport à la courbe de stress
ppm_strength_cell = np.sum(y_cell > np.interp(x_cell, x_stress, y_stress)) / len(y_cell) * total_population
# Soustraction des PPM entre les deux courbes de force et la courbe de stress pour obtenir une PPM cumulative
ppm_residual = ppm_strength_pack + ppm_strength_cell
print(f"PPM de la courbe de force (Strength Pack): {ppm_strength_pack}")
print(f"PPM de la courbe de force (Strength cellulaire): {ppm_strength_cell}")
print(f"PPM résiduelle après comparaison des forces (Strength Pack et cellulaire) avec la courbe de stress: {ppm_residual}")
To embed this project on your website, copy the following code and paste it into your website's HTML: