Refactor error messages and function signatures across multiple notebooks for clarity and consistency

- Updated error messages in Gauss method and numerical methods to use variables for better readability.
- Added return type hints to function signatures in various notebooks to improve code documentation.
- Corrected minor grammatical issues in docstrings for better clarity.
- Adjusted print statements and list concatenations for improved output formatting.
- Enhanced plotting functions to ensure consistent figure handling.
This commit is contained in:
2025-12-24 22:26:59 +01:00
parent 1141382c81
commit bcac5764f6
19 changed files with 60 additions and 58 deletions

View File

@@ -160,7 +160,8 @@
" for i in range(n):\n",
" x[i] = (b[i] - np.dot(A[i, :i], x[:i])) / A[i, i]\n",
" else:\n",
" raise ValueError(\"A est ni triangulaire supérieure ni triangulaire inférieure\")\n",
" msg = \"A est ni triangulaire supérieure ni triangulaire inférieure\"\n",
" raise ValueError(msg)\n",
" return x"
]
},
@@ -296,10 +297,12 @@
"def met_gauss_sys(A, b):\n",
" n, m = A.shape\n",
" if n != m:\n",
" raise ValueError(\"Erreur de dimension : A doit etre carré\")\n",
" msg = \"Erreur de dimension : A doit etre carré\"\n",
" raise ValueError(msg)\n",
" if n != b.size:\n",
" msg = \"Erreur de dimension : le nombre de lignes de A doit être égal au nombr ede colonnes de b\"\n",
" raise valueError(\n",
" \"Erreur de dimension : le nombre de lignes de A doit être égal au nombr ede colonnes de b\",\n",
" msg,\n",
" )\n",
" U = np.zeros((n, n + 1))\n",
" U = A\n",

View File

@@ -113,7 +113,7 @@
"\n",
"\n",
"def C(t):\n",
" \"\"\"Fonction retournant la solution exacte du problème au temps t\"\"\"\n",
" \"\"\"Fonction retournant la solution exacte du problème au temps t.\"\"\"\n",
" return K_star + K / (1 + (K / K0 - 1) * np.exp(-r * (t - t_fl)))\n",
"\n",
"\n",
@@ -135,7 +135,7 @@
"\n",
"\n",
"def dN(N, t, C_sol):\n",
" \"\"\"Fonction calculant la dérivée de la solution approchée du problème à l'instant t dépendant de N(t) et de C(t)\"\"\"\n",
" \"\"\"Fonction calculant la dérivée de la solution approchée du problème à l'instant t dépendant de N(t) et de C(t).\"\"\"\n",
" return r_N * N * (1 - N / C_sol(t))\n",
"\n",
"\n",
@@ -221,7 +221,7 @@
"\n",
"\n",
"def F(X, t, a, b, c, d, p):\n",
" \"\"\"Fonction second membre pour le système\"\"\"\n",
" \"\"\"Fonction second membre pour le système.\"\"\"\n",
" x, y = X\n",
" return np.array([x * (a - p - b * y), y * (-c - p + d * x)])\n",
"\n",
@@ -319,7 +319,7 @@
"outputs": [],
"source": [
"def crank_nicolson(y0, T, N, r):\n",
" \"\"\"schéma de Crank-Nicolson pour le modèle de Malthus\n",
" \"\"\"schéma de Crank-Nicolson pour le modèle de Malthus.\n",
"\n",
" Parameters\n",
" ----------\n",
@@ -356,7 +356,7 @@
"\n",
"\n",
"def euler_explicit(y0, T, N, r):\n",
" \"\"\"schéma de d'Euler pour le modèle de Malthus\n",
" \"\"\"schéma de d'Euler pour le modèle de Malthus.\n",
"\n",
" Parameters\n",
" ----------\n",
@@ -393,7 +393,7 @@
"\n",
"\n",
"def solution_exacte(t):\n",
" \"\"\"Fonction calculant la solution exacte du modèle de Malthus à l'instant t\"\"\"\n",
" \"\"\"Fonction calculant la solution exacte du modèle de Malthus à l'instant t.\"\"\"\n",
" return y0 * np.exp(r * t)"
]
},

View File

@@ -151,7 +151,7 @@
],
"source": [
"def M(x):\n",
" \"\"\"Retourne la matrice du système (2)\n",
" \"\"\"Retourne la matrice du système (2).\n",
"\n",
" Parameters\n",
" ----------\n",
@@ -192,7 +192,7 @@
"outputs": [],
"source": [
"def sprime(x, y, p0, pN):\n",
" \"\"\"Retourne la solution du système (2)\n",
" \"\"\"Retourne la solution du système (2).\n",
"\n",
" Parameters\n",
" ----------\n",
@@ -272,7 +272,7 @@
],
"source": [
"def f(x):\n",
" \"\"\"Retourne la fonction f évaluée aux points x\n",
" \"\"\"Retourne la fonction f évaluée aux points x.\n",
"\n",
" Parameters\n",
" ----------\n",
@@ -289,7 +289,7 @@
"\n",
"\n",
"def fprime(x):\n",
" \"\"\"Retourne la fonction dérivée de f évaluée aux points x\n",
" \"\"\"Retourne la fonction dérivée de f évaluée aux points x.\n",
"\n",
" Parameters\n",
" ----------\n",
@@ -360,7 +360,7 @@
"outputs": [],
"source": [
"def splines(x, y, p0, pN):\n",
" \"\"\"Retourne la matrice S de taille (4, N)\n",
" \"\"\"Retourne la matrice S de taille (4, N).\n",
"\n",
" Parameters\n",
" ----------\n",
@@ -410,7 +410,7 @@
"outputs": [],
"source": [
"def spline_eval(x, xx, S):\n",
" \"\"\"Evalue une spline définie par des noeuds équirepartis\n",
" \"\"\"Evalue une spline définie par des noeuds équirepartis.\n",
"\n",
" Parameters\n",
" ----------\n",
@@ -433,13 +433,12 @@
" \"\"\"\n",
" ind = (np.floor((xx - x[0]) / (x[1] - x[0]))).astype(int)\n",
" ind = np.where(ind == x.size - 1, ind - 1, ind)\n",
" yy = (\n",
" return (\n",
" S[ind, 0]\n",
" + S[ind, 1] * (xx - x[ind])\n",
" + S[ind, 2] * (xx - x[ind]) ** 2\n",
" + S[ind, 3] * (xx - x[ind]) ** 3\n",
" )\n",
" return yy"
" )"
]
},
{

View File

@@ -215,7 +215,8 @@
"source": [
"def simpson(f, N):\n",
" if N % 2 == 0:\n",
" raise ValueError(\"N doit est impair.\")\n",
" msg = \"N doit est impair.\"\n",
" raise ValueError(msg)\n",
"\n",
" h = 2 / (2 * (N - 1) // 2)\n",
" fx = f(np.linspace(-1, 1, N))\n",

View File

@@ -534,7 +534,8 @@
"def interp_vdm_poly(x, y):\n",
" \"\"\"Compute the coefficients of the interpolation polynomial.\"\"\"\n",
" if x.shape != y.shape:\n",
" raise ValueError(\"x and y must have same dimension!\")\n",
" msg = \"x and y must have same dimension!\"\n",
" raise ValueError(msg)\n",
" return np.linalg.solve(interp_vdm_build(x), y)"
]
},

View File

@@ -143,7 +143,7 @@
"outputs": [],
"source": [
"def point_fixe(f, x0, tol=1.0e-6, itermax=5000):\n",
" \"\"\"Recherche de point fixe : méthode brute x_{n+1} = f(x_n)\n",
" \"\"\"Recherche de point fixe : méthode brute x_{n+1} = f(x_n).\n",
"\n",
" Parameters\n",
" ----------\n",

View File

@@ -41,7 +41,7 @@
"outputs": [],
"source": [
"class ModeleSchelling:\n",
" def __init__(self, M, p, L):\n",
" def __init__(self, M, p, L) -> None:\n",
" self.M = M\n",
" self.p = p\n",
" self.L = L\n",
@@ -63,7 +63,7 @@
"\n",
" return grille\n",
"\n",
" def afficher_grille(self, title):\n",
" def afficher_grille(self, title) -> None:\n",
" color = plt.imshow(self.grille, cmap=\"coolwarm\", interpolation=\"nearest\")\n",
" plt.colorbar(color)\n",
" plt.title(title)\n",
@@ -97,7 +97,7 @@
" visited = np.zeros_like(self.grille, dtype=bool)\n",
" clusters = []\n",
"\n",
" def dfs(i, j, groupe, cluster): # Depth-First Search\n",
" def dfs(i, j, groupe, cluster) -> None: # Depth-First Search\n",
" stack = [(i, j)]\n",
"\n",
" while stack:\n",
@@ -136,7 +136,7 @@
" S += int(clusters[i][1]) ** 2\n",
" return S * 2 / (self.Ntot**2)\n",
"\n",
" def simuler(self, T=400, move_satisfaits=True):\n",
" def simuler(self, T=400, move_satisfaits=True) -> None:\n",
" for _t in range(1, int((1 - self.p) * self.M**2 * T)):\n",
" agents = [\n",
" (i, j)\n",

View File

@@ -220,7 +220,7 @@
},
"outputs": [],
"source": [
"def simule(a, b, n):\n",
"def simule(a, b, n) -> None:\n",
" X = np.random.gamma(a, 1 / b, n)\n",
" intervalle = np.linspace(0, np.max(X), 100)\n",
" plt.hist(X, bins=intervalle, density=True, label=\"Echantillon de X\")\n",