Passer au contenu
Guide Varlig
Accueil Varlig

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.

calc
squares(n) = sum(k^2, k, 1, n)
squares(3) donne 14
first(items) = items[0]
first([10, 20]) donne 10
root(y) = solve(x^2 = y, x, 0, 10)
root(9) donne 3

Garanties 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é.
  • mode sur 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 que sum, product et count sur 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.

  • mode renvoie 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érant modes, median ou average. modes renvoie 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 entier k de 0 à 4 et équivaut à percentile(list, 25k).
  • variance et stddev utilisent les formules d’échantillon, avec une division par n - 1 et au moins deux valeurs. population_variance et population_stddev divisent par n et nécessitent au moins une valeur. sample_variance et sample_stddev sont les noms longs des deux premières fonctions.
  • Une liste vide a une sum de 0, un product de 1 et un count de 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.
calc
spend = [420, 385, 510, 460] donne [420, 385, 510, 460]
sum(spend) donne 1,775
average(spend) donne 443.75
median(spend) donne 440
spend[0] donne 420
spend * 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
  • slice exige des indices entiers respectant 0 ≤ début ≤ fin ≤ longueur de la liste. Toute autre combinaison de bornes produit une erreur.
  • variance nécessite au moins deux nombres sans unités.
  • map et filter prennent 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 dans filter doit donner true ou false.

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 ==.

calc
# Two adult tickets and one child ticket cost 34; one adult and two children cost 29
solve_system([[2,1],[1,2]], [34,29]) donne [13, 8]
det([[2,1],[1,2]]) donne 3
rank([[1,2],[2,4]]) donne 1

Nombres 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) et sqrt (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 arg donnent 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 + 0i ou complex(-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) et log(-100) restent dans le domaine réel et affichent une erreur de nombre imaginaire indiquant l’écriture complexe à utiliser, par exemple sqrt(-4 + 0i). Cette expression, comme sqrt(complex(-4,0)), donne 2i.
  • 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, tan et leurs réciproques, les fonctions hyperboliques et leurs réciproques, exp, ln, log ou log10, 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.
calc
(2+3i) * (2-3i) donne 13
abs(3+4i) donne 5
sqrt(-4 + 0i) donne 2i
sqrt(complex(-4,0)) donne 2i
sqrt(-4) donne Error: imaginary number. For a complex answer, write sqrt(-4 + 0i)
exp(i*pi) donne -1

Sommes 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 to est 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.
calc
sum(k^2, k, 1, 10) donne 385
product(k, k, 1, 5) donne 120
k = 7 donne 7
sum(k, k, 1, 3) donne 6
k donne 7

Ré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 solution au 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.
calc
solve(2x + 6 = 10) donne 2
solve(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 solution

solve(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 lower strictement 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-10 de 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.
calc
solve(1500 + 12*x = 20*x, x, 0, 1000) donne 187.5
solve(x^2 = 2, x, 0, 2) donne 1.4142135624

Calcul 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, ln et sqrt.
  • 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.
calc
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.

calc
derivative(x^3, x, 2) donne 12
f(x) = x^2
derivative(f(x), x, 3) donne 6
differentiate(a*x^2, x) donne (a*(2*(x^(2-1))))
derivative(a*x^2, x, 3) donne Unsupported: Unknown name: a

Inté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-9 fois la valeur absolue du résultat, ou 1e-9 lorsque 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.
calc
integrate(x^2, x, 0, 3) donne 9
integrate(x^2, x, 3, 0) donne -9

Arguments et unités dans les fonctions mathématiques

  • factorial est un autre nom pour fact, et trunc pour int.
  • sign renvoie −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, floor et ceil est 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.
calc
gcd(12, 18) donne 6
round(17, 5) donne 15
sin(30°) donne 0.5
sqrt(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 sum ou un product
  • 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.