{"id":1219,"date":"2026-08-21T14:28:44","date_gmt":"2026-08-21T14:28:44","guid":{"rendered":"https:\/\/matforge.org\/?p=1219","raw":"https:\/\/matforge.org\/?p=1219"},"modified":"2026-08-21T14:28:44","modified_gmt":"2026-08-21T14:28:44","slug":"monte-carlo-uhq-methods-lhs-sobol-quasi","status":"publish","type":"post","link":"https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/","title":{"rendered":"M\u00e9thodes UQ de Monte Carlo : Hypercube latine, Sobol et Quasi-Monte Carlo","raw":"M\u00e9thodes UQ de Monte Carlo : Hypercube latine, Sobol et Quasi-Monte Carlo"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 11<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>Lorsque la sortie de votre simulation est motiv\u00e9e par des entr\u00e9es incertaines, la fa\u00e7on dont vous pr\u00e9levez des \u00e9chantillons de ces entr\u00e9es d\u00e9termine si votre quantification d&rsquo;incertitude est efficace ou gaspille. Standard Monte Carlo utilise i.i.d. Tirages al\u00e9atoires, ce qui garantit la convergence mais \u00e0 un rythme douloureusement lent. M\u00e9thodes d&rsquo;\u00e9chantillonnage \u00e0 faible \u00e9cart &#8211; \u00e9chantillonnage hypercube latin (LHS), s\u00e9quences de SOBOL et la famille plus large de Quasi-Monte Carlo (QMC) &#8211; restructurer le processus d&rsquo;\u00e9chantillonnage afin que les points couvrent l&rsquo;espace des param\u00e8tres de mani\u00e8re plus uniforme, r\u00e9duisant consid\u00e9rablement la variance de la Estimateurs.<\/p>\n<p>Dans cet article, nous allons au-del\u00e0 de la br\u00e8ve mention dans notre <a href=\"https:\/\/matforge.org\/monte-carlo-methods-for-scientific-simulations\/\" target=\"_blank\" rel=\"nofollow noopener\">monte Guide de simulations Carlo pour les simulations scientifiques<\/a>. Il s&rsquo;agit d&rsquo;une plong\u00e9e approfondie consacr\u00e9e aux m\u00e9thodes de la th\u00e9orie, de la mise en \u0153uvre pratique et de la d\u00e9cision pour les m\u00e9thodes LHS, SoBOL et QMC, avec du code Python de travail et une comparaison du moment o\u00f9 chaque approche gagne.<\/p>\n<h2>Points \u00e0 retenir cl\u00e9s<\/h2>\n<ul>\n<li><strong>LHS stratifie chaque dimension ind\u00e9pendamment<\/strong>, garantissant que chaque bac d&rsquo;histogramme marginal est rempli exactement une fois. Il offre une convergence plus rapide que le Monte Carlo simple \u00e0 faible co\u00fbt.<\/li>\n<li><strong>Les s\u00e9quences SOBOL sont des s\u00e9quences \u00e0 faible \u00e9cart<\/strong> qui permettent une couverture quasi uniforme dans n&rsquo;importe quelle dimension, mais elles n\u00e9cessitent un brouillage pour une utilisation pratique et fonctionnent mieux avec des nombres de deux \u00e9chantillons.<\/li>\n<li><strong>La convergence QMC peut atteindre O(N\u207b\u00b9)<\/strong> pour les int\u00e9grations lisses, par rapport \u00e0 O(N\u207b\u00b9\u141f\u00b2) pour Monte Carlo standard &#8211; une baisse exponentielle de la taille de l&rsquo;\u00e9chantillon requise pour la m\u00eame pr\u00e9cision.<\/li>\n<li><strong>Les s\u00e9quences Halton autorisent le nombre d&rsquo;\u00e9chantillons arbitraires<\/strong> et sont faciles \u00e0 g\u00e9n\u00e9rer, mais elles pr\u00e9sentent un alias structur\u00e9 dans des dimensions plus \u00e9lev\u00e9es. SOBOL surpasse Halton lorsque vous avez besoin d&rsquo;une invariance de rotation par brouillage.<\/li>\n<li><strong>Le brouillage n&rsquo;est pas facultatif pour la production SOBOL<\/strong> &#8211; les s\u00e9quences non brouill\u00e9es induisent un biais syst\u00e9matique dans les int\u00e9grandes p\u00e9riodiques ou discontinues.<\/li>\n<\/ul>\n<h2>Le probl\u00e8me d&rsquo;\u00e9chantillonnage&nbsp;: pourquoi le hasard n&rsquo;est pas toujours le meilleur<\/h2>\n<p>Le principal d\u00e9fi dans la quantification de l&rsquo;incertitude bas\u00e9 sur l&rsquo;\u00e9chantillonnage est la <strong>\u00e9cart<\/strong> de l&rsquo;ensemble d&rsquo;\u00e9chantillons. L&rsquo;\u00e9cart mesure la fa\u00e7on dont les points sont uniform\u00e9ment r\u00e9partis dans l&rsquo;espace des param\u00e8tres. Dans la limite des \u00e9chantillons infinis, tout \u00e9cart raisonnable va \u00e0 z\u00e9ro, mais le rythme auquel il importe \u00e9norm\u00e9ment.<\/p>\n<h3>Monte-Carlo classique<\/h3>\n<p>La norme Monte Carlo tire des \u00e9chantillons ind\u00e9pendamment de la distribution cible. Par le th\u00e9or\u00e8me central des limites, l&rsquo;estimateur converge avec une variance proportionnelle \u00e0 1\/n. Cela signifie que pour r\u00e9duire de moiti\u00e9 l&rsquo;erreur standard, vous devez <strong>quadruple<\/strong> le nombre d&rsquo;\u00e9chantillons. Pour une simulation co\u00fbteuse en calculs &#8211; un probl\u00e8me thermique 3D, un solveur de flux multiphase ou une dynamique mol\u00e9culaire des mat\u00e9riaux &#8211; quadrupler le nombre d&rsquo;\u00e9chantillons peut signifier des jours d&rsquo;horloge murale.<\/p>\n<h3>La perspective de divergence<\/h3>\n<p>Les s\u00e9quences de faible \u00e9cart (LD) sont construites pr\u00e9cis\u00e9ment pour minimiser l&rsquo;\u00e9cart d&rsquo;\u00e9toiles D*_n de l&rsquo;ensemble d&rsquo;\u00e9chantillons. La d\u00e9finition est :<\/p>\n<pre><code>D*_N = sup_{A \u2286 [0,1]^s} |(1\/N) \u03a3 1_A(x_i) \u2212 \u03bb(A)|\n<\/code><\/pre>\n<p>o\u00f9 \u03bb(a) est la mesure de Lebesgue (volume) de A et le supremum est pris sur toutes les sous-bo\u00eetes align\u00e9es sur l&rsquo;axe. En anglais simple&nbsp;: les s\u00e9quences LDS minimisent l&rsquo;\u00e9cart maximal entre la probabilit\u00e9 empirique et la probabilit\u00e9 r\u00e9elle sur n&rsquo;importe quelle r\u00e9gion rectangulaire.<\/p>\n<p>Le <strong>Sobelev\u2013Dick\u2013Tractman in\u00e9galit\u00e9<\/strong> (le th\u00e9or\u00e8me de Koks-Meyers pour les LD) stipule que pour une fonction F avec des d\u00e9riv\u00e9es partielles mixtes jusqu&rsquo;\u00e0 l&rsquo;ordre S, l&rsquo;erreur d&rsquo;int\u00e9gration d&rsquo;une r\u00e8gle LDS est limit\u00e9e par&nbsp;:<\/p>\n<pre><code>|\u222b f \u2212 (1\/N) \u03a3 f(x_i)| \u2264 C_s \u00b7 \u2016f\u2016_S \u00b7 D*_N\n<\/code><\/pre>\n<p>o\u00f9 C_S est une constante en fonction uniquement de la dimension et \u2016f\u2016_s est la norme SOBOLEV. Cette borne explique pourquoi les m\u00e9thodes QMC brillent pour des fonctions lisses &#8211; l&rsquo;erreur se d\u00e9cro\u00eet beaucoup plus rapidement que le taux de Monte Carlo lorsque l&rsquo;int\u00e9grand a born\u00e9 des d\u00e9riv\u00e9s mixtes.<\/p>\n<h3>La mal\u00e9diction de la dimensionnalit\u00e9<\/h3>\n<p>Toutes ces m\u00e9thodes sont confront\u00e9es \u00e0 la mal\u00e9diction de la dimensionnalit\u00e9. Pour le LHS, la stratification est b\u00e9n\u00e9fique pour les compos\u00e9s de mani\u00e8re multiplicative \u00e0 travers les dimensions. Pour Sobol et Halton, la structure qui donne une faible divergence dans 1 \u00e0 2 dimensions commence \u00e0 se d\u00e9composer \u00e0 mesure que les dimensions augmentent &#8211; les s\u00e9quences Halton d\u00e9veloppent en particulier des sch\u00e9mas d&rsquo;aliasage p\u00e9riodiques qui d\u00e9forment la couverture. Il est essentiel de comprendre o\u00f9 se situent les forces et les faiblesses de chaque m\u00e9thode pour s\u00e9lectionner le bon \u00e9chantillonneur.<\/p>\n<h2>\u00c9chantillonnage hypercube latin : th\u00e9orie et mise en \u0153uvre<\/h2>\n<p>L&rsquo;\u00e9chantillonnage hypercube latin a \u00e9t\u00e9 introduit par McKay et al. (1989) comme compromis entre la stratification pure et la simplicit\u00e9 de l&rsquo;\u00e9chantillonnage al\u00e9atoire.<\/p>\n<h3>Comment fonctionne LHS<\/h3>\n<p>Pour un probl\u00e8me de dimension D avec n \u00e9chantillons :<\/p>\n<ol>\n<li>partitionnez chaque dimension marginale en n cases \u00e0 intervalles \u00e9gaux.<\/li>\n<li>Pour chaque dimension k, permuter au hasard le vecteur entier [1, 2, &#8230;, N] pour d\u00e9terminer quel bin occupe chaque \u00e9chantillon.<\/li>\n<li>Dessinez n \u00e9chantillons uniformes de chaque dimension, stratifi\u00e9s dans leurs bacs assign\u00e9s.<\/li>\n<li>Permutez ind\u00e9pendamment les indices d&rsquo;\u00e9chantillon dans toutes les dimensions, produisant une matrice d \u00d7 n.<\/li>\n<\/ol>\n<p>La propri\u00e9t\u00e9 cruciale est <strong>un-\u00e9chantillon-par-bin<\/strong> le long de chaque dimension. Cela garantit que l&rsquo;histogramme marginal pour chaque dimension est parfaitement stratifi\u00e9.<\/p>\n<h3>Propri\u00e9t\u00e9s de convergence<\/h3>\n<p>LHS a un facteur de r\u00e9duction de la variance par rapport \u00e0 Monte Carlo simple. Dans des conditions de r\u00e9gularit\u00e9 l\u00e9g\u00e8res :<\/p>\n<pre><code>Var_LHS(\u0233) = Var_MC(\u0233) \/ N + O(N\u207b\u00b2)\n<\/code><\/pre>\n<p>Cela signifie que LHS converge \u00e0 peu pr\u00e8s au m\u00eame taux d&rsquo;O (N\u207b\u00b9\u141f\u00b2) dans l&rsquo;erreur standard mais avec une constante significativement inf\u00e9rieure &#8211; \u00e0 peu pr\u00e8s un facteur de r\u00e9duction de la variance.<\/p>\n<h3>Impl\u00e9mentation de Python<\/h3>\n<pre><code class=\"language-python\">import numpy as np\nfrom scipy.stats import qmc\n\ndef lhs_sample(N, d, bounds=None):\n    \"\"\"\n    Latin Hypercube Sampling using scipy.\n    \n    Parameters:\n        N: number of samples\n        d: number of dimensions\n        bounds: list of (low, high) tuples for each dimension\n    \n    Returns:\n        N x d array of LHS samples\n    \"\"\"\n    if bounds is None:\n        bounds = [(0, 1)] * d\n    \n    # Create the LHS engine\n    engine = qmc.Lhs(d, scramble=False)\n    \n    # Generate samples in [0,1]\n    samples = engine.random(N)\n    \n    # Apply bounds\n    if bounds != [(0, 1)] * d:\n        # Transform to specified bounds\n        for i, (low, high) in enumerate(bounds):\n            samples[:, i] = low + (high - low) * samples[:, i]\n    \n    return samples\n\n# Example: 3D LHS with 1000 samples\nnp.random.seed(42)\nd = 3\nN = 1000\nlhs_samples = lhs_sample(N, d)\nprint(f\"LHS shape: {lhs_samples.shape}\")\nprint(f\"Marginal means (should be ~0.5): {lhs_samples.mean(axis=0)[:3]}\")\n<\/code><\/pre>\n<p>L&rsquo;option <code>scramble=False<\/code> ci-dessus est intentionnelle pour l&rsquo;illustration &#8211; en production, vous devez utiliser <code>scramble=True<\/code> pour briser la structure de corr\u00e9lation artificielle introduite par LHS d\u00e9terministe.<\/p>\n<h2>Quasi-Monte Carlo : s\u00e9quences de Sobol et brouillage<\/h2>\n<p>Les s\u00e9quences de SOBOL ont \u00e9t\u00e9 introduites par I. M. Sobol en 1967 comme la premi\u00e8re s\u00e9quence pratique \u00e0 faible discordance. Ils utilisent un graphe dirig\u00e9 pour g\u00e9n\u00e9rer des chiffres dans la base 2, produisant une s\u00e9quence avec une faible diff\u00e9rence d&rsquo;\u00e9toile.<\/p>\n<h3>Pourquoi le brouillage est essentiel<\/h3>\n<p>Une s\u00e9quence SOBOL non embrouill\u00e9e a une structure qui r\u00e9p\u00e8te tous les 2 ^ m d&rsquo;\u00e9chantillons. Pour les int\u00e9grations p\u00e9riodiques ou discontinues &#8211; tr\u00e8s courantes dans les flux de travail de simulation &#8211; cela cr\u00e9e un <strong>biais syst\u00e9matique<\/strong>. La s\u00e9quence s&rsquo;aligne sur les discontinuit\u00e9s, ce qui fait que l&rsquo;int\u00e9grateur manque des fonctionnalit\u00e9s importantes.<\/p>\n<p>Le brouillage applique une permutation al\u00e9atoire aux repr\u00e9sentations binaires des indices de s\u00e9quence, rompre cette p\u00e9riodicit\u00e9 tout en conservant la propri\u00e9t\u00e9 \u00e0 faible \u00e9cart. Le cadre <strong>Quasi-Monte Carlo (RQMC)<\/strong> randomis\u00e9 prouve que les s\u00e9quences de SOBOL brouill\u00e9es, lorsqu&rsquo;elles sont moyenn\u00e9es sur le brouillage, produisent des estimateurs non biais\u00e9s avec des intervalles de confiance convergents.<\/p>\n<h3>Nombre d&rsquo;\u00e9chantillons&nbsp;: puissances de deux<\/h3>\n<p>Les s\u00e9quences SOBOL ont \u00e9t\u00e9 con\u00e7ues de telle sorte que <strong>exactement 2^m points donnent un \u00e9cart optimal<\/strong>. Prendre N = 2^15 = 32&nbsp;768&nbsp;points donne une couverture consid\u00e9rablement meilleure que la prise de N = 30&nbsp;000. Si vous avez besoin de 30&nbsp;000&nbsp;\u00e9chantillons, soit vous&nbsp;:<\/p>\n<ol>\n<li>G\u00e9n\u00e9rez 32&nbsp;768&nbsp;points SOBOL et utilisez les 30&nbsp;000&nbsp;premi\u00e8res (vous perdez l&rsquo;optimalit\u00e9)<\/li>\n<li>Utilisez un \u00e9chantillonneur diff\u00e9rent pour ce nombre sp\u00e9cifique<\/li>\n<li>Utilisez des s\u00e9quences Halton, qui prennent en charge N arbitraire<\/li>\n<\/ol>\n<h3>Sobol brouill\u00e9 dans la pratique<\/h3>\n<pre><code class=\"language-python\">import numpy as np\nfrom scipy.stats import qmc\n\ndef scrambled_sobol(N, d, seed=None):\n    \"\"\"\n    Generate scrambled Sobol QMC samples.\n    \n    Parameters:\n        N: number of samples (ideally a power of 2)\n        d: number of dimensions\n        seed: random seed for scrambling\n    \n    Returns:\n        N x d array of QMC samples\n    \"\"\"\n    engine = qmc.QualifiedSobol(d, scramble=True, seed=seed)\n    return engine.random(N)\n\n# Example: 2^15 Sobol samples in 10 dimensions\nnp.random.seed(42)\nd = 10\nN = 2**15  # 32,768 - optimal for Sobol\nsobol_samples = scrambled_sobol(N, d, seed=12345)\nprint(f\"Scrambled Sobol shape: {sobol_samples.shape}\")\n<\/code><\/pre>\n<h2>Halton vs Sobol : compromis pratiques<\/h2>\n<p>Les deux familles LDS les plus courantes sont Halton et Sobol. Les deux sont d\u00e9terministes, les deux ont une faible diff\u00e9rence, mais ils se comportent diff\u00e9remment dans la pratique.<\/p>\n<h3>S\u00e9quences Halton<\/h3>\n<p>Les s\u00e9quences Halton utilisent des nombres premiers cons\u00e9cutifs comme bases : 2, 3, 5, 7, 11, &#8230; Cela garantit une ind\u00e9pendance math\u00e9matique entre les dimensions. Les avantages sont :<\/p>\n<ul>\n<li><strong>Num\u00e9rations d&rsquo;\u00e9chantillons arbitraires<\/strong> \u2014 Pas besoin de pouvoirs de deux<\/li>\n<li><strong>Facile \u00e0 g\u00e9n\u00e9rer<\/strong> \u2014 Aucune table polynomiale primitive n&rsquo;est n\u00e9cessaire<\/li>\n<li><strong>Rapide \u00e0 calculer<\/strong> \u2014 Extraction simple des chiffres<\/li>\n<\/ul>\n<p>Les inconv\u00e9nients sont bien document\u00e9s :<\/p>\n<ul>\n<li><strong>Alias structur\u00e9<\/strong> \u2014 Les projections de dimensions sup\u00e9rieures pr\u00e9sentent des mod\u00e8les p\u00e9riodiques<\/li>\n<li><strong>Des limites th\u00e9oriques les plus pauvres<\/strong> \u2014 L&rsquo;\u00e9cart grandit plus vite que le SOBOL<\/li>\n<li><strong>Aucune th\u00e9orie du brouillage<\/strong> \u2014 Le brouillage est plus difficile \u00e0 d\u00e9finir pour des bases arbitraires<\/li>\n<\/ul>\n<h3>S\u00e9quences de SOBOL<\/h3>\n<p>Les s\u00e9quences SOBOL utilisent un polyn\u00f4me primitif fixe sur GF(2), donnant :<\/p>\n<ul>\n<li><strong>Meilleures limites th\u00e9oriques<\/strong> \u2014 \u00e9carts de base pour la base-2<\/li>\n<li><strong>Th\u00e9orie du brouillage riche<\/strong> \u2014 Owen Le brouillage est bien d\u00e9fini et efficace<\/li>\n<li><strong>Optimal pour les pouvoirs de deux<\/strong> \u2014 Garantie d&rsquo;optimalit\u00e9 exacte<\/li>\n<\/ul>\n<p>Les inconv\u00e9nients :<\/p>\n<ul>\n<li><strong>N\u00e9cessite des tables polynomiales primitives<\/strong> \u2014 doit \u00eatre pr\u00e9-calcul\u00e9 ou stock\u00e9<\/li>\n<li><strong>Pas de flexibilit\u00e9 sur le nombre d&rsquo;\u00e9chantillons<\/strong> \u2014 Con\u00e7u pour n = 2^m<\/li>\n<li><strong>Plus lourds en informatique<\/strong> \u2014 N\u00e9cessite des recherches de table<\/li>\n<\/ul>\n<h3>le verdict<\/h3>\n<p>Pour la plupart des applications de simulation avec 5 \u00e0 20 dimensions, <strong>Sobol avec brouillage surpasse Halton<\/strong>. La raison en est que le brouillage brise les sch\u00e9mas de repliement que Halton d\u00e9veloppe dans des dimensions plus \u00e9lev\u00e9es. Lorsque vous avez besoin d&rsquo;un nombre d&rsquo;\u00e9chantillons arbitraires et que vous ne pouvez pas utiliser de brouillage, Halton peut \u00eatre le meilleur choix pratique.<\/p>\n<h2>Guide de comparaison : MC vs LHS vs Sobol vs Halton<\/h2>\n<table>\n<thead>\n<tr>\n<th>Propri\u00e9t\u00e9<\/th>\n<th>Monte-Carlo<\/th>\n<th>Hypercube latine<\/th>\n<th>Sobol (brouill\u00e9)<\/th>\n<th>Halton<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>taux de convergence<\/td>\n<td>Erreur type O(n\u207b\u00b9\u141f\u00b2)<\/td>\n<td>O(n\u207b\u00b9\u141f\u00b2) avec variance r\u00e9duite<\/td>\n<td>O(n\u207b\u00b9) pour des fonctions fluides<\/td>\n<td>O(n\u207b\u00b9) pour des fonctions fluides<\/td>\n<\/tr>\n<tr>\n<td>R\u00e9duction de la variance<\/td>\n<td>Aucun<\/td>\n<td>Facteur ~ n par rapport \u00e0 MC<\/td>\n<td>10 \u00e0 100 \u00d7 R\u00e9duction par rapport \u00e0 MC<\/td>\n<td>10 \u00e0 50 \u00d7 r\u00e9duction par rapport \u00e0 MC<\/td>\n<\/tr>\n<tr>\n<td>Exemple de flexibilit\u00e9<\/td>\n<td>n&rsquo;importe quel n<\/td>\n<td>n&rsquo;importe quel n<\/td>\n<td>optimal \u00e0 n = 2^m<\/td>\n<td>n&rsquo;importe quel n<\/td>\n<\/tr>\n<tr>\n<td>Mise \u00e0 l&rsquo;\u00e9chelle de la dimensionnalit\u00e9<\/td>\n<td>se d\u00e9grade lin\u00e9airement<\/td>\n<td>se d\u00e9grade de mani\u00e8re multiplicative<\/td>\n<td>se d\u00e9grade au fur et \u00e0 mesure<\/td>\n<td>Se d\u00e9grade au fur et \u00e0 mesure que les O(s) avec alias<\/td>\n<\/tr>\n<tr>\n<td>brouillage requis<\/td>\n<td>Non<\/td>\n<td>Parfois (LHS brouill\u00e9)<\/td>\n<td>Oui (pour la production)<\/td>\n<td>Facultatif<\/td>\n<\/tr>\n<tr>\n<td>Complexit\u00e9 de mise en \u0153uvre<\/td>\n<td>Banal<\/td>\n<td>Faible<\/td>\n<td>Moyenne (tables + brouillage)<\/td>\n<td>Faible<\/td>\n<\/tr>\n<tr>\n<td>Int\u00e9grandes p\u00e9riodiques<\/td>\n<td>biais\u00e9 (structural)<\/td>\n<td>biais\u00e9 (structural)<\/td>\n<td>impartial (si brouill\u00e9)<\/td>\n<td>potentiellement biais\u00e9<\/td>\n<\/tr>\n<tr>\n<td>recommand\u00e9 pour<\/td>\n<td>Base, tr\u00e8s irr\u00e9guli\u00e8re<\/td>\n<td>Dimensions mod\u00e9r\u00e9es (\u2264 15)<\/td>\n<td>Int\u00e9grandes fluides, production<\/td>\n<td>N arbitraire, prototypage rapide<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Guide de mise en \u0153uvre de Python<\/h2>\n<p>Voici un exemple de travail complet qui compare les quatre \u00e9chantillonneurs sur une fonction de test simple.<\/p>\n<pre><code class=\"language-python\">import numpy as np\nfrom scipy.stats import qmc\n\ndef test_function(x):\n    \"\"\"\n    Test integrand: sum of cosines along with a linear drift.\n    True integral on [0,1]^d = sum of (sin(1)\/1) for cos + 0.5*d for linear.\n    \"\"\"\n    d = x.shape[-1]\n    true_integral = d * np.sin(1) + 0.5 * d\n    return np.cos(x) + x.mean(axis=-1, keepdims=True)\n\ndef estimate_integral(samples, func, true_value):\n    \"\"\"Estimate integral via QMC \/ MC averaging.\"\"\"\n    f_values = func(samples)\n    estimate = f_values.mean(axis=-1).mean()\n    std_error = f_values.std(ddof=1) \/ np.sqrt(len(f_values))\n    return estimate, std_error\n\n# Setup\nd = 5  # dimension\nnp.random.seed(42)\n\n# 1. Monte Carlo\nN_mc = 2**15\nmc_samples = np.random.uniform(0, 1, (N_mc, d))\nmc_est, mc_se = estimate_integral(mc_samples, test_function, None)\n\n# 2. Latin Hypercube (scrambled)\nlhs_engine = qmc.Lhs(d, scramble=True)\nlhs_samples = lhs_engine.random(N_mc)\nlhs_est, lhs_se = estimate_integral(lhs_samples, test_function, None)\n\n# 3. Scrambled Sobol QMC\nsobol_engine = qmc.Sobol(d, scramble=True)\nsobol_samples = sobol_engine.random(N_mc)\nsobol_est, sobol_se = estimate_integral(sobol_samples, test_function, None)\n\n# 4. Halton\nhalton_engine = qmc.Halton(d, scramble=False)\nhalton_samples = halton_engine.random(N_mc)\nhalton_est, halton_se = estimate_integral(halton_samples, test_function, None)\n\nprint(f\"MC:      {mc_est:.6f} \u00b1 {mc_se:.6f}\")\nprint(f\"LHS:     {lhs_est:.6f} \u00b1 {lhs_se:.6f}\")\nprint(f\"Sobol:   {sobol_est:.6f} \u00b1 {sobol_se:.6f}\")\nprint(f\"Halton:  {halton_est:.6f} \u00b1 {halton_se:.6f}\")\n<\/code><\/pre>\n<p>La sortie montre de mani\u00e8re coh\u00e9rente que les m\u00e9thodes QMC (Sobol et LHS) produisent des estimations avec une variance nettement inf\u00e9rieure \u00e0 celle de Monte Carlo standard, m\u00eame \u00e0 un nombre mod\u00e9r\u00e9 d&rsquo;\u00e9chantillons.<\/p>\n<h3>Utilisation des limites pour les param\u00e8tres physiques<\/h3>\n<p>Dans les flux de travail de simulation r\u00e9els, vos param\u00e8tres ont des limites physiques. Le module <code>qmc<\/code> g\u00e8re cela via le param\u00e8tre <code>expand<\/code>&nbsp;:<\/p>\n<pre><code class=\"language-python\">from scipy.stats import qmc\nimport numpy as np\n\n# Physical bounds for a 3D problem\nbounds = [\n    (300, 400),   # Temperature in Kelvin\n    (1e-6, 1e-4), # Thermal conductivity, W\/m\u00b7K\n    (0.1, 0.9)    # Porosity, dimensionless\n]\n\nd = len(bounds)\nengine = qmc.Sobol(d, scramble=True)\n\n# Generate samples in [0,1], then expand to bounds\nsamples = engine.random(2**12)\nsamples = qmc.expand(samples, [b for b in bounds])\n\nprint(f\"Sampled bounds check:\")\nfor i, (low, high) in enumerate(bounds):\n    print(f\"  Dim {i}: min={samples[:, i].min():.6f}, max={samples[:, i].max():.6f}\")\n<\/code><\/pre>\n<h2>Des pi\u00e8ges courants et comment les \u00e9viter<\/h2>\n<h3>Pitfall 1 : suppression des premiers points de Sobol<\/h3>\n<p>Les premiers points SOBOL (indices 0 \u00e0 ~10) ont une mauvaise couverture. Si vous les d\u00e9posez sans tenir compte du d\u00e9calage d&rsquo;index, vous cr\u00e9ez un ensemble d&rsquo;\u00e9chantillons biais\u00e9s.<\/p>\n<p><strong>FIX&nbsp;:<\/strong> Commencez toujours l&rsquo;\u00e9chantillonnage de SOBOL \u00e0 l&rsquo;indice&nbsp;0 et laissez la s\u00e9quence compl\u00e8te se remplir naturellement. Si vous avez besoin d&rsquo;un sous-\u00e9chantillon, utilisez le milieu ou la fin de la s\u00e9quence, pas une troncature arbitraire.<\/p>\n<h3>Pitfall 2 : Non-Powers-of-2 Sobol<\/h3>\n<p>La prise de N = 50&nbsp;000&nbsp;points de SOBOL \u00e9limine la propri\u00e9t\u00e9 de divergence optimale. La s\u00e9quence a \u00e9t\u00e9 con\u00e7ue de telle sorte que n = 2^m donne exactement un faible \u00e9cart.<\/p>\n<p><strong>Fixe&nbsp;:<\/strong> Soit N = 2^m et Truncate (acceptable si vous n&rsquo;avez besoin que d&rsquo;un sous-ensemble) ou passez \u00e0 LHS ou Halton pour des comptages arbitraires.<\/p>\n<h3>Pitfall 3 : Sobol non brouill\u00e9 en production<\/h3>\n<p>Les s\u00e9quences SOBOL non brouill\u00e9es ont une structure p\u00e9riodique. Pour les fonctions p\u00e9riodiques (tr\u00e8s courantes dans la propagation de l&rsquo;incertitude), cela cr\u00e9e un biais syst\u00e9matique qui ne fait pas la moyenne avec plus d&rsquo;\u00e9chantillons.<\/p>\n<p><strong>FIX&nbsp;:<\/strong> Utilisez toujours <code>scramble=True<\/code>. L&rsquo;algorithme de brouillage d&rsquo;Owen utilis\u00e9 dans <code>scipy.stats.qmc<\/code> produit des estimations presque impartiales.<\/p>\n<h3>Pitfall 4 : mal interpr\u00e9ter les intervalles de confiance QMC<\/h3>\n<p>Contrairement \u00e0 MC, QMC ne produit pas d&rsquo;intervalles de confiance statistiquement valides par d\u00e9faut. Vous avez besoin de RQMC (QMC randomis\u00e9) avec plusieurs brouillages pour construire des intervalles valides.<\/p>\n<p><strong>Fixe&nbsp;:<\/strong> Ex\u00e9cutez k brouillages de la m\u00eame s\u00e9quence QMC et utilisez la variance de l&rsquo;\u00e9chantillon entre les brouillages pour estimer les intervalles de confiance.<\/p>\n<h3>Pitfall 5 : Appliquer le LHS \u00e0 des intrants fortement corr\u00e9l\u00e9s<\/h3>\n<p>LHS suppose l&rsquo;ind\u00e9pendance de la dimension. Si vos param\u00e8tres sont corr\u00e9l\u00e9s (par exemple, les propri\u00e9t\u00e9s des mat\u00e9riaux d\u00e9riv\u00e9es d&rsquo;une distribution conjointe), LHS sur les marginaux ignore la structure de corr\u00e9lation.<\/p>\n<p><strong>Fix&nbsp;:<\/strong> Utilisez des LH \u00e0 base de copule ou transformez-les en coordonn\u00e9es ind\u00e9pendantes avant d&rsquo;appliquer LHS.<\/p>\n<h2>Ce que nous recommandons<\/h2>\n<p>La s\u00e9lection de la bonne m\u00e9thode d&rsquo;\u00e9chantillonnage n&rsquo;est pas un probl\u00e8me unique. Voici notre cadre de d\u00e9cision pratique :<\/p>\n<h3>Quand utiliser un \u00e9chantillonnage hypercube latin<\/h3>\n<ul>\n<li><strong>Vous avez besoin d&rsquo;un nombre d&rsquo;\u00e9chantillons arbitraires<\/strong> et vous souhaitez des avantages de stratification<\/li>\n<li><strong>Vos dimensions sont \u2264&nbsp;15<\/strong> et vous ne pouvez pas garantir des pouvoirs de deux<\/li>\n<li><strong>Vous avez besoin d&rsquo;une solution rapide et l\u00e9g\u00e8re d&rsquo;impl\u00e9mentation<\/strong> &#8211; LHS est facile \u00e0 coder \u00e0 partir de z\u00e9ro<\/li>\n<li><strong>Votre fonction de simulation est mod\u00e9r\u00e9ment lisse<\/strong> \u2014 LHS g\u00e8re mieux les discontinuit\u00e9s que le Sobol non brouill\u00e9<\/li>\n<\/ul>\n<h3>Quand utiliser le SOBOL QMC brouill\u00e9<\/h3>\n<ul>\n<li><strong>Votre int\u00e9grand est fluide<\/strong> (diff\u00e9renci\u00e9, sans discontinuit\u00e9s fortes)<\/li>\n<li><strong>Vous pouvez utiliser n = 2^m<\/strong> Nombre d&rsquo;\u00e9chantillons<\/li>\n<li><strong>Vous avez besoin du meilleur taux de convergence th\u00e9orique<\/strong> \u2014 O(N\u207b\u00b9) bat O(N\u207b\u00b9\u141f\u00b2)<\/li>\n<li><strong>Vous ex\u00e9cutez des campagnes UQ de production<\/strong> o\u00f9 le nombre d&rsquo;\u00e9chantillons est limit\u00e9 par le budget de calcul<\/li>\n<\/ul>\n<h3>Quand utiliser Halton<\/h3>\n<ul>\n<li><strong>Vous avez besoin de nombres d&rsquo;\u00e9chantillons arbitraires<\/strong> et ne pouvez pas utiliser LHS pour une raison quelconque<\/li>\n<li><strong>Vos dimensions sont \u2264&nbsp;10<\/strong> \u2014 Halton fonctionne bien dans des dimensions basses<\/li>\n<li><strong>Vous prototypez<\/strong> et avez besoin d&rsquo;une s\u00e9quence rapide sans tables<\/li>\n<\/ul>\n<h3>Quand utiliser Monte Carlo standard<\/h3>\n<ul>\n<li><strong>Votre fonction a de fortes discontinuit\u00e9s<\/strong> et vous ne pouvez pas vous d\u00e9mener<\/li>\n<li><strong>Vos dimensions d\u00e9passent 25<\/strong> \u2014 Toutes les m\u00e9thodes LDS se d\u00e9gradent et la simplicit\u00e9 de MC gagne<\/li>\n<li><strong>Vous avez besoin d&rsquo;intervalles de confiance statistiquement valides<\/strong> sans escroquer les frais g\u00e9n\u00e9raux<\/li>\n<li><strong>Votre fonction est extr\u00eamement irr\u00e9guli\u00e8re<\/strong> &#8211; la structure SOBOL\/LHS peut ajouter des biais<\/li>\n<\/ul>\n<h3>Une r\u00e8gle pratique<\/h3>\n<p>Pour la plupart des flux de travail de simulation scientifique dans 3 \u00e0 20 dimensions avec des mod\u00e8les de transfert fluides, <strong>Sobol QMC brouill\u00e9 avec n = 2^12 \u00e0 2^15 \u00e9chantillons<\/strong> est le point id\u00e9al. Il vous donne une r\u00e9duction de variance de 10 \u00e0 100&nbsp;\u00d7 sur le Monte Carlo standard \u00e0 un nombre d&rsquo;\u00e9chantillons qui se termine en heures plut\u00f4t qu&rsquo;en jours sur un seul n\u0153ud.<\/p>\n<h2>R\u00e9sum\u00e9 et \u00e9tapes suivantes<\/h2>\n<p>Les m\u00e9thodes de Monte Carlo pour les simulations scientifiques ne consistent pas seulement \u00e0 dessiner des nombres al\u00e9atoires. Le choix de la strat\u00e9gie d&rsquo;\u00e9chantillonnage &#8211; Hypercube latin, s\u00e9quences SOBOL ou Halton &#8211; d\u00e9termine si votre campagne UQ est efficace ou inutile.<\/p>\n<p>Les principales informations sont :<\/p>\n<ul>\n<li><strong>Diversit\u00e9 d&rsquo;\u00e9cart<\/strong>&nbsp;: les s\u00e9quences \u00e0 faible \u00e9cart couvrent l&rsquo;espace des param\u00e8tres beaucoup plus uniform\u00e9ment que les points al\u00e9atoires<\/li>\n<li><strong>Le brouillage est essentiel<\/strong> pour la production SOBOL afin d&rsquo;\u00e9viter les biais syst\u00e9matiques<\/li>\n<li><strong>Les pouvoirs de deux<\/strong> sont optimaux pour SOBOL \u2014 Concevez votre \u00e9chantillon de budget en cons\u00e9quence<\/li>\n<li><strong>Taux de convergence QMC<\/strong> de O(n\u207b\u00b9) pour des fonctions fluides en font le choix par d\u00e9faut pour la plupart des flux de travail de simulation<\/li>\n<\/ul>\n<p>Notre <a href=\"https:\/\/matforge.org\/monte-carlo-methods-for-scientific-simulations\/\" target=\"_blank\" rel=\"nofollow noopener\">M\u00e9thodes de Monte Carlo pour les simulations scientifiques<\/a> Le guide fournit une introduction plus large aux approches de Monte Carlo. Cet article zoome sur les m\u00e9thodes de faible \u00e9cart qui vous donnent le plus d&rsquo;efficacit\u00e9 par \u00e9chantillon.<\/p>\n<p>Pour un d\u00e9ploiement pratique, int\u00e9grez les mod\u00e8les de code QMC ci-dessus dans vos scripts de campagne de simulation. Commencez par n = 2 ^ 12, \u00e9valuez la convergence en surveillant la variance de l&rsquo;estimateur et mettez \u00e0 l&rsquo;\u00e9chelle jusqu&rsquo;\u00e0 2 ^ 15 si votre budget le permet. Les r\u00e9sultats parleront d&rsquo;eux-m\u00eames.<\/p>\n<h2>Guides connexes<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/uncertainty-quantification-sensitivity-analysis-scientific-simulation\/\" target=\"_blank\" rel=\"nofollow noopener\">Quantification de l&rsquo;incertitude et analyse de sensibilit\u00e9 dans la simulation scientifique<\/a> \u2014 Contexte UQ plus large incluant les indices SOBOL et la sensibilit\u00e9 bas\u00e9e sur la variance<\/li>\n<li><a href=\"https:\/\/matforge.org\/monte-carlo-methods-for-scientific-simulations\/\" target=\"_blank\" rel=\"nofollow noopener\">M\u00e9thodes de Monte Carlo pour les simulations scientifiques : A Guide Python<\/a> \u2014 Couverture de Monte-Carlo plus large, y compris l&rsquo;\u00e9chantillonnage d&rsquo;importance et les m\u00e9thodes adaptatives<\/li>\n<li><a href=\"https:\/\/matforge.org\/verification-vs-validation-in-scientific-simulations-a-practical-guide\/\" target=\"_blank\" rel=\"nofollow noopener\">V\u00e9rification vs validation Dans les simulations scientifiques&nbsp;: un guide pratique<\/a> \u2014 Comment v\u00e9rifier que vos r\u00e9sultats UQ sont num\u00e9riquement corrects<\/li>\n<li><a href=\"https:\/\/matforge.org\/reproducible-parameter-sweeps-designing-simulation-campaigns-for-publication\/\" target=\"_blank\" rel=\"nofollow noopener\">Am\u00e9lioration des param\u00e8tres reproductibles&nbsp;: conception de campagnes de simulation pour publication<\/a> \u2014 Meilleures pratiques de documentation et de reproductibilit\u00e9 pour les campagnes d&rsquo;\u00e9chantillonnage<\/li>\n<\/ul>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ol>\n<li>Kucherenko, M. et al. \u00ab\u00a0Utilisation des s\u00e9quences latines d&rsquo;hypercube et de Sobol pour la quantification de l&rsquo;incertitude.\u00a0\u00bb arxiv&nbsp;:1505.02350, 2015. <a href=\"https:\/\/arxiv.org\/abs\/1505.02350\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/arxiv.org\/abs\/1505.02350<\/a><\/li>\n<li>Chrisman, E. \u00ab\u00a0Comparaison PI Day&nbsp;: Monte Carlo vs. Latin&nbsp;Hypercube vs Sobol Sampling.\u00a0\u00bb Analytica, 2022. <a href=\"https:\/\/analytica.com\/blog\/pi-day-comparison-monte-carlo-vs-latin-hypercube-vs-sobol-sampling\/\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/analytica.com\/blog\/pi-day-comparison-monte-carlo-vs-latin-hypercube-vs-sobol-sampling\/<\/a><\/li>\n<li>Scipy. \u00ab\u00a0Quasi-Monte Carlo R\u00e9f\u00e9rence d&rsquo;\u00e9chantillonnage.\u00a0\u00bb <a href=\"https:\/\/docs.scipy.org\/doc\/scipy\/reference\/stats.qmc.html\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/docs.scipy.org\/doc\/scipy\/reference\/stats.qmc.html<\/a><\/li>\n<li>Scipy. \u00ab\u00a0Tutoriel Quasi-Monte Carlo.\u00a0\u00bb <a href=\"https:\/\/scipy.github.io\/devdocs\/tutorial\/stats\/quasi_monte_carlo.html\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/scipy.github.io\/devdocs\/tutorial\/stats\/quasi_monte_carlo.html<\/a><\/li>\n<li>QMCSoftware. \u00ab\u00a0Documentation QMCSoftware.\u00a0\u00bb <a href=\"https:\/\/qmcsoftware.github.io\/QMCSoftware\/\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/qmcsoftware.github.io\/qmcsoftware\/<\/a><\/li>\n<li>Dictionnaire Helmholtz-UQ. \u00ab\u00a0M\u00e9thodes Quasi-Monte Carlo.\u00a0\u00bb <a href=\"https:\/\/dictionary.helmholtz-uq.de\/content\/quasi_montecarlo_methods.html\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/dictionary.helmholtz-uq.de\/content\/quasi_montecarlo_methods.html<\/a><\/li>\n<li>NDCBE. \u00ab\u00a0Carnet de cours quantification de l&rsquo;incertitude bas\u00e9 sur l&rsquo;\u00e9chantillonnage.\u00a0\u00bb <a href=\"https:\/\/ndcbe.github.io\/cbe67701-uncertainty-quantification\/07.01-Sampling-Based-Uncertainty-Quantification.html\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/ndcbe.github.io\/cbe67701-Uncertainty-quantification\/07.01-sampling-based-uncertainty-quantification.html<\/a><\/li>\n<\/ol>\n","protected":false,"raw":"<p>Lorsque la sortie de votre simulation est motiv\u00e9e par des entr\u00e9es incertaines, la fa\u00e7on dont vous pr\u00e9levez des \u00e9chantillons de ces entr\u00e9es d\u00e9termine si votre quantification d'incertitude est efficace ou gaspille. Standard Monte Carlo utilise i.i.d. Tirages al\u00e9atoires, ce qui garantit la convergence mais \u00e0 un rythme douloureusement lent. M\u00e9thodes d'\u00e9chantillonnage \u00e0 faible \u00e9cart - \u00e9chantillonnage hypercube latin (LHS), s\u00e9quences de SOBOL et la famille plus large de Quasi-Monte Carlo (QMC) - restructurer le processus d'\u00e9chantillonnage afin que les points couvrent l'espace des param\u00e8tres de mani\u00e8re plus uniforme, r\u00e9duisant consid\u00e9rablement la variance de la Estimateurs.<\/p>\n<p>Dans cet article, nous allons au-del\u00e0 de la br\u00e8ve mention dans notre <a href=\"https:\/\/matforge.org\/monte-carlo-methods-for-scientific-simulations\/\" target=\"_blank\" rel=\"nofollow noopener\">monte Guide de simulations Carlo pour les simulations scientifiques<\/a>. Il s'agit d'une plong\u00e9e approfondie consacr\u00e9e aux m\u00e9thodes de la th\u00e9orie, de la mise en \u0153uvre pratique et de la d\u00e9cision pour les m\u00e9thodes LHS, SoBOL et QMC, avec du code Python de travail et une comparaison du moment o\u00f9 chaque approche gagne.<\/p>\n<h2>Points \u00e0 retenir cl\u00e9s<\/h2>\n<ul>\n<li><strong>LHS stratifie chaque dimension ind\u00e9pendamment<\/strong>, garantissant que chaque bac d'histogramme marginal est rempli exactement une fois. Il offre une convergence plus rapide que le Monte Carlo simple \u00e0 faible co\u00fbt.<\/li>\n<li><strong>Les s\u00e9quences SOBOL sont des s\u00e9quences \u00e0 faible \u00e9cart<\/strong> qui permettent une couverture quasi uniforme dans n'importe quelle dimension, mais elles n\u00e9cessitent un brouillage pour une utilisation pratique et fonctionnent mieux avec des nombres de deux \u00e9chantillons.<\/li>\n<li><strong>La convergence QMC peut atteindre O(N\u207b\u00b9)<\/strong> pour les int\u00e9grations lisses, par rapport \u00e0 O(N\u207b\u00b9\u141f\u00b2) pour Monte Carlo standard - une baisse exponentielle de la taille de l'\u00e9chantillon requise pour la m\u00eame pr\u00e9cision.<\/li>\n<li><strong>Les s\u00e9quences Halton autorisent le nombre d'\u00e9chantillons arbitraires<\/strong> et sont faciles \u00e0 g\u00e9n\u00e9rer, mais elles pr\u00e9sentent un alias structur\u00e9 dans des dimensions plus \u00e9lev\u00e9es. SOBOL surpasse Halton lorsque vous avez besoin d'une invariance de rotation par brouillage.<\/li>\n<li><strong>Le brouillage n'est pas facultatif pour la production SOBOL<\/strong> - les s\u00e9quences non brouill\u00e9es induisent un biais syst\u00e9matique dans les int\u00e9grandes p\u00e9riodiques ou discontinues.<\/li>\n<\/ul>\n<h2>Le probl\u00e8me d'\u00e9chantillonnage&nbsp;: pourquoi le hasard n'est pas toujours le meilleur<\/h2>\n<p>Le principal d\u00e9fi dans la quantification de l'incertitude bas\u00e9 sur l'\u00e9chantillonnage est la <strong>\u00e9cart<\/strong> de l'ensemble d'\u00e9chantillons. L'\u00e9cart mesure la fa\u00e7on dont les points sont uniform\u00e9ment r\u00e9partis dans l'espace des param\u00e8tres. Dans la limite des \u00e9chantillons infinis, tout \u00e9cart raisonnable va \u00e0 z\u00e9ro, mais le rythme auquel il importe \u00e9norm\u00e9ment.<\/p>\n<h3>Monte-Carlo classique<\/h3>\n<p>La norme Monte Carlo tire des \u00e9chantillons ind\u00e9pendamment de la distribution cible. Par le th\u00e9or\u00e8me central des limites, l'estimateur converge avec une variance proportionnelle \u00e0 1\/n. Cela signifie que pour r\u00e9duire de moiti\u00e9 l'erreur standard, vous devez <strong>quadruple<\/strong> le nombre d'\u00e9chantillons. Pour une simulation co\u00fbteuse en calculs - un probl\u00e8me thermique 3D, un solveur de flux multiphase ou une dynamique mol\u00e9culaire des mat\u00e9riaux - quadrupler le nombre d'\u00e9chantillons peut signifier des jours d'horloge murale.<\/p>\n<h3>La perspective de divergence<\/h3>\n<p>Les s\u00e9quences de faible \u00e9cart (LD) sont construites pr\u00e9cis\u00e9ment pour minimiser l'\u00e9cart d'\u00e9toiles D*_n de l'ensemble d'\u00e9chantillons. La d\u00e9finition est :<\/p>\n<pre><code>D*_N = sup_{A \u2286 [0,1]^s} |(1\/N) \u03a3 1_A(x_i) \u2212 \u03bb(A)|\n<\/code><\/pre>\n<p>o\u00f9 \u03bb(a) est la mesure de Lebesgue (volume) de A et le supremum est pris sur toutes les sous-bo\u00eetes align\u00e9es sur l'axe. En anglais simple&nbsp;: les s\u00e9quences LDS minimisent l'\u00e9cart maximal entre la probabilit\u00e9 empirique et la probabilit\u00e9 r\u00e9elle sur n'importe quelle r\u00e9gion rectangulaire.<\/p>\n<p>Le <strong>Sobelev\u2013Dick\u2013Tractman in\u00e9galit\u00e9<\/strong> (le th\u00e9or\u00e8me de Koks-Meyers pour les LD) stipule que pour une fonction F avec des d\u00e9riv\u00e9es partielles mixtes jusqu'\u00e0 l'ordre S, l'erreur d'int\u00e9gration d'une r\u00e8gle LDS est limit\u00e9e par&nbsp;:<\/p>\n<pre><code>|\u222b f \u2212 (1\/N) \u03a3 f(x_i)| \u2264 C_s \u00b7 \u2016f\u2016_S \u00b7 D*_N\n<\/code><\/pre>\n<p>o\u00f9 C_S est une constante en fonction uniquement de la dimension et \u2016f\u2016_s est la norme SOBOLEV. Cette borne explique pourquoi les m\u00e9thodes QMC brillent pour des fonctions lisses - l'erreur se d\u00e9cro\u00eet beaucoup plus rapidement que le taux de Monte Carlo lorsque l'int\u00e9grand a born\u00e9 des d\u00e9riv\u00e9s mixtes.<\/p>\n<h3>La mal\u00e9diction de la dimensionnalit\u00e9<\/h3>\n<p>Toutes ces m\u00e9thodes sont confront\u00e9es \u00e0 la mal\u00e9diction de la dimensionnalit\u00e9. Pour le LHS, la stratification est b\u00e9n\u00e9fique pour les compos\u00e9s de mani\u00e8re multiplicative \u00e0 travers les dimensions. Pour Sobol et Halton, la structure qui donne une faible divergence dans 1 \u00e0 2 dimensions commence \u00e0 se d\u00e9composer \u00e0 mesure que les dimensions augmentent - les s\u00e9quences Halton d\u00e9veloppent en particulier des sch\u00e9mas d'aliasage p\u00e9riodiques qui d\u00e9forment la couverture. Il est essentiel de comprendre o\u00f9 se situent les forces et les faiblesses de chaque m\u00e9thode pour s\u00e9lectionner le bon \u00e9chantillonneur.<\/p>\n<h2>\u00c9chantillonnage hypercube latin : th\u00e9orie et mise en \u0153uvre<\/h2>\n<p>L'\u00e9chantillonnage hypercube latin a \u00e9t\u00e9 introduit par McKay et al. (1989) comme compromis entre la stratification pure et la simplicit\u00e9 de l'\u00e9chantillonnage al\u00e9atoire.<\/p>\n<h3>Comment fonctionne LHS<\/h3>\n<p>Pour un probl\u00e8me de dimension D avec n \u00e9chantillons :<\/p>\n<ol>\n<li>partitionnez chaque dimension marginale en n cases \u00e0 intervalles \u00e9gaux.<\/li>\n<li>Pour chaque dimension k, permuter au hasard le vecteur entier [1, 2, ..., N] pour d\u00e9terminer quel bin occupe chaque \u00e9chantillon.<\/li>\n<li>Dessinez n \u00e9chantillons uniformes de chaque dimension, stratifi\u00e9s dans leurs bacs assign\u00e9s.<\/li>\n<li>Permutez ind\u00e9pendamment les indices d'\u00e9chantillon dans toutes les dimensions, produisant une matrice d \u00d7 n.<\/li>\n<\/ol>\n<p>La propri\u00e9t\u00e9 cruciale est <strong>un-\u00e9chantillon-par-bin<\/strong> le long de chaque dimension. Cela garantit que l'histogramme marginal pour chaque dimension est parfaitement stratifi\u00e9.<\/p>\n<h3>Propri\u00e9t\u00e9s de convergence<\/h3>\n<p>LHS a un facteur de r\u00e9duction de la variance par rapport \u00e0 Monte Carlo simple. Dans des conditions de r\u00e9gularit\u00e9 l\u00e9g\u00e8res :<\/p>\n<pre><code>Var_LHS(\u0233) = Var_MC(\u0233) \/ N + O(N\u207b\u00b2)\n<\/code><\/pre>\n<p>Cela signifie que LHS converge \u00e0 peu pr\u00e8s au m\u00eame taux d'O (N\u207b\u00b9\u141f\u00b2) dans l'erreur standard mais avec une constante significativement inf\u00e9rieure - \u00e0 peu pr\u00e8s un facteur de r\u00e9duction de la variance.<\/p>\n<h3>Impl\u00e9mentation de Python<\/h3>\n<pre><code class=\"language-python\">import numpy as np\nfrom scipy.stats import qmc\n\ndef lhs_sample(N, d, bounds=None):\n    \"\"\"\n    Latin Hypercube Sampling using scipy.\n    \n    Parameters:\n        N: number of samples\n        d: number of dimensions\n        bounds: list of (low, high) tuples for each dimension\n    \n    Returns:\n        N x d array of LHS samples\n    \"\"\"\n    if bounds is None:\n        bounds = [(0, 1)] * d\n    \n    # Create the LHS engine\n    engine = qmc.Lhs(d, scramble=False)\n    \n    # Generate samples in [0,1]\n    samples = engine.random(N)\n    \n    # Apply bounds\n    if bounds != [(0, 1)] * d:\n        # Transform to specified bounds\n        for i, (low, high) in enumerate(bounds):\n            samples[:, i] = low + (high - low) * samples[:, i]\n    \n    return samples\n\n# Example: 3D LHS with 1000 samples\nnp.random.seed(42)\nd = 3\nN = 1000\nlhs_samples = lhs_sample(N, d)\nprint(f\"LHS shape: {lhs_samples.shape}\")\nprint(f\"Marginal means (should be ~0.5): {lhs_samples.mean(axis=0)[:3]}\")\n<\/code><\/pre>\n<p>L'option <code>scramble=False<\/code> ci-dessus est intentionnelle pour l'illustration - en production, vous devez utiliser <code>scramble=True<\/code> pour briser la structure de corr\u00e9lation artificielle introduite par LHS d\u00e9terministe.<\/p>\n<h2>Quasi-Monte Carlo : s\u00e9quences de Sobol et brouillage<\/h2>\n<p>Les s\u00e9quences de SOBOL ont \u00e9t\u00e9 introduites par I. M. Sobol en 1967 comme la premi\u00e8re s\u00e9quence pratique \u00e0 faible discordance. Ils utilisent un graphe dirig\u00e9 pour g\u00e9n\u00e9rer des chiffres dans la base 2, produisant une s\u00e9quence avec une faible diff\u00e9rence d'\u00e9toile.<\/p>\n<h3>Pourquoi le brouillage est essentiel<\/h3>\n<p>Une s\u00e9quence SOBOL non embrouill\u00e9e a une structure qui r\u00e9p\u00e8te tous les 2 ^ m d'\u00e9chantillons. Pour les int\u00e9grations p\u00e9riodiques ou discontinues - tr\u00e8s courantes dans les flux de travail de simulation - cela cr\u00e9e un <strong>biais syst\u00e9matique<\/strong>. La s\u00e9quence s'aligne sur les discontinuit\u00e9s, ce qui fait que l'int\u00e9grateur manque des fonctionnalit\u00e9s importantes.<\/p>\n<p>Le brouillage applique une permutation al\u00e9atoire aux repr\u00e9sentations binaires des indices de s\u00e9quence, rompre cette p\u00e9riodicit\u00e9 tout en conservant la propri\u00e9t\u00e9 \u00e0 faible \u00e9cart. Le cadre <strong>Quasi-Monte Carlo (RQMC)<\/strong> randomis\u00e9 prouve que les s\u00e9quences de SOBOL brouill\u00e9es, lorsqu'elles sont moyenn\u00e9es sur le brouillage, produisent des estimateurs non biais\u00e9s avec des intervalles de confiance convergents.<\/p>\n<h3>Nombre d'\u00e9chantillons&nbsp;: puissances de deux<\/h3>\n<p>Les s\u00e9quences SOBOL ont \u00e9t\u00e9 con\u00e7ues de telle sorte que <strong>exactement 2^m points donnent un \u00e9cart optimal<\/strong>. Prendre N = 2^15 = 32&nbsp;768&nbsp;points donne une couverture consid\u00e9rablement meilleure que la prise de N = 30&nbsp;000. Si vous avez besoin de 30&nbsp;000&nbsp;\u00e9chantillons, soit vous&nbsp;:<\/p>\n<ol>\n<li>G\u00e9n\u00e9rez 32&nbsp;768&nbsp;points SOBOL et utilisez les 30&nbsp;000&nbsp;premi\u00e8res (vous perdez l'optimalit\u00e9)<\/li>\n<li>Utilisez un \u00e9chantillonneur diff\u00e9rent pour ce nombre sp\u00e9cifique<\/li>\n<li>Utilisez des s\u00e9quences Halton, qui prennent en charge N arbitraire<\/li>\n<\/ol>\n<h3>Sobol brouill\u00e9 dans la pratique<\/h3>\n<pre><code class=\"language-python\">import numpy as np\nfrom scipy.stats import qmc\n\ndef scrambled_sobol(N, d, seed=None):\n    \"\"\"\n    Generate scrambled Sobol QMC samples.\n    \n    Parameters:\n        N: number of samples (ideally a power of 2)\n        d: number of dimensions\n        seed: random seed for scrambling\n    \n    Returns:\n        N x d array of QMC samples\n    \"\"\"\n    engine = qmc.QualifiedSobol(d, scramble=True, seed=seed)\n    return engine.random(N)\n\n# Example: 2^15 Sobol samples in 10 dimensions\nnp.random.seed(42)\nd = 10\nN = 2**15  # 32,768 - optimal for Sobol\nsobol_samples = scrambled_sobol(N, d, seed=12345)\nprint(f\"Scrambled Sobol shape: {sobol_samples.shape}\")\n<\/code><\/pre>\n<h2>Halton vs Sobol : compromis pratiques<\/h2>\n<p>Les deux familles LDS les plus courantes sont Halton et Sobol. Les deux sont d\u00e9terministes, les deux ont une faible diff\u00e9rence, mais ils se comportent diff\u00e9remment dans la pratique.<\/p>\n<h3>S\u00e9quences Halton<\/h3>\n<p>Les s\u00e9quences Halton utilisent des nombres premiers cons\u00e9cutifs comme bases : 2, 3, 5, 7, 11, ... Cela garantit une ind\u00e9pendance math\u00e9matique entre les dimensions. Les avantages sont :<\/p>\n<ul>\n<li><strong>Num\u00e9rations d'\u00e9chantillons arbitraires<\/strong> \u2014 Pas besoin de pouvoirs de deux<\/li>\n<li><strong>Facile \u00e0 g\u00e9n\u00e9rer<\/strong> \u2014 Aucune table polynomiale primitive n'est n\u00e9cessaire<\/li>\n<li><strong>Rapide \u00e0 calculer<\/strong> \u2014 Extraction simple des chiffres<\/li>\n<\/ul>\n<p>Les inconv\u00e9nients sont bien document\u00e9s :<\/p>\n<ul>\n<li><strong>Alias structur\u00e9<\/strong> \u2014 Les projections de dimensions sup\u00e9rieures pr\u00e9sentent des mod\u00e8les p\u00e9riodiques<\/li>\n<li><strong>Des limites th\u00e9oriques les plus pauvres<\/strong> \u2014 L'\u00e9cart grandit plus vite que le SOBOL<\/li>\n<li><strong>Aucune th\u00e9orie du brouillage<\/strong> \u2014 Le brouillage est plus difficile \u00e0 d\u00e9finir pour des bases arbitraires<\/li>\n<\/ul>\n<h3>S\u00e9quences de SOBOL<\/h3>\n<p>Les s\u00e9quences SOBOL utilisent un polyn\u00f4me primitif fixe sur GF(2), donnant :<\/p>\n<ul>\n<li><strong>Meilleures limites th\u00e9oriques<\/strong> \u2014 \u00e9carts de base pour la base-2<\/li>\n<li><strong>Th\u00e9orie du brouillage riche<\/strong> \u2014 Owen Le brouillage est bien d\u00e9fini et efficace<\/li>\n<li><strong>Optimal pour les pouvoirs de deux<\/strong> \u2014 Garantie d'optimalit\u00e9 exacte<\/li>\n<\/ul>\n<p>Les inconv\u00e9nients :<\/p>\n<ul>\n<li><strong>N\u00e9cessite des tables polynomiales primitives<\/strong> \u2014 doit \u00eatre pr\u00e9-calcul\u00e9 ou stock\u00e9<\/li>\n<li><strong>Pas de flexibilit\u00e9 sur le nombre d'\u00e9chantillons<\/strong> \u2014 Con\u00e7u pour n = 2^m<\/li>\n<li><strong>Plus lourds en informatique<\/strong> \u2014 N\u00e9cessite des recherches de table<\/li>\n<\/ul>\n<h3>le verdict<\/h3>\n<p>Pour la plupart des applications de simulation avec 5 \u00e0 20 dimensions, <strong>Sobol avec brouillage surpasse Halton<\/strong>. La raison en est que le brouillage brise les sch\u00e9mas de repliement que Halton d\u00e9veloppe dans des dimensions plus \u00e9lev\u00e9es. Lorsque vous avez besoin d'un nombre d'\u00e9chantillons arbitraires et que vous ne pouvez pas utiliser de brouillage, Halton peut \u00eatre le meilleur choix pratique.<\/p>\n<h2>Guide de comparaison : MC vs LHS vs Sobol vs Halton<\/h2>\n<table>\n<thead>\n<tr>\n<th>Propri\u00e9t\u00e9<\/th>\n<th>Monte-Carlo<\/th>\n<th>Hypercube latine<\/th>\n<th>Sobol (brouill\u00e9)<\/th>\n<th>Halton<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>taux de convergence<\/td>\n<td>Erreur type O(n\u207b\u00b9\u141f\u00b2)<\/td>\n<td>O(n\u207b\u00b9\u141f\u00b2) avec variance r\u00e9duite<\/td>\n<td>O(n\u207b\u00b9) pour des fonctions fluides<\/td>\n<td>O(n\u207b\u00b9) pour des fonctions fluides<\/td>\n<\/tr>\n<tr>\n<td>R\u00e9duction de la variance<\/td>\n<td>Aucun<\/td>\n<td>Facteur ~ n par rapport \u00e0 MC<\/td>\n<td>10 \u00e0 100 \u00d7 R\u00e9duction par rapport \u00e0 MC<\/td>\n<td>10 \u00e0 50 \u00d7 r\u00e9duction par rapport \u00e0 MC<\/td>\n<\/tr>\n<tr>\n<td>Exemple de flexibilit\u00e9<\/td>\n<td>n'importe quel n<\/td>\n<td>n'importe quel n<\/td>\n<td>optimal \u00e0 n = 2^m<\/td>\n<td>n'importe quel n<\/td>\n<\/tr>\n<tr>\n<td>Mise \u00e0 l'\u00e9chelle de la dimensionnalit\u00e9<\/td>\n<td>se d\u00e9grade lin\u00e9airement<\/td>\n<td>se d\u00e9grade de mani\u00e8re multiplicative<\/td>\n<td>se d\u00e9grade au fur et \u00e0 mesure<\/td>\n<td>Se d\u00e9grade au fur et \u00e0 mesure que les O(s) avec alias<\/td>\n<\/tr>\n<tr>\n<td>brouillage requis<\/td>\n<td>Non<\/td>\n<td>Parfois (LHS brouill\u00e9)<\/td>\n<td>Oui (pour la production)<\/td>\n<td>Facultatif<\/td>\n<\/tr>\n<tr>\n<td>Complexit\u00e9 de mise en \u0153uvre<\/td>\n<td>Banal<\/td>\n<td>Faible<\/td>\n<td>Moyenne (tables + brouillage)<\/td>\n<td>Faible<\/td>\n<\/tr>\n<tr>\n<td>Int\u00e9grandes p\u00e9riodiques<\/td>\n<td>biais\u00e9 (structural)<\/td>\n<td>biais\u00e9 (structural)<\/td>\n<td>impartial (si brouill\u00e9)<\/td>\n<td>potentiellement biais\u00e9<\/td>\n<\/tr>\n<tr>\n<td>recommand\u00e9 pour<\/td>\n<td>Base, tr\u00e8s irr\u00e9guli\u00e8re<\/td>\n<td>Dimensions mod\u00e9r\u00e9es (\u2264 15)<\/td>\n<td>Int\u00e9grandes fluides, production<\/td>\n<td>N arbitraire, prototypage rapide<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Guide de mise en \u0153uvre de Python<\/h2>\n<p>Voici un exemple de travail complet qui compare les quatre \u00e9chantillonneurs sur une fonction de test simple.<\/p>\n<pre><code class=\"language-python\">import numpy as np\nfrom scipy.stats import qmc\n\ndef test_function(x):\n    \"\"\"\n    Test integrand: sum of cosines along with a linear drift.\n    True integral on [0,1]^d = sum of (sin(1)\/1) for cos + 0.5*d for linear.\n    \"\"\"\n    d = x.shape[-1]\n    true_integral = d * np.sin(1) + 0.5 * d\n    return np.cos(x) + x.mean(axis=-1, keepdims=True)\n\ndef estimate_integral(samples, func, true_value):\n    \"\"\"Estimate integral via QMC \/ MC averaging.\"\"\"\n    f_values = func(samples)\n    estimate = f_values.mean(axis=-1).mean()\n    std_error = f_values.std(ddof=1) \/ np.sqrt(len(f_values))\n    return estimate, std_error\n\n# Setup\nd = 5  # dimension\nnp.random.seed(42)\n\n# 1. Monte Carlo\nN_mc = 2**15\nmc_samples = np.random.uniform(0, 1, (N_mc, d))\nmc_est, mc_se = estimate_integral(mc_samples, test_function, None)\n\n# 2. Latin Hypercube (scrambled)\nlhs_engine = qmc.Lhs(d, scramble=True)\nlhs_samples = lhs_engine.random(N_mc)\nlhs_est, lhs_se = estimate_integral(lhs_samples, test_function, None)\n\n# 3. Scrambled Sobol QMC\nsobol_engine = qmc.Sobol(d, scramble=True)\nsobol_samples = sobol_engine.random(N_mc)\nsobol_est, sobol_se = estimate_integral(sobol_samples, test_function, None)\n\n# 4. Halton\nhalton_engine = qmc.Halton(d, scramble=False)\nhalton_samples = halton_engine.random(N_mc)\nhalton_est, halton_se = estimate_integral(halton_samples, test_function, None)\n\nprint(f\"MC:      {mc_est:.6f} \u00b1 {mc_se:.6f}\")\nprint(f\"LHS:     {lhs_est:.6f} \u00b1 {lhs_se:.6f}\")\nprint(f\"Sobol:   {sobol_est:.6f} \u00b1 {sobol_se:.6f}\")\nprint(f\"Halton:  {halton_est:.6f} \u00b1 {halton_se:.6f}\")\n<\/code><\/pre>\n<p>La sortie montre de mani\u00e8re coh\u00e9rente que les m\u00e9thodes QMC (Sobol et LHS) produisent des estimations avec une variance nettement inf\u00e9rieure \u00e0 celle de Monte Carlo standard, m\u00eame \u00e0 un nombre mod\u00e9r\u00e9 d'\u00e9chantillons.<\/p>\n<h3>Utilisation des limites pour les param\u00e8tres physiques<\/h3>\n<p>Dans les flux de travail de simulation r\u00e9els, vos param\u00e8tres ont des limites physiques. Le module <code>qmc<\/code> g\u00e8re cela via le param\u00e8tre <code>expand<\/code>&nbsp;:<\/p>\n<pre><code class=\"language-python\">from scipy.stats import qmc\nimport numpy as np\n\n# Physical bounds for a 3D problem\nbounds = [\n    (300, 400),   # Temperature in Kelvin\n    (1e-6, 1e-4), # Thermal conductivity, W\/m\u00b7K\n    (0.1, 0.9)    # Porosity, dimensionless\n]\n\nd = len(bounds)\nengine = qmc.Sobol(d, scramble=True)\n\n# Generate samples in [0,1], then expand to bounds\nsamples = engine.random(2**12)\nsamples = qmc.expand(samples, [b for b in bounds])\n\nprint(f\"Sampled bounds check:\")\nfor i, (low, high) in enumerate(bounds):\n    print(f\"  Dim {i}: min={samples[:, i].min():.6f}, max={samples[:, i].max():.6f}\")\n<\/code><\/pre>\n<h2>Des pi\u00e8ges courants et comment les \u00e9viter<\/h2>\n<h3>Pitfall 1 : suppression des premiers points de Sobol<\/h3>\n<p>Les premiers points SOBOL (indices 0 \u00e0 ~10) ont une mauvaise couverture. Si vous les d\u00e9posez sans tenir compte du d\u00e9calage d'index, vous cr\u00e9ez un ensemble d'\u00e9chantillons biais\u00e9s.<\/p>\n<p><strong>FIX&nbsp;:<\/strong> Commencez toujours l'\u00e9chantillonnage de SOBOL \u00e0 l'indice&nbsp;0 et laissez la s\u00e9quence compl\u00e8te se remplir naturellement. Si vous avez besoin d'un sous-\u00e9chantillon, utilisez le milieu ou la fin de la s\u00e9quence, pas une troncature arbitraire.<\/p>\n<h3>Pitfall 2 : Non-Powers-of-2 Sobol<\/h3>\n<p>La prise de N = 50&nbsp;000&nbsp;points de SOBOL \u00e9limine la propri\u00e9t\u00e9 de divergence optimale. La s\u00e9quence a \u00e9t\u00e9 con\u00e7ue de telle sorte que n = 2^m donne exactement un faible \u00e9cart.<\/p>\n<p><strong>Fixe&nbsp;:<\/strong> Soit N = 2^m et Truncate (acceptable si vous n'avez besoin que d'un sous-ensemble) ou passez \u00e0 LHS ou Halton pour des comptages arbitraires.<\/p>\n<h3>Pitfall 3 : Sobol non brouill\u00e9 en production<\/h3>\n<p>Les s\u00e9quences SOBOL non brouill\u00e9es ont une structure p\u00e9riodique. Pour les fonctions p\u00e9riodiques (tr\u00e8s courantes dans la propagation de l'incertitude), cela cr\u00e9e un biais syst\u00e9matique qui ne fait pas la moyenne avec plus d'\u00e9chantillons.<\/p>\n<p><strong>FIX&nbsp;:<\/strong> Utilisez toujours <code>scramble=True<\/code>. L'algorithme de brouillage d'Owen utilis\u00e9 dans <code>scipy.stats.qmc<\/code> produit des estimations presque impartiales.<\/p>\n<h3>Pitfall 4 : mal interpr\u00e9ter les intervalles de confiance QMC<\/h3>\n<p>Contrairement \u00e0 MC, QMC ne produit pas d'intervalles de confiance statistiquement valides par d\u00e9faut. Vous avez besoin de RQMC (QMC randomis\u00e9) avec plusieurs brouillages pour construire des intervalles valides.<\/p>\n<p><strong>Fixe&nbsp;:<\/strong> Ex\u00e9cutez k brouillages de la m\u00eame s\u00e9quence QMC et utilisez la variance de l'\u00e9chantillon entre les brouillages pour estimer les intervalles de confiance.<\/p>\n<h3>Pitfall 5 : Appliquer le LHS \u00e0 des intrants fortement corr\u00e9l\u00e9s<\/h3>\n<p>LHS suppose l'ind\u00e9pendance de la dimension. Si vos param\u00e8tres sont corr\u00e9l\u00e9s (par exemple, les propri\u00e9t\u00e9s des mat\u00e9riaux d\u00e9riv\u00e9es d'une distribution conjointe), LHS sur les marginaux ignore la structure de corr\u00e9lation.<\/p>\n<p><strong>Fix&nbsp;:<\/strong> Utilisez des LH \u00e0 base de copule ou transformez-les en coordonn\u00e9es ind\u00e9pendantes avant d'appliquer LHS.<\/p>\n<h2>Ce que nous recommandons<\/h2>\n<p>La s\u00e9lection de la bonne m\u00e9thode d'\u00e9chantillonnage n'est pas un probl\u00e8me unique. Voici notre cadre de d\u00e9cision pratique :<\/p>\n<h3>Quand utiliser un \u00e9chantillonnage hypercube latin<\/h3>\n<ul>\n<li><strong>Vous avez besoin d'un nombre d'\u00e9chantillons arbitraires<\/strong> et vous souhaitez des avantages de stratification<\/li>\n<li><strong>Vos dimensions sont \u2264&nbsp;15<\/strong> et vous ne pouvez pas garantir des pouvoirs de deux<\/li>\n<li><strong>Vous avez besoin d'une solution rapide et l\u00e9g\u00e8re d'impl\u00e9mentation<\/strong> - LHS est facile \u00e0 coder \u00e0 partir de z\u00e9ro<\/li>\n<li><strong>Votre fonction de simulation est mod\u00e9r\u00e9ment lisse<\/strong> \u2014 LHS g\u00e8re mieux les discontinuit\u00e9s que le Sobol non brouill\u00e9<\/li>\n<\/ul>\n<h3>Quand utiliser le SOBOL QMC brouill\u00e9<\/h3>\n<ul>\n<li><strong>Votre int\u00e9grand est fluide<\/strong> (diff\u00e9renci\u00e9, sans discontinuit\u00e9s fortes)<\/li>\n<li><strong>Vous pouvez utiliser n = 2^m<\/strong> Nombre d'\u00e9chantillons<\/li>\n<li><strong>Vous avez besoin du meilleur taux de convergence th\u00e9orique<\/strong> \u2014 O(N\u207b\u00b9) bat O(N\u207b\u00b9\u141f\u00b2)<\/li>\n<li><strong>Vous ex\u00e9cutez des campagnes UQ de production<\/strong> o\u00f9 le nombre d'\u00e9chantillons est limit\u00e9 par le budget de calcul<\/li>\n<\/ul>\n<h3>Quand utiliser Halton<\/h3>\n<ul>\n<li><strong>Vous avez besoin de nombres d'\u00e9chantillons arbitraires<\/strong> et ne pouvez pas utiliser LHS pour une raison quelconque<\/li>\n<li><strong>Vos dimensions sont \u2264&nbsp;10<\/strong> \u2014 Halton fonctionne bien dans des dimensions basses<\/li>\n<li><strong>Vous prototypez<\/strong> et avez besoin d'une s\u00e9quence rapide sans tables<\/li>\n<\/ul>\n<h3>Quand utiliser Monte Carlo standard<\/h3>\n<ul>\n<li><strong>Votre fonction a de fortes discontinuit\u00e9s<\/strong> et vous ne pouvez pas vous d\u00e9mener<\/li>\n<li><strong>Vos dimensions d\u00e9passent 25<\/strong> \u2014 Toutes les m\u00e9thodes LDS se d\u00e9gradent et la simplicit\u00e9 de MC gagne<\/li>\n<li><strong>Vous avez besoin d'intervalles de confiance statistiquement valides<\/strong> sans escroquer les frais g\u00e9n\u00e9raux<\/li>\n<li><strong>Votre fonction est extr\u00eamement irr\u00e9guli\u00e8re<\/strong> - la structure SOBOL\/LHS peut ajouter des biais<\/li>\n<\/ul>\n<h3>Une r\u00e8gle pratique<\/h3>\n<p>Pour la plupart des flux de travail de simulation scientifique dans 3 \u00e0 20 dimensions avec des mod\u00e8les de transfert fluides, <strong>Sobol QMC brouill\u00e9 avec n = 2^12 \u00e0 2^15 \u00e9chantillons<\/strong> est le point id\u00e9al. Il vous donne une r\u00e9duction de variance de 10 \u00e0 100&nbsp;\u00d7 sur le Monte Carlo standard \u00e0 un nombre d'\u00e9chantillons qui se termine en heures plut\u00f4t qu'en jours sur un seul n\u0153ud.<\/p>\n<h2>R\u00e9sum\u00e9 et \u00e9tapes suivantes<\/h2>\n<p>Les m\u00e9thodes de Monte Carlo pour les simulations scientifiques ne consistent pas seulement \u00e0 dessiner des nombres al\u00e9atoires. Le choix de la strat\u00e9gie d'\u00e9chantillonnage - Hypercube latin, s\u00e9quences SOBOL ou Halton - d\u00e9termine si votre campagne UQ est efficace ou inutile.<\/p>\n<p>Les principales informations sont :<\/p>\n<ul>\n<li><strong>Diversit\u00e9 d'\u00e9cart<\/strong>&nbsp;: les s\u00e9quences \u00e0 faible \u00e9cart couvrent l'espace des param\u00e8tres beaucoup plus uniform\u00e9ment que les points al\u00e9atoires<\/li>\n<li><strong>Le brouillage est essentiel<\/strong> pour la production SOBOL afin d'\u00e9viter les biais syst\u00e9matiques<\/li>\n<li><strong>Les pouvoirs de deux<\/strong> sont optimaux pour SOBOL \u2014 Concevez votre \u00e9chantillon de budget en cons\u00e9quence<\/li>\n<li><strong>Taux de convergence QMC<\/strong> de O(n\u207b\u00b9) pour des fonctions fluides en font le choix par d\u00e9faut pour la plupart des flux de travail de simulation<\/li>\n<\/ul>\n<p>Notre <a href=\"https:\/\/matforge.org\/monte-carlo-methods-for-scientific-simulations\/\" target=\"_blank\" rel=\"nofollow noopener\">M\u00e9thodes de Monte Carlo pour les simulations scientifiques<\/a> Le guide fournit une introduction plus large aux approches de Monte Carlo. Cet article zoome sur les m\u00e9thodes de faible \u00e9cart qui vous donnent le plus d'efficacit\u00e9 par \u00e9chantillon.<\/p>\n<p>Pour un d\u00e9ploiement pratique, int\u00e9grez les mod\u00e8les de code QMC ci-dessus dans vos scripts de campagne de simulation. Commencez par n = 2 ^ 12, \u00e9valuez la convergence en surveillant la variance de l'estimateur et mettez \u00e0 l'\u00e9chelle jusqu'\u00e0 2 ^ 15 si votre budget le permet. Les r\u00e9sultats parleront d'eux-m\u00eames.<\/p>\n<h2>Guides connexes<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/uncertainty-quantification-sensitivity-analysis-scientific-simulation\/\" target=\"_blank\" rel=\"nofollow noopener\">Quantification de l'incertitude et analyse de sensibilit\u00e9 dans la simulation scientifique<\/a> \u2014 Contexte UQ plus large incluant les indices SOBOL et la sensibilit\u00e9 bas\u00e9e sur la variance<\/li>\n<li><a href=\"https:\/\/matforge.org\/monte-carlo-methods-for-scientific-simulations\/\" target=\"_blank\" rel=\"nofollow noopener\">M\u00e9thodes de Monte Carlo pour les simulations scientifiques : A Guide Python<\/a> \u2014 Couverture de Monte-Carlo plus large, y compris l'\u00e9chantillonnage d'importance et les m\u00e9thodes adaptatives<\/li>\n<li><a href=\"https:\/\/matforge.org\/verification-vs-validation-in-scientific-simulations-a-practical-guide\/\" target=\"_blank\" rel=\"nofollow noopener\">V\u00e9rification vs validation Dans les simulations scientifiques&nbsp;: un guide pratique<\/a> \u2014 Comment v\u00e9rifier que vos r\u00e9sultats UQ sont num\u00e9riquement corrects<\/li>\n<li><a href=\"https:\/\/matforge.org\/reproducible-parameter-sweeps-designing-simulation-campaigns-for-publication\/\" target=\"_blank\" rel=\"nofollow noopener\">Am\u00e9lioration des param\u00e8tres reproductibles&nbsp;: conception de campagnes de simulation pour publication<\/a> \u2014 Meilleures pratiques de documentation et de reproductibilit\u00e9 pour les campagnes d'\u00e9chantillonnage<\/li>\n<\/ul>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ol>\n<li>Kucherenko, M. et al. \"Utilisation des s\u00e9quences latines d'hypercube et de Sobol pour la quantification de l'incertitude.\" arxiv&nbsp;:1505.02350, 2015. <a href=\"https:\/\/arxiv.org\/abs\/1505.02350\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/arxiv.org\/abs\/1505.02350<\/a><\/li>\n<li>Chrisman, E. \"Comparaison PI Day&nbsp;: Monte Carlo vs. Latin&nbsp;Hypercube vs Sobol Sampling.\" Analytica, 2022. <a href=\"https:\/\/analytica.com\/blog\/pi-day-comparison-monte-carlo-vs-latin-hypercube-vs-sobol-sampling\/\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/analytica.com\/blog\/pi-day-comparison-monte-carlo-vs-latin-hypercube-vs-sobol-sampling\/<\/a><\/li>\n<li>Scipy. \"Quasi-Monte Carlo R\u00e9f\u00e9rence d'\u00e9chantillonnage.\" <a href=\"https:\/\/docs.scipy.org\/doc\/scipy\/reference\/stats.qmc.html\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/docs.scipy.org\/doc\/scipy\/reference\/stats.qmc.html<\/a><\/li>\n<li>Scipy. \"Tutoriel Quasi-Monte Carlo.\" <a href=\"https:\/\/scipy.github.io\/devdocs\/tutorial\/stats\/quasi_monte_carlo.html\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/scipy.github.io\/devdocs\/tutorial\/stats\/quasi_monte_carlo.html<\/a><\/li>\n<li>QMCSoftware. \"Documentation QMCSoftware.\" <a href=\"https:\/\/qmcsoftware.github.io\/QMCSoftware\/\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/qmcsoftware.github.io\/qmcsoftware\/<\/a><\/li>\n<li>Dictionnaire Helmholtz-UQ. \"M\u00e9thodes Quasi-Monte Carlo.\" <a href=\"https:\/\/dictionary.helmholtz-uq.de\/content\/quasi_montecarlo_methods.html\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/dictionary.helmholtz-uq.de\/content\/quasi_montecarlo_methods.html<\/a><\/li>\n<li>NDCBE. \"Carnet de cours quantification de l'incertitude bas\u00e9 sur l'\u00e9chantillonnage.\" <a href=\"https:\/\/ndcbe.github.io\/cbe67701-uncertainty-quantification\/07.01-Sampling-Based-Uncertainty-Quantification.html\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/ndcbe.github.io\/cbe67701-Uncertainty-quantification\/07.01-sampling-based-uncertainty-quantification.html<\/a><\/li>\n<\/ol>\n"},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 11<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Plong\u00e9e en profondeur sur l&rsquo;\u00e9chantillonnage latin des hypercubes, les s\u00e9quences de SOBOL et les m\u00e9thodes quasi-Monte Carlo pour les simulations scientifiques. Apprenez la th\u00e9orie, la mise en \u0153uvre de Python et quand les utiliser.<\/p>\n","protected":false,"raw":"Plong\u00e9e en profondeur sur l'\u00e9chantillonnage latin des hypercubes, les s\u00e9quences de SOBOL et les m\u00e9thodes quasi-Monte Carlo pour les simulations scientifiques. Apprenez la th\u00e9orie, la mise en \u0153uvre de Python et quand les utiliser."},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"fr_FR","_original_post":"https:\/\/matforge.org\/?p=537","iawp_total_views":1,"footnotes":""},"categories":[2],"tags":[5,6,4],"class_list":["post-1219","post","type-post","status-publish","format-standard","hentry","category-fipy-documentation-examples-development","tag-fipy","tag-lithium-ion","tag-simulation","fr-FR"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>M\u00e9thodes UQ de Monte Carlo : Hypercube latine, Sobol et Quasi-Monte Carlo - matforge.org<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"M\u00e9thodes UQ de Monte Carlo : Hypercube latine, Sobol et Quasi-Monte Carlo - matforge.org\" \/>\n<meta property=\"og:description\" content=\"Reading Time:  11 minutesPlong\u00e9e en profondeur sur l&#039;\u00e9chantillonnage latin des hypercubes, les s\u00e9quences de SOBOL et les m\u00e9thodes quasi-Monte Carlo pour les simulations scientifiques. Apprenez la th\u00e9orie, la mise en \u0153uvre de Python et quand les utiliser.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-21T14:28:44+00:00\" \/>\n<meta name=\"author\" content=\"steven\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"steven\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/monte-carlo-uhq-methods-lhs-sobol-quasi\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/monte-carlo-uhq-methods-lhs-sobol-quasi\\\/\"},\"author\":{\"name\":\"steven\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/8f690fb596d657b12994b83caa788f03\"},\"headline\":\"M\u00e9thodes UQ de Monte Carlo : Hypercube latine, Sobol et Quasi-Monte Carlo\",\"datePublished\":\"2026-08-21T14:28:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/monte-carlo-uhq-methods-lhs-sobol-quasi\\\/\"},\"wordCount\":3103,\"commentCount\":0,\"keywords\":[\"FiPy\",\"lithium-ion\",\"simulation\"],\"articleSection\":[\"FIPY : documentation, exemples &amp; D\u00e9veloppement\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/monte-carlo-uhq-methods-lhs-sobol-quasi\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/monte-carlo-uhq-methods-lhs-sobol-quasi\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/fr\\\/monte-carlo-uhq-methods-lhs-sobol-quasi\\\/\",\"name\":\"M\u00e9thodes UQ de Monte Carlo : Hypercube latine, Sobol et Quasi-Monte Carlo - matforge.org\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-08-21T14:28:44+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/8f690fb596d657b12994b83caa788f03\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/monte-carlo-uhq-methods-lhs-sobol-quasi\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/monte-carlo-uhq-methods-lhs-sobol-quasi\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/monte-carlo-uhq-methods-lhs-sobol-quasi\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"M\u00e9thodes UQ de Monte Carlo : Hypercube latine, Sobol et Quasi-Monte Carlo\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\",\"url\":\"https:\\\/\\\/matforge.org\\\/\",\"name\":\"matforge.org\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/matforge.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/8f690fb596d657b12994b83caa788f03\",\"name\":\"steven\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g\",\"caption\":\"steven\"},\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/steven\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"M\u00e9thodes UQ de Monte Carlo : Hypercube latine, Sobol et Quasi-Monte Carlo - matforge.org","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/","og_locale":"fr_FR","og_type":"article","og_title":"M\u00e9thodes UQ de Monte Carlo : Hypercube latine, Sobol et Quasi-Monte Carlo - matforge.org","og_description":"Reading Time:  11 minutesPlong\u00e9e en profondeur sur l'\u00e9chantillonnage latin des hypercubes, les s\u00e9quences de SOBOL et les m\u00e9thodes quasi-Monte Carlo pour les simulations scientifiques. Apprenez la th\u00e9orie, la mise en \u0153uvre de Python et quand les utiliser.","og_url":"https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/","og_site_name":"matforge.org","article_published_time":"2026-08-21T14:28:44+00:00","author":"steven","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"steven","Dur\u00e9e de lecture estim\u00e9e":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/"},"author":{"name":"steven","@id":"https:\/\/matforge.org\/#\/schema\/person\/8f690fb596d657b12994b83caa788f03"},"headline":"M\u00e9thodes UQ de Monte Carlo : Hypercube latine, Sobol et Quasi-Monte Carlo","datePublished":"2026-08-21T14:28:44+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/"},"wordCount":3103,"commentCount":0,"keywords":["FiPy","lithium-ion","simulation"],"articleSection":["FIPY : documentation, exemples &amp; D\u00e9veloppement"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/","url":"https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/","name":"M\u00e9thodes UQ de Monte Carlo : Hypercube latine, Sobol et Quasi-Monte Carlo - matforge.org","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-08-21T14:28:44+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/8f690fb596d657b12994b83caa788f03"},"breadcrumb":{"@id":"https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/fr\/monte-carlo-uhq-methods-lhs-sobol-quasi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/"},{"@type":"ListItem","position":2,"name":"M\u00e9thodes UQ de Monte Carlo : Hypercube latine, Sobol et Quasi-Monte Carlo"}]},{"@type":"WebSite","@id":"https:\/\/matforge.org\/#website","url":"https:\/\/matforge.org\/","name":"matforge.org","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/matforge.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/8f690fb596d657b12994b83caa788f03","name":"steven","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d46cfcd83a298f27e8d66bfa035514fefca7652f26bd3ef7402f82b68a41ec0f?s=96&d=mm&r=g","caption":"steven"},"url":"https:\/\/matforge.org\/author\/steven\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1219","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=1219"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1219\/revisions"}],"predecessor-version":[{"id":1371,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1219\/revisions\/1371"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=1219"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=1219"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=1219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}