Spaces:
Runtime error
Runtime error
File size: 9,881 Bytes
77a0a72 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | <!--
VÉRIFICATION (2026-06-12, contre app/corpus/*.py + 222 exemples livrés) :
• Les 41 fonctions _bis de ce catalogue sont TOUTES présentes dans le corpus
embarqué (généralistes / analyse / alg. lin. / proba) ✅.
• pxs_Interval (Classes_Extensions.py), pxs_construct_RREF, pxs_gauss_jordan
sont présents (le catalogue en doutait) ✅.
• NON présents dans le corpus embarqué (runtime plateforme uniquement —
à n'utiliser que si la plateforme les charge) : myst, pxsl_mat (alias),
indi_l_r_symb, pxs_round, Poly_with_random_coef.
• ⚠️ DIVERGENCE catalogue ↔ corpus livré : le §0 recommande `pxsl_latex` et
« jamais latex() brut ». Or les 222 exemples LIVRÉS de la plateforme
utilisent `latex(expr, **config_standard)` 126 fois et `pxsl_latex(` 0 fois.
→ L'app garde `latex(expr, **config_standard)` comme voie PAR DÉFAUT pour
toute sortie scalaire/expression (c'est la forme prouvée VERTE au harnais et
celle que produit l'auto-lift). `pxsl_latex` reste disponible mais n'est PAS
le défaut. Pour les MATRICES / SYSTÈMES / PROBA / IBP : utiliser les helpers
dédiés ci-dessous (le corpus livré ne contient aucun exemple de ces domaines,
donc le LLM doit s'appuyer sur ces signatures plutôt que coder à la main).
• Doc en ligne : https://scripts.doc.pyxiscience.com/
-->
# PyxiScience — Catalogue des fonctions (helpers à utiliser DANS le bloc Python)
> Workflow : scanner l'exercice → identifier le domaine (analyse / algèbre
> linéaire / proba / formatage) → récupérer ici les fonctions utiles et leur
> signature exacte AVANT d'écrire du code. **Tout affichage passe par un helper
> du catalogue appelé dans le bloc Python, résultat rangé dans une variable
> `…Aff` injectée nue.** Ne jamais réimplémenter une fonction qui existe ici.
## 0. Conventions critiques
- **Expression/scalaire → `latex(expr, **config_standard)`** (voie par défaut,
prouvée sur le corpus livré). `pxsl_latex(expr)` existe (convention maison,
réordonne si `reverse=True`) mais n'est pas le défaut. **Matrice →
`pxsl_matrix(...)`. Résultat numérique → `pxsl_res_num(...)`.**
- **`config_standard = pxs_config()`** en tête de bloc, puis `**config_standard`
passé à `latex(...)` (notation `ln`, séparateur FR `,`, ordre des termes).
`**config_standard` est réservé à `latex()` — **jamais** sur un helper `pxsl_*`.
- **Nom Python réservé** : `total` interdit → `nb_total`.
- **Ne jamais concaténer un signe** : construire la chaîne complète
(`pxsl_latex_coefficient(c, sign=True)`) puis injecter la variable seule.
## 2. Briques quasi toujours utiles
1. `pxs_config()` → `config_standard`.
2. `latex(expr, **config_standard)` → toute sortie scalaire/expression.
3. `pxsl_latex_coefficient(c, sign=, ones=)` → coefficients signés sans `1·x`/`+0`.
4. `pxsl_res_num(x, dec=, egal=)` → résultat numérique formaté (`= 0,2354`, `23,54 %`).
5. `pxsl_pow(x, n)` → puissance avec parenthèses si base négative/irrationnelle.
## 4. Généralistes — formatage & LaTeX (`Mes_fctions_generalistes_bis.py`)
- **`pxs_config()`** → dict d'options LaTeX (ln, virgule FR, ordre). `**config_standard`.
- **`latex(expr, **config_standard)`** — voie par défaut. `pxsl_latex(expr, reverse=False)`
= variante maison (réordonne du degré faible au fort si `reverse=True`).
- **`pxsl_sign(expr)`** → `'+'` / `'-'` / `''`. Construire un signe à part AVANT injection.
- **`pxsl_format_number(n)`** → milliers en espaces fines, gère `±∞`. (Aucun kwarg — pas d'arrondi, arrondir avant.) `pxsl_format_number(1234)`→`'1\ 234'`.
- **`pxsl_latex_with_formatting(expr, sign=False, display=True)`** → `latex()` + milliers (≥1000), y compris dans les fractions.
- **`pxsl_latex_coefficient(coeff, variable=None, sign=False, zeros=True, ones=False, display=True)`** → gère `1`→`''`, `-1`→`'-'` (ou `'-1'` si `ones=True`), signe explicite. Alias `lc`.
- **`pxsl_to_rational_or_symbol(value)`** → `Rational` SymPy précis (via Fraction) ; laisse un Symbol.
- **`pxsl_solve_general_inequality(a=1, b=0, c=0, variable='x', inequality='>=', domain='R', power=1, sign_a=None)`** → résout `a·x^p+b ⋛ c` (p=1 ou 2) + rédaction LaTeX complète. Retour `(solution_set, latex_reasoning)`.
- **`pxsl_Rational(num, den, orientation='v', display=True)`** → fraction « propre » `π/2`, `x/2` (simplifie le numérique, garde le symbolique). ⚠️ ZeroDivisionError si den=0.
- **`pxs_is_reductible_sqrt(x)`** → bool (carré parfait sous la racine).
- **`pxs_separate_factors(expr, var)`** → `(indépendants de var, dépendants de var)`.
## 5. Analyse — intégration par parties (`Mes_fctions_d_analyse_bis.py`)
- **`pxs_explain_IBP(var=Symbol('x'), f1=None, f2=None, type_int='udv', a=None, b=None, nb_IBP=1, intro=True, conclude=True)`** → **rédaction LaTeX complète** d'un calcul par IPP (intégrale définie `a,b` ou primitive ; une ou deux IPP). Pour « calculer ∫ u·v′ par IPP ». `type_int='udv'`/`'vdu'`. Retour `str` LaTeX prêt à injecter.
Ex. `ipp = pxs_explain_IBP(f1=x, f2=exp(x), type_int='udv', a=0, b=1)` → `{{ipp}}`.
- **`pxsl_par(expr, minus=False, add=False)`** → parenthèses si l'expression commence par `-` ou est une somme (`Add`). Sécurise un facteur.
- **`pxsl_final_sentence(sol, a, b, var, mult, *args)`** → phrase finale d'une IPP multi-étapes.
## 6. Algèbre linéaire — matrices & systèmes (`Mes_fctions_d_alg_lineaire_bis.py`)
> `pxsl_*` AFFICHENT (LaTeX) ; `pxs_*` GÉNÈRENT/CALCULENT. `sepG`/`sepD` =
> délimiteurs (`'('`/`')'` défaut ; `'|'`/`'|'` pour un déterminant).
- **`pxsl_pow(x, n=1, opt=0, displaystyle=True)`** → `x^n` avec parenthèses si base négative/irrationnelle. `pxsl_pow(-3,2)`→`'\left(-3\right)^{2}'`.
- **`pxsl_matrix(A, sepG='(', sepD=')', display=False)`** → matrice LaTeX (nombres alignés à droite) ; `'|','|'` → déterminant.
- **`pxsl_sum_matrix(A, B, s='+')`** → détail case par case de `A±B`.
- **`pxsl_prod_scalar_matrix(lamb, A, mult='times')`** → détail de `λ·A`.
- **`pxsl_prod_matrix(A, B, mult='times')`** → détail du produit `A·B`.
- **`pxsl_ax(a, x=Symbol('x'), sign=' ', frac=True)`** → `ax` en gérant `a=0/1/−1` ; `x` symbole quelconque (`L_{1}`).
- **`pxsl_system_lin(A, B, x='x')`** → système `Ax=B` en forme accolade.
- **`pxsl_double_matrix(A, B, opt='sep')`** → `A` et `B` côte à côte (`'sep'`) ou matrice augmentée (`'ext'`).
- **`pxsl_lines_op(n, listOp, opt='sys')`** → opération `L_{i} ← a·L_{i}+b·L_{j}` depuis `listOp=[a,i,b,j]`.
- **`pxsl_resol_system(listA, listB=[], listOp=[], x='x', method='sys', view='sep')`** → chaque étape d'une élimination (`method` : `'sys'`/`'mat'`/`'ech'`).
- **`pxs_steps_invert_matrix(A, B, method='sys')`** → résolution de système (`B`) ou **inversion** (`B=eye(n)`, `method='mat'`), rédaction LaTeX complète.
- **`pxs_compute_ech(A)` / `pxs_compute_ech_reduite(A)`** → forme échelonnée / **RREF** avec étapes en LaTeX. (Équivalents de `pxs_construct_RREF`.)
- **`pxs_system_simpl(n=3, opt='sys', max_coef=2, limit_sum=15)`** → génère `(A, B)` d'un système `Ax=B` à solution entière simple.
- **`pxs_commute_matrix(n, opt='')`** → `(A,B)` qui commutent et `(A,C)` qui non.
- **`pxsl_pow_matrix(A, k)`** → chaque coefficient élevé à la puissance `k`.
- **`pxs_invertible_matrix(n)`** / **`pxs_diag_matrix(p, a, b)`** / **`randmatrixrect(p, q, a, b)`** → matrice inversible / diagonale / rectangulaire aléatoire (coeffs entiers).
## 7. Probabilités — variables aléatoires finies (`Mes_fctions_probabilistes_bis.py`)
> v.a. finies SymPy (`stats.FiniteRV`). `pxsl_*` affichent ; `pxs_*` construisent.
- **`pxs_finiterv(x, val, prob)`** → v.a. `x` de valeurs `val` et probas `prob`. Ex. `X = pxs_finiterv('X', [0,1,2], [Rational(1,4),Rational(1,2),Rational(1,4)])`.
- **`pxsl_law(textx, textprob, X, frac='', nzero=True)`** → tableau de loi (valeurs / probas) en LaTeX. `textx`/`textprob` = en-têtes.
- **`pxsl_moment(X, n=1, prod='times')`** → calcul détaillé de `E[Xⁿ]` (espérance/variance).
- **`pxsl_scalar_product(a, b, prod='times')`** → calcul de `a·b = Σ aᵢbᵢ`.
- **`pxs_simul_law(n, type_proba='dec', prec=0.01)`** → simule une loi discrète de taille n.
- **`pxs_fct_finiterv(f, X)`** → v.a. `Y = f(X)`. Ex. `Y = pxs_fct_finiterv(lambda t: t**2, X)`.
- **`pxsl_res_num(x, dec=4, pourc=False, text=False, egal=True, dot=True)`** → résultat numérique (`= 0,2354`, `23,54 %`). `egal=False` retire le préfixe.
- **`pxsl_sum_vector(x)`** → `Σ xᵢ` en LaTeX.
- **`pxs_nvirgzero(x)`** → supprime `.0` d'un float entier (tolérance 1e-10).
- **`pxsl_pow(...)`** aussi présent ici (identique à §6).
## 8. Utilitaires complémentaires (présence runtime à vérifier)
⚠️ NON présents dans le corpus embarqué — ne les utiliser que si la plateforme
les charge au runtime (sinon coder l'équivalent à la main) :
- **`indi_l_r_symb(l, alpha, beta, r)`** → fonction indicatrice symbolique `1_{[α,β]}`. `f = indi_l_r_symb('[',0,1,']'); f(x)`.
- **`pxs_round(x, ndigits=0)`** → arrondi « calculatrice » (half-up, pas banker's). `pxs_round(0.125,2)`→`0.13`.
- **`Poly_with_random_coef(symbol, deg, constant_coef)`** → polynôme aléatoire (coeffs `[-9,9]`) + LaTeX croissant/décroissant.
## 3. Primitives plateforme (référencées, non dans ces modules)
- **`{{ var }}`** — interpolation MyST (un nom de variable nu, voir règles).
- **`myst(...)`** — rendu plateforme (stubbé en local). Les `\fr{}\en{}` legacy ne
rendent pas → utiliser `` {fr}`…`{en}`…` ``.
- **`pxsl_mat(...)`** — alias plateforme ; équivalent présent = **`pxsl_matrix`**.
- **`pxs_Interval(...)`** — affichage d'intervalle (présent dans Classes_Extensions.py).
|