Mathématiques avancées : fonctions et limites
Cette page résume les mathématiques avancées de Varlig Calc : listes, vecteurs et matrices, nombres complexes, sommes et produits, résolution d’équations et calcul différentiel et intégral. Pour chaque fonction, elle précise le rôle, les entrées acceptées, l’exactitude des résultats et les limites. Consultez-la pour vérifier les détails lorsqu’un résultat vous surprend.
Pour des introductions avec davantage d’exemples, voir Listes et statistiques, Vecteurs et matrices, Nombres complexes et Sommes, équations, dérivées et intégrales.
En un coup d’œil
| Fonctionnalité | Exemple | Réponse |
|---|---|---|
| Liste | [1, 2+3, 4*2] |
[1, 5, 8] |
| Élément d’une liste | [10, 20, 30][1] |
20 |
| Élément d’une liste imbriquée | [[1,2],[3,4]][1][0] |
3 |
| Total des quantités | sum([1 kg, 500 g]) |
1.5 kg |
| Statistiques | average([1,2,3]), median([5,1,3]) |
2, 3 |
| Suite décroissante | range(5, 1, -2) |
[5, 3, 1] |
| Addition de listes | [1,2] + [3,4] |
[4, 6] |
| Produit matriciel | [[1,2],[3,4]] * [[1,0],[0,1]] |
[[1, 2], [3, 4]] |
| Inverse | inverse([[1,2],[3,4]]) |
[[-2, 1], [1.5, -0.5]] |
| Déterminant | det([[1,2],[3,4]]) |
-2 |
| Transposée | transpose([[1,2],[3,4]]) |
[[1, 3], [2, 4]] |
| Système linéaire | solve_system([[2,1],[1,2]], [34,29]) |
[13, 8] |
| Arithmétique complexe | (2+3i) * (2-3i) |
13 |
| Racine carrée complexe | sqrt(complex(-4,0)) |
2i |
| Valeur la plus fréquente | mode([1,2,2,3]) |
2 |
| Centile | percentile([1,2,3,4],25) |
1.75 |
| Écart-type de la population | population_stddev([1,2,3,4]) |
1.1180339887 |
| Somme sur une plage | sum(k^2, k, 1, 10) |
385 |
| Produit sur un intervalle | product(k, k, 1, 5) |
120 |
| Résoudre une équation de façon exacte | solve(x^2 - 5x + 6 = 0) |
[2, 3] |
| Résoudre une équation sur un intervalle | solve(x^2 = 4, x, 0, 3) |
2 |
| Dérivée symbolique | differentiate(sin(x), x) |
cos(x) |
| Dérivée en un point | derivative(x^3, x, 2) |
12 |
| Intégrale définie | integrate(x^2, x, 0, 3) |
9 |
Les listes, matrices et nombres complexes sont des valeurs comme les autres. Vous pouvez les nommer et les transmettre à vos propres fonctions ; ils se recalculent si vous modifiez une ligne précédente.
squares(n) = sum(k^2, k, 1, n)squares(3) donne 14first(items) = items[0]first([10, 20]) donne 10root(y) = solve(x^2 = y, x, 0, 10)root(9) donne 3Garanties du moteur de calcul
Une règle s’applique à toute cette page : un calcul produit soit un résultat que Varlig peut garantir, soit une erreur expliquant pourquoi il n’y parvient pas. Il ne remplace jamais discrètement un calcul exact par un nombre simplement plausible.
Exactitude des résultats
| Mode de calcul | Ce que cela couvre |
|---|---|
| Fractions exactes | Coefficients d’une équation et racine d’une équation linéaire ; racines d’une équation du second degré dont le discriminant est un carré parfait ; opérations matricielles +, -, *, multiplication par un nombre, transpose, det, inverse, rank et solve_system ; median, mode, modes, percentile, quartile et les trois variances |
| Racine carrée décimale | stddev, sample_stddev, population_stddev et les racines des autres équations du second degré |
| Virgule flottante binaire | eigenvalues, qr, lu, svd, integrate et la forme de solve à quatre arguments |
Exact signifie exact : aucun arrondi n’intervient entre l’interprétation de la ligne et l’affichage du résultat. Un résultat exact le reste donc lorsqu’il est nommé, enregistré et réutilisé. Un résultat approché est un nombre décimal de précision limitée, comme ceux renvoyés par sqrt. Son dernier chiffre affiché ne garantit pas un arrondi correct : comparer deux résultats approchés avec == n’est donc pas fiable. solve(x^2 - 2 = 0) et sqrt(2) affichent tous deux 1.4142135624, sans être égaux.
Un même résultat ne mélange jamais valeurs exactes et approchées. Si le discriminant d’une équation du second degré n’est pas un carré parfait, ses deux racines sont approchées.
Unités
| Opération | Règle |
|---|---|
| Matrices | Nombres simples uniquement ; unités, montants monétaires et éléments complexes refusés |
| Équations | Des nombres simples seulement, des deux côtés |
median, mode, modes, percentile, quartile, stddev, population_stddev |
Des quantités de même dimension ou des nombres simples. Les unités compatibles sont converties dans l’unité de la première valeur, que le résultat conserve |
variance, sample_variance, population_variance |
Nombres simples uniquement : la variance élève les observations au carré et ne conserve aucune unité |
Mélanger des valeurs avec et sans unité produit une erreur, au lieu d’ignorer silencieusement les unités. Une exception historique subsiste : un simple 0 prend l’unité des autres valeurs.
Cas refusés
Aucun des cas suivants ne renvoie de nombre ni de phrase. Chacun produit une erreur précisant l’opération impossible et, lorsqu’elle existe, l’écriture prise en charge à utiliser :
- Une équation polynomiale de degré supérieur à 2, une équation non polynomiale, une inconnue au dénominateur ou en exposant, deux noms sans valeur, une équation sans inconnue ou contenant des unités ou des montants monétaires. Chaque erreur renvoie vers la forme numérique de
solveà quatre arguments. - Une équation sans racine réelle produit une erreur au lieu de renvoyer une racine complexe ; une équation satisfaite par toutes les valeurs produit une erreur au lieu d’en choisir une.
- Une opération matricielle avec des dimensions incompatibles ou non carrées, l’inversion d’une matrice singulière ou une entrée qui n’est pas un nombre sans unité.
modesur une liste sans répétition ou avec plusieurs valeurs ex æquo ; un centile hors de l’intervalle 0–100 ; un quartile hors de 0–4 ; toute statistique autre quesum,productetcountsur une liste vide.
Les opérations suivantes ne sont volontairement prises en charge nulle part : réarrangement symbolique au-delà du regroupement des coefficients polynomiaux, systèmes non linéaires, racines complexes d’une équation réelle, matrices d’unités ou de montants monétaires, intégration symbolique et tracé de courbes.
Les messages eux-mêmes sont répertoriés dans Erreurs, diagnostics et limites.
Écrire des listes et des fonctions mathématiques
- Les virgules séparent les éléments et les arguments. Une virgule suivie d’une espace sépare toujours les valeurs ; une virgule suivie d’exactement trois chiffres peut regrouper les milliers. Ainsi,
[1,200, 1,800]contient deux éléments. Sans espaces, les virgules séparent les éléments, comme dans[12,-51,4]. En cas d’ambiguïté, comme dans[1,234], l’erreur propose les deux écritures possibles. Utilisez un point pour la partie décimale. - Les matrices sont des listes de lignes, comme
[[1,2],[3,4]]. L’écriture abrégée avec point-virgule, telle que[1,2;3,4], n’est pas prise en charge. - Les indices commencent à 0 et doivent être des entiers positifs ou nuls. Un indice dépassant la fin de la liste produit une erreur : il ne revient pas au début et n’est pas réduit pour entrer dans les limites.
- Le nombre d’arguments est vérifié.
sqrt(4,9)produit une erreur au lieu de tenter une interprétation.
Listes et statistiques
Ces fonctions acceptent une liste : length ou count, sum, product, average ou mean, median, min, max, mode et modes, percentile et quartile, ainsi que les fonctions de dispersion variance, sample_variance, population_variance, stddev, sample_stddev et population_stddev.
moderenvoie un résultat uniquement lorsqu’une valeur est strictement plus fréquente que toutes les autres. Une égalité ou une liste sans répétition produit une erreur suggérantmodes,medianouaverage.modesrenvoie toutes les valeurs les plus fréquentes.percentile(list, rank)accepte un rang de 0 à 100 et utilise une interpolation linéaire entre les deux rangs voisins, selon la définition inclusive : le 50e centile est la médiane, et les centiles 0 et 100 sont le minimum et le maximum.quartile(list, k)accepte un entierkde 0 à 4 et équivaut àpercentile(list, 25k).varianceetstddevutilisent les formules d’échantillon, avec une division parn - 1et au moins deux valeurs.population_varianceetpopulation_stddevdivisent parnet nécessitent au moins une valeur.sample_varianceetsample_stddevsont les noms longs des deux premières fonctions.- Une liste vide a une
sumde 0, unproductde 1 et uncountde 0. Les autres statistiques d'une liste vide sont des erreurs. - Deux listes de même longueur s’additionnent et se soustraient élément par élément. Vous pouvez multiplier ou diviser une liste par un nombre, et comparer deux listes avec
==. range(start, end, step)inclut les deux bornes. Le pas est facultatif.dot(a, b)calcule le produit scalaire de deux vecteurs réels.
spend = [420, 385, 510, 460] donne [420, 385, 510, 460]sum(spend) donne 1,775average(spend) donne 443.75median(spend) donne 440spend[0] donne 420spend * 1.1 donne [462, 423.5, 561, 506]range(0, 1, 0.25) donne [0, 0.25, 0.5, 0.75, 1]Transformations de listes
| Appel | Réponse | Effet |
|---|---|---|
sort([3,1,2]) |
[1, 2, 3] |
Trie les nombres sans unités dans l'ordre croissant ; les éléments égaux conservent leur ordre |
reverse([1,2,3]) |
[3, 2, 1] |
Inverse n'importe quelle liste |
unique([3,1,3,2]) |
[3, 1, 2] |
Conserve la première occurrence de chaque valeur ; les éléments doivent correspondre exactement, unités comprises |
slice([10,20,30,40], 1, 3) |
[20, 30] |
Prend les éléments depuis l’indice de début inclus jusqu’à l’indice de fin exclu |
map(x^2, x, [1,2,3]) |
[1, 4, 9] |
Évalue l’expression pour chaque élément |
filter(x > 1, x, [1,2,3]) |
[2, 3] |
Garde les éléments où la condition est vraie |
variance([1,2,3]) |
1 |
Variance exacte d’échantillon, avec division par le nombre de valeurs moins un |
sliceexige des indices entiers respectant 0 ≤ début ≤ fin ≤ longueur de la liste. Toute autre combinaison de bornes produit une erreur.variancenécessite au moins deux nombres sans unités.mapetfilterprennent d'abord l'expression, puis le nom à utiliser pour chaque élément, puis la liste. Le nom ne s'applique qu'à l'intérieur de l'appel, il ne modifie donc pas un nom que vous avez défini ailleurs. L'expression dansfilterdoit donnertrueoufalse.
Vecteurs et matrices
Les vecteurs sont des listes plates et les matrices sont des listes de lignes. Les matrices doivent être rectangulaires, contenir des nombres réels sans unités et avoir de 1 à 32 lignes et colonnes.
| Fonction | Effet |
|---|---|
A * B |
Produit matriciel ; le nombre de colonnes de A doit être égal au nombre de lignes de B |
transpose(A) |
Échange des lignes et des colonnes |
shape(A) |
[rows, columns] |
identity(n) |
Une matrice identité de taille n par n |
trace(A) |
Somme de la diagonale d'une matrice carrée |
det(A) |
Déterminant d'une matrice carrée |
inverse(A) |
Inverse d’une matrice carrée ; une matrice singulière produit une erreur |
rank(A) |
Rang obtenu par élimination exacte, pour toute matrice rectangulaire |
dot(a, b) |
Produit scalaire de deux vecteurs de même longueur |
cross(a, b) |
Produit vectoriel de deux vecteurs à trois éléments |
solve_system(A, b) |
Résout A*x = b pour une matrice carrée A et un vecteur b représenté par une liste simple |
eigenvalues(A) |
Valeurs propres d'une matrice carrée réelle, y compris les paires complexes, sans ordre défini |
qr(A) |
[Q, R], où Q*R est approximativement égal à A |
lu(A) |
[P, L, U], où P*A est approximativement égal à L*U ; matrices carrées uniquement |
svd(A) |
[U, s, Vt], où s est une liste simple de valeurs singulières et A est approximativement égal à U*diag(s)*Vt |
Résultats exacts. det, inverse, rank et solve_system utilisent des fractions exactes. rank n'a pas de tolérance d'arrondi. solve_system signale une erreur pour un système singulier, et ne gère pas les systèmes non linéaires ou les systèmes avec un nombre infini de solutions.
Résultats approchés. eigenvalues, qr, lu et svd utilisent des nombres à virgule flottante et vérifient que leurs résultats sont finis. qr et svd acceptent les matrices rectangulaires et renvoient les facteurs compacts, dits « minces ». Les calculs de valeurs propres et de SVD s’arrêtent après 10 000 itérations. À l’affichage, une entrée négligeable devant la plus grande, due aux erreurs d’arrondi, apparaît comme 0 ; y accéder par son indice renvoie cependant la valeur enregistrée. Les matrices mal conditionnées peuvent entraîner une perte de précision : ne comparez pas ces résultats avec ==.
# Two adult tickets and one child ticket cost 34; one adult and two children cost 29solve_system([[2,1],[1,2]], [34,29]) donne [13, 8]det([[2,1],[1,2]]) donne 3rank([[1,2],[2,4]]) donne 1Nombres complexes
i est l'unité imaginaire, à moins que vous n'ayez défini un nom ou une unité personnalisée appelée i.
- Fonctions :
complex(real, imaginary),real,imag,conj,abs,arg(en radians) etsqrt(racine principale) acceptent tous des nombres complexes. - Exactitude : les parties réelle et imaginaire, les opérations arithmétiques et les puissances entières restent exactes. Les racines générales et
argdonnent des résultats approchés. - Résultats réels : lorsque les parties imaginaires s’annulent, comme dans
(2+3i) * (2-3i), le résultat est un nombre réel ordinaire. Une valeur saisie sous forme complexe, telle que-4 + 0ioucomplex(-4,0), conserve son type complexe dans les opérations et les valeurs nommées, même si elle s’affiche comme-4. - Racines carrées et logarithmes de nombres négatifs :
sqrt(-4),ln(-1)etlog(-100)restent dans le domaine réel et affichent une erreur de nombre imaginaire indiquant l’écriture complexe à utiliser, par exemplesqrt(-4 + 0i). Cette expression, commesqrt(complex(-4,0)), donne2i. - Affichage : une composante due seulement à l’erreur d’arrondi en virgule flottante apparaît comme 0 :
exp(i*pi)affiche ainsi-1. La valeur enregistrée conserve ses chiffres. - Les comparaisons :
<et>ne fonctionnent que lorsque les deux parties imaginaires sont nulles. - Autres fonctions :
sin,cos,tanet leurs réciproques, les fonctions hyperboliques et leurs réciproques,exp,ln,logoulog10,log2,cbrt, ainsi que les puissances fractionnaires ou complexes, acceptent des nombres complexes. Elles calculent en virgule flottante et utilisent les branches principales. Le logarithme de zéro et tout résultat non fini produisent une erreur.
(2+3i) * (2-3i) donne 13abs(3+4i) donne 5sqrt(-4 + 0i) donne 2isqrt(complex(-4,0)) donne 2isqrt(-4) donne Error: imaginary number. For a complex answer, write sqrt(-4 + 0i)exp(i*pi) donne -1Sommes et produits
sum(expression, name, from, to) additionne l’expression pour chaque entier de from à to, bornes incluses. summation est un autre nom de cette fonction ; product multiplie les valeurs au lieu de les additionner.
- Le nom est local à l’appel : il ne modifie pas un nom déjà défini et ne crée pas de dépendance de la ligne envers celui-ci.
- Vous pouvez mettre une somme ou un produit dans un autre.
- Si
toest inférieur àfrom, la plage est vide : la somme est 0 et le produit est 1. - Un seul appel peut avoir au plus 10 000 termes.
sum(k^2, k, 1, 10) donne 385product(k, k, 1, 5) donne 120k = 7 donne 7sum(k, k, 1, 3) donne 6k donne 7Résoudre des équations
solve(equation) interprète une équation polynomiale de degré 1 ou 2 à une inconnue et calcule ses racines. L’inconnue est l’unique nom sans valeur dans l’équation ; un nom déjà défini utilise sa valeur. Le membre de droite peut être omis : l’expression est alors considérée comme égale à zéro.
- Une équation linéaire renvoie un nombre. Une équation du second degré renvoie la liste de ses racines réelles distinctes, dans l’ordre croissant : une racine double donne donc une liste d’un seul élément. La forme du résultat dépend du degré écrit, pas du nombre de racines trouvées.
- Les coefficients et leurs transformations sont exacts, tout comme les racines lorsque le discriminant est un carré parfait. Dans les autres cas du second degré, les racines sont calculées sous forme décimale à partir de la racine carrée du discriminant.
- Les deux membres doivent utiliser des nombres réels sans unité. Unités, montants monétaires et valeurs complexes sont refusés.
- Une équation sans racine réelle produit
Error: no real solutionau lieu d’une racine complexe. Une équation satisfaite par toutes les valeurs le signale, sans choisir arbitrairement une valeur. - Tout autre cas — degré 3 ou plus, équation non polynomiale, inconnue au dénominateur ou en exposant, deuxième nom sans valeur — est refusé avec un message proposant la forme à quatre arguments ci-dessous.
solve(2x + 6 = 10) donne 2solve(x^2 - 5x + 6 = 0) donne [2, 3]solve(x^2 - 2 = 0) donne [-1.4142135624, 1.4142135624]solve(x^2 + 1 = 0) donne Error: no real solutionsolve(expression, name, lower, upper) est une autre fonction : elle cherche une valeur réelle de name entre lower et upper qui annule l’expression. solve(left = right, name, lower, upper) cherche une valeur pour laquelle les deux membres sont égaux.
- Les bornes doivent être finies, avec
lowerstrictement inférieur àupper. - Une racine exactement à une limite est acceptée. Sinon, l'expression doit être positive à une limite et négative à l'autre, et elle doit être continue entre les deux.
- La recherche divise l’intervalle par deux à chaque étape. Elle réussit lorsque l’expression est à moins de
1e-10de zéro et que l’intervalle est suffisamment étroit, en 128 étapes au maximum. Si l’expression est indéfinie en un point testé, ou si la recherche ne converge pas, la ligne affiche une erreur. - Il trouve une racine, pas toutes. Pour les systèmes d'équations linéaires, utilisez
solve_system.
solve(1500 + 12*x = 20*x, x, 0, 1000) donne 187.5solve(x^2 = 2, x, 0, 2) donne 1.4142135624Calcul différentiel et intégral
Dérivées symboliques
differentiate(expression, name), également écrit derivative(expression, name), renvoie la dérivée sous forme de texte.
- La fonction applique les règles de dérivation de la somme, du produit, du quotient, de la puissance et de la composition aux opérations sur des réels sans unité, ainsi qu’à
sin,cos,tan,sinh,cosh,exp,lnetsqrt. - D'autres noms dans l'expression sont traités comme des constantes, qu'ils aient ou non une valeur dans la note :
differentiate(a*x^2, x)donne(a*(2*(x^(2-1)))). - Le résultat n'est pas simplifié et il est limité à 8 192 caractères.
- Les autres fonctions, comme
abs, produisent une erreur ; utilisez pour elles la dérivée numérique en un point. Il ne s’agit pas d’un système complet de calcul formel. - La dérivée a les mêmes restrictions de domaine que l'expression originale.
differentiate(sin(x), x) donne cos(x)differentiate(x^3, x) donne (3*(x^(3-1)))Dérivées en un point
derivative(expression, name, point), ou differentiate avec trois arguments, calcule numériquement la pente en un point. La méthode affine des différences centrées et les compare à des estimations unilatérales. L’expression peut utiliser vos propres fonctions, mais doit être régulière près du point et employer des réels sans unité. Si l’estimation ne converge pas ou si une valeur échantillonnée est indéfinie, la ligne affiche une erreur.
Les formes numériques produisent un nombre : tous les noms autres que la variable doivent donc avoir une valeur. Cela concerne les dérivées en un point, sum, product, solve et integrate. Un nom sans valeur produit Unsupported: Unknown name: suivi du nom.
derivative(x^3, x, 2) donne 12f(x) = x^2derivative(f(x), x, 3) donne 6differentiate(a*x^2, x) donne (a*(2*(x^(2-1))))derivative(a*x^2, x, 3) donne Unsupported: Unknown name: aIntégrales définies
integrate(expression, name, lower, upper) calcule l’aire sous la courbe de l’expression entre deux bornes finies.
- L'échange des limites change le signe de la réponse, et les limites égales donnent zéro.
- La fonction utilise des règles adaptatives de Gauss–Kronrod à 7 et 15 points, avec des points d’échantillonnage irrégulièrement espacés. Cela évite qu’une oscillation régulière comme
cos(128*pi*x)trompe l’algorithme :integrate(cos(128*pi*x), x, 0, 1)donne environ-1.3e-15, soit zéro à l’erreur d’arrondi près. - L’objectif est une erreur totale estimée d’au plus
1e-9fois la valeur absolue du résultat, ou1e-9lorsque cette valeur est inférieure à 1. L’algorithme compare au moins deux niveaux de précision, tient compte des erreurs d’arrondi et affine d’abord la partie dont l’erreur estimée est la plus grande. - Le calcul s’arrête après 2 048 affinements, 20 niveaux de subdivision ou les 100 000 étapes partagées avec les autres calculs avancés de la ligne. Atteindre une limite ou rencontrer une valeur indéfinie produit une erreur.
- L’estimation de l’erreur donne une indication utile, sans constituer une garantie. Utilisez des expressions régulières et finies. Des pics, discontinuités ou oscillations rapides peuvent rendre les résultats inexacts.
- Les intégrales indéfinies et les bornes infinies ne sont pas prises en charge.
integrate(x^2, x, 0, 3) donne 9integrate(x^2, x, 3, 0) donne -9Arguments et unités dans les fonctions mathématiques
factorialest un autre nom pourfact, ettruncpourint.signrenvoie −1, 0 ou 1.atan2(y, x)renvoie l’angle en radians sous forme de nombre sans unité.- Le deuxième argument facultatif de
round,flooretceilest un pas d’arrondi, et non un nombre de décimales :round(17, 5)arrondit au multiple de 5 le plus proche. Pour arrondir à un nombre de décimales, voir Arrondis. - Logarithmes, exponentielles et fonctions hyperboliques n’acceptent ni unités ni montants monétaires. Les fonctions trigonométriques ordinaires acceptent des angles tels que
30°. - Les racines carrées et cubiques conservent les unités lorsque leurs exposants se divisent exactement ; les puissances de quantités conservent aussi leurs unités. Les températures en Celsius ou Fahrenheit ne peuvent être élevées au carré ni soumises à une racine.
gcd(12, 18) donne 6round(17, 5) donne 15sin(30°) donne 0.5sqrt(9 m²) donne 3 m(2 kg)^2 donne 4 kg²Limites
Les limites sont vérifiées avant qu'une réponse ne soit affichée :
- 1 024 éléments dans une liste ou
range - Matrices jusqu'à 32 × 32
- 10 000 termes dans une
sumou unproduct - 16 niveaux de listes imbriquées et d'appels de fonction
- 100 000 étapes partagées par toutes les mathématiques avancées d'une ligne, y compris les appels imbriqués
- 4 096 bits au numérateur ou au dénominateur d’une fraction, comme ailleurs dans Varlig Calc
Atteindre une limite affiche une erreur sur la ligne concernée ; le reste de la note continue de fonctionner. Une somme ou une inverse partielle, ou une racine dont le calcul n’a pas convergé, n’est jamais présentée comme un résultat. Pour toutes les limites et les garanties d’exactitude, voir Lire les résultats : affichage et précision.