Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
Menu
Calculatrices
Graph 35 à 100 (CFX)
Graph 25/25+ (Pro) (fx-7400)
Graph 35+USB/75/85/95 (SD)
Graph 100/100+ (AFX)
ClassPad 300/330
Fx-CG 10/20
Fx-CP 400
Graph 90+E
Liens
¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Cours/E-activities >> Graphs 35 à 100 >> Maths >> Calcul Limites
Calcul Limites
Version : B2 Taille : 3508 octets Ajouté le : 2019-02-15 21:28 Modifié le : 2022-03-29 23:14
Auteur et posteur :
ThebigbadboyHors ligneMaître du PuzzlePoints: 409 Défis: 16 Message
Planète Casio - Cours Casio de maths - Calcul Limites - TheBigBadBoy - Calculatrices
Nombre de visites sur cette page : 19996
Score au progrank : 42
Note actuelle : 9/10 noté 2 fois
Vous devez être connecté(e) pour noter (inscription).
6865 téléchargements | Soumettre un test

Ce programme est sous licence Creative Commons 2.0 BY


Description :

/!\ Les versions précédentes sont obsolètes ! Cette mise à jour est un programme réécrit de A À Z (plus dans Historique des versions) /!\

N'hésitez pas à envoyer des commentaires, questions, ou encore notes !

Le programme fonctionne parfaitement sur Casio Graph 35+E, Graph 75(+E), et Graph 90+E (Dites-moi si le programme fonctionne aussi sur des autres modèles !)


Le programme sert à calculer les limites de fonctions en ± ∞, en un réel - et calcule automatiquement toute asymptote horizontale, verticale ou oblique !
Les réponses obtenues peuvent être exprimées sous forme fractionnaire - avec ou non un facteur π (en appuyant sur F1). Par exemple lim (x→-∞)(arctg x) = -π/2.
N'hésitez pas à regarder le menu Help.

Utilisation (LISEZ-MOI)
Cliquer pour enrouler
Ce programme utilise les variables A~P & X, Y1, f1~f2, et le radiant.
Dans le menu du programme "LIMITES", entrez une nouvelle fonction afin de calculer sa limite. Si cette fonction est déjà présente dans Y1, appuyez sur (2) dans le menu . Vous pouvez donc utiliser des constantes dans vos fonctions qui ne sont pas utilisées par le programme, et les sous-appels à d'autres fonctions (graphiques) sont bien évidemment possibles.

Vous devrez toujours sélectionner les limites à calculer : à gauche et/ou à droite d'une abscisse; en + et/ou - ∞. Après la résolution de celle(s)-ci, il vous est possible d'exprimer la réponse obtenue sous forme fractionnaire, avec ou non un facteur π, en appuyant sur la touche (F1). Cela peut être 23/25 comme -2π/9. Utilisation du programme Number to Fraction. N'hésitez pas à en abuser, car une réponse "1.1" peut cacher la fraction "7π/20" !
Ce résultat fractionnaire n'est pas affiché automatiquement, car peut créer quelques pépins pour des valeurs entières.

Les limites en un réel se calculent quasi instantanément (et prend en compte les "sauts" possible de la fonction dus à la précision de calcul), et les asymptotes verticales sont détectées et affichées automatiquement.

Les limites en l'infini demandent plus de temps : environ 15~20 secondes pour les fonctions normales/classiques (par exemple sin log x) contre ~50 secondes (voire plus) pour des méchantes.
Le programme gère les erreurs math - dépassements arithmétiques ! Par exemple la limite de la fonction X^X^X donne une bonne réponse en + et -∞ (le dépassement arithmétique se faisant à X=10).


Fonctions non supportées (LISEZ-MOI)
Cliquer pour enrouler
Toutes les fonctions présentes dans le menu OPTN→CALC (excepté Int÷ et Rmdr) ne peuvent être utilisées pour une limite en ∞, ou une Erreur Syntaxe arrêtera le programme.
Ces fonctions sont donc : Solve, d/dx, d²/dx², ∫dx, SolveN, FMin, FMax, Σ, logab.

Les limites en un réel quant à elles fonctionnent avec absolument toutes les fonctions.

Malheureusement, quelques - très - rares limites ne sauraient être résolues correctement, ce qui est le cas par exemple de lim (x → +∞) (tan x). Le problème vient du fait que cette fonction effectue des sauts de trop grande ampleur en des abscisses fort rapprochées.
N'hésitez pas à me dire si vous trouvez une autre limite dans le même cas !


Algorithmes
Cliquer pour enrouler
- Limites en un réel :
Appelons R l'abscisse vers laquelle tend x, et f(x) la fonction sur laquelle porte la limite. On itère à partir de f(R-ln 0.97) - ln 0.97 ~= 0.03 - en divisant par 2 le logarithme chaque fois, jusqu'à ce que :
# cette division (ln/2) atteigne 1E-9
# les images de 2 itérations successives ont une différence inférieure à 1E-5 (la réponse à la limite sera donc un réel)
# la valeur absolue d'une image est supérieure à 1E20
# un saut a été détecté (=erreur de la calculatrice) : si la différence des images de 2 itérations décroît, puis que la nouvelle différence est plus grande d'un facteur 6/5 et enfin que la différence des images de la prochaine itération est strictement nulle, alors la boucle est arrêtée avec les infos d'avant ce saut (image et différence). Cela est utile par exemple pour la fonction "(1-cos x)/x²" (qui n'est pas la seule !) : f(1E-6) donne 0, alors que ~ 1/2 est attendu
Une fois sorti de la boucle, la dernière différence définit si le résultat de la limite est un réel (<0.1) ou un infini (>0.1).

- Limites en l'infini :
Ici on procède par étapes :
# on établit d'abord l'abscisse maximale de la fonction à ne pas dépasser (avant une Erreur Math). 6ko libres sont nécessaires : 3 dans RECURRENCE et 3 dans Mat Ans (cette dernière sera effacée tout de suite après calcul). L'abscisse la plus petite utilisée pour les calculs est π^3×ln 3 ~= 34, ou environ le cinquième de l'abscisse max si celle-ci se trouve dans les 40k ou moins.
# on calcule si la limite a un sens/existe (pas comme sin x) grâce à une série de FMax FMin sur 2 domaines : un réduit (typiquement de 34 à 35k), qui nous sert à délimiter les bornes des images, et l'autre à sa suite jusqu'à l'abscisse max du point précédant. Si un minimum ET un max sont plus importants (ou ont une image égale) (à une erreur près), alors on considère la limite comme inexistante (elle ne possède donc pas de réponse)
# on passe quelques calculs si au plus un extremum a été retrouvé (à une erreur près) à une plus grande abscisse - sinon, les 2 extrema du domaine plus grand sont moins importants que ceux du réduit. La résultat de la limite sera un réel
# les cas encore non traités sont : les fonctions (dé)croissantes tendant vers un réel, et les fonctions tendant vers un infini. Pour les différencier, définir un seuil sur la pente (ou différence entre 2 images) n'est vraiment pas l'idéal (voir log log log x et 1E9/x). On va donc utiliser cette différence pour définir un seuil au niveau des images : si la fonction "passe de l'autre côté" de celui-ci, alors elle tend vers un infini
# des étapes supplémentaires sont nécessaires pour calculer : le réel vers lequel tend la fonction (dont je passe les détails) / l'asymptote horizontale possible / l'asymptote oblique possible.
# pour le calcul des 2 asymptotes, on considère chacune leur équation (avec des arrondis uniquement pour l'oblique). En gros on regarde si la fonction reste du même côté, et si oui alors il y a bien asymptote.

- Affichage arrondi du résultat :
J'utilise une fonction spécifique pour arrondir les valeurs à 1E-4 et ne garder que les 4 premiers chiffres significatifs. Il faut juste savoir que les E11 servent uniquement à jouer avec la précision des résultats temporaires de la calculatrice. Vu qu'elle n'enregistre que 15 chiffres significatifs, le E11 permet de "supprimer" les décimales trop petites. Vous n'aurez pas plus de commentaires de ma part .
10^Intg log Abs (X+Not X)×(RndFix(X,3)×10^-Intg log Abs (X+Not X)+E11-E11


- Affichage fractionnaire du résultat :
J'utilise aussi mon autre programme dans celui-ci Number to Fraction, avec une plus grosse erreur permettant de trouver la majorité des fractions sans pour autant avoir la valeur exacte de la limite. Crée quelques rares pépins qu'on ne voudrait pas forcément, mais je ne trouve pas ça dérangeant car ça se voit tout de suite qu'il y a eu un souci, et c'est l'utilisateur qui a cliqué sur le bouton pour effectuer cet affichage. On peut donc espérer qu'il le fasse uniquement sur des valeurs décentes !

Améliorations possibles
Cliquez pour recouvrir
Le programme, bien qu'il réponde correctement à énormément de limites, a ses propres faiblesses. Des idées pouvant possiblement améliorer son fonctionnement (des plus importantes aux moindres) :
- Ne plus le baser sur du calcul, mais sur une analyse de chaîne de caractères. Devrait être une très grosse amélioration. +: tan x ne poserait plus de problème; -: très long et compliqué à faire, car le but de mon programme est de supporter toutes les fonctions disponibles sur Casio (y compris les opérateurs booléens, les fonctions quasi jamais utilisées etc).
- Remplacer les arrondis effectués (par quoi, je ne sais pas x)
- Changer les facteurs d'itération (des limites en un réel = 1/2; et des limites en l'infini tendant vers un réel = 2) et les seuils d'erreurs. Je ne pense pas que cela apporte tellement de changement, et en plus les 2 se complètent l'un l'autre - (si un doit être changé, alors l' autre aussi).

Très certainement plein d'autres choses, mais j'ai oublié, vu le temps que la version A m'a prise ...


Historique des versions
Cliquer pour enrouler
Versions obsolètes
Versions obsolètes
Beta 3.0 Toute première version "publiée".
Les limites en ± ∞ sont séparées, une en + ∞ et une en - ∞

A 1.0
Les limites en ± ∞ sont ensembles

A 1.1
Possibilité de calculer les asymptotes obliques

2.0 (4444 octets)
Possibilité de calculer une limite en un réel seulement à droite ou seulement à gauche (lorsque la fonction contient √ ou *√ )

3.0 (env. 3200 / 3584 octets)
Possibilité de calculer une limite en ± ∞ seulement en + ∞ ou seulement en - ∞ (lorsque la fonction contient √ ou *√ )
Possibilité de calculer les asymptotes obliques seulement en + ∞ ou seulement en - ∞ (lorsque la fonction contient √ ou *√ )
Possibilité de copier la fonction entrée en Y1 (première fonction dans le menu Graph de votre calculatrice) !
Optimisations.

3.1 (env. 3200 / 3588 octets)
Si on calculait une asymptote oblique sans écrire de √ ou de *√ on obtenait seulement le résultat en -∞ en 3.0, mais plus maintenant.

4.0 (4188 / 4544 octets)
Possibilité de contourner les erreurs math avec les fonctions exponentielles.

5.0 (3352 / 3684 octets)
Support des fonctions exponentielles (plus de "contournement") sauf pour les asymptotes obliques.
Plus facile d'utilisation.
Reconnaissance de limites impossibles (ex : lim (x → +∞ ) (sin x) ).

5.1 (3536 / 3880 octets)
Support des fonctions exponentielles dans le menu asymptotes obliques.
Correction de quelques bugs de la 5.0.

6.0 (4096 octets)
Un peu de réaménagement au niveau du rendu (maintenant, tous les menus donnent d'abord en x →-∞ puis x → +∞), et aussi au niveau du code.
Le menu Lim x → ±∞ est beaucoup plus précis pour les asymptotes horizontales qu'avant, ce qui permet d'exprimer enfin les résultats obtenus avec des π en appuyant sur [F1] à la fin du calcul (par ex Lim (x→+∞) (arctg x) = 0+π.(1/2) ). Sous forme a+π.(b/c), a varie de -9 à 9; b de -11 à 11; et c de -12 à 12.
N'utilise plus que la fonction graphique Y1 - plus de chaînes de caractères - et demande maintenant à chaque fois s'il faut calculer la limite à gauche, à droite ou les 2.
Bonne reconnaissance des asymptotes horizontales (Lim (x→+∞) (sin x / x) ne possède pas d'A.H mais tend bien vers 0).
Plus de problème des limites en un réel (par ex Lim (x→0) (e^(1/x)) n'a plus d'erreur math ).

6.1 (4144 octets)
Corrections de multiples erreurs de calculs de la 6.0.....

6.2 (4168 octets)
Version 6.1 corrigée (on ne savait pas calculer les asymptotes obliques dû à une erreur de calcul… ).
On n'obtient plus d'erreur argument quand on utilise la fonction d'affichage avec des π (le texte dépassait de l'écran).
Besoin d'un peu moins de précision dans la fonction d'affichage avec des π (sans augmenter le risque d'erreur).

6.3 (4148 octets)
L'unique changement de cette version est la diminution de précision lors du calcul de limites en réel pour éviter les erreurs (ou plutôt fausse réponse) de la calculatrice elle-même. Ex. : calculer la fonction f(x) = (1 - cos x) / (x^2) avec x = 1E-6. Et la calculatrice vous donnera comme réponse 0 au lieu d'une valeur proche de 1/2 (qu'il faudrait obtenir). Le problème vient donc bien de la calculatrice et non du programme (celui-ci ne savait d'ailleurs pas comment interpréter ce résultat...).


Version A (3664 octets)
On peut bien considérer ça plus comme un nouveau programme qu'une mise à jour. En effet celui-ci a été réécrit totalement, jouant avec de nouveaux algorithmes. Les anciennes versions (devenues dès lors obsolètes - et de loin - par rapport à ce nouveau programme) reflétaient mon grand manque d'expérience et ma naïveté. Les études allant avec cette "mise à jour", j'ai acquis assez de connaissance à mon impression pour faire un programme décent. Veuillez m'excuser pour les bourdes commises auparavant. Notez que cette version A utilise maintenant les String afin de gérer les erreur math des dépassements arithmétiques (voir mon tuto). Il y a besoin de 6000 octets libres - seulement en mode x→∞ - (3k dans RECURRENCE et 3k pour Mat Ans). Si ceci n'est pas possible, on peut laisser appuyer la touche lors du choix du signe de ∞, cela prendra des abscisses par défaut d'abscisses pour calculer la limite. Notez que cette méthode est tout de même déconseillée.
Pour les limites en ∞, prend environ 15 secondes de calcul pour les fonction "classiques" et 55 sec pour les méchantes. Donne automatiquement tout ce qu'il y a à savoir sur une limite : asymptote horizontale, verticale, oblique, et possibilité d'obtenir la réponse à ces limites sous forme de fractions avec - ou non - un facteur π (petite modification du programme Number to Fraction).
Bien évidemment les limites en un réel se font quasi instantanément, et supportent aussi les sauts causés par la précision des calculs de la calculatrice (comme la fonction (1-cos x)/x² qd x→0).
Pour donner une idée, log log log x, sin log x, sin x*e^x et 1E9/x qd x→∞ donnent tous les 4 une bonne réponse .
Utilise les variables A~P, Str 1~2, Y1, f1~f2, et le radiant.

Version B (3520 octets)
Du plus important au moindre changement :
  • Beaucoup plus facile d'utilisation ! L'utilisateur ne doit plus tapoter ou maintenir suivant si la calto a 6 ko de mémoire libre. Finies les crampes
  • N'a plus du tout besoin des 6 ko ! En effet les fonctions de récurrence ont été jetées par-dessus bord ! Tout simplement : pour détecter les dépassement il y a plus simple et beaucoup moins lourd.
  • Résultat grandement affiné pour les limites en ∞ tendant vers des réels.
  • Plus de changement de priorité des opérations (le seul problème était les multiplications implicites).
  • N'utilise plus de String !
  • Plus d'Erreur math (limites en ∞) lorsque l'abscisse maximale (avant dépassement arithmétique de la fonction) est ≤ 5, fallait la vouloir celle-ci...
  • Les limites en ∞ sont considérées sans réponse si l'abscisse maximale est < 1.
  • Utilise une variable en plus : X. Saviez-vous que jusqu'ici le programme ne changeait pas sa valeur ?


Version B2 (3396+112 octets)
Correction d'une petite gaffe de la précédente version pour les limites en ∞ qui ont un dépassement arithmétique très petit (<10).
Toute limite ∞ de fonctions non définies au dessus d'une abscisse = 1 sont considérées indéfinies. Dès lors vous pouvez sélectionner les 2 signes ∞ (par ex pour log x) sans vous soucier d'une Erreur math (qui survenait dans les précédentes versions).


Je tiens à remercier LePhenixNoir, Manolo, Sentaro21 pour leur aide sur ce topic
Et merci à Totoyo pour son cours de programmation qui m'a bien aidé

Faites absolument ce que vous voulez de ce prog, tant que vous mettez un lien vers cette page-ci ! Merci ! CC 2.0 BY


Note sur 10 Commentaire Date de notation
9Très ergonomique, et quasiment incollable au niveau lycée ; à défaut d'un oracle, un très bon outil de vérification des calculs. (Lephe')Le 12.01.2022 à 13:03
9Mérite sa note rien que pour le travail apporté. Suffisant pour le lycée, ça donne une bonne idée de l'objectif :) - TituyaLe 12.01.2022 à 19:29

Commentaires :

Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9 | Suivante

ThebigbadboyHors ligneMaître du PuzzlePoints: 409 Défis: 16 Message
Posté le 21-02-2019 à 19:35 | #
Veuillez me dire votre avis sur mon programme et sur le contenu du spoiler
SVP
LephenixnoirHors ligneAdministrateurPoints: 22261 Défis: 149 Message
Posté le 22-02-2019 à 18:24 | #
Très impressionnant ! Je l'ai testé sur plusieurs exemples et je suis épaté qu'il réponde si vite et surtout si bien !

J'ai regardé la méthode de calcul, et c'est très basique... mais ça marche.

Pour t'embêter, j'ai trouvé un façon de déjouer ton programme à tous les coups : il suffit de donner une fonction qui n'a pas de limite !

Voilà deux exemples de résultats faux que j'ai obtenus :

lim(x→∞) sin(x) = 0.93169
lim(x→0,x>0) 1/sin(1/x) = +∞

Mais on peut espérer que ça marchera bien sur des exemples décents !

Si tu as envie de creuser, je te conseille de jeter un oeil à TabVari, où Scientifix a cherché des méthodes itératives pour localiser numériquement, et avec une bonne certitude, les zéros de la dérivée.
Shadow15510Hors ligneAdministrateurPoints: 5317 Défis: 16 Message
Posté le 22-02-2019 à 18:44 | #
Très honnêtement, 66 téléchargements en aussi peu de temps, tu peux fier de toi !
ThebigbadboyHors ligneMaître du PuzzlePoints: 409 Défis: 16 Message
Posté le 22-02-2019 à 19:24 | #
Merci énormément !
Comme dit dans le spoiler, le programme ne sait pas calculer une limite au bord (non-pris) du domaine de la fonction... Mais c'est possible que j'ajoute une fenêtre de dialogue pour permettre de résoudre ce genre de calculs. Pensez-vous qu'il faut ?

Et en effet, le programme est un peu (trop ) basique, mais fonctionne parfaitement pour moi . La deuxième chose peut-être à changer, c'est le menu help car le texte écrit comme ça prend énormément de place...

Je ne m'attendais pas à autant de téléchargements
LephenixnoirHors ligneAdministrateurPoints: 22261 Défis: 149 Message
Posté le 22-02-2019 à 21:31 | #
Ah oui, maintenant que tu parles du menu d'aide, ça me revient ! J'avais oublié un point.

Le petit texte écrit en majuscules c'est dur à lire ! Tant que c'est pour l'écran titre tout va bien, mais dans les pages d'aide qui comportent plusieurs écrans de texte, du texte normal serait vraiment bienvenu.

Autre chose : tu as écris Y^+ ou Y^- à quelques endroits. Il existe sur la troisième ligne de la page MATH (F1) de l'onglet CHAR les caractères + et - en exposant, c'est-à-dire Y⁺ et Y⁻. Ça pourrait t'aider !
ThebigbadboyHors ligneMaître du PuzzlePoints: 409 Défis: 16 Message
Posté le 25-02-2019 à 22:30 | #
Voilà !
Affaire réglée ! J'ai écrit le menu Help en majuscules (300 octets de gagnés ) et j'ai mis les signes en exposant.
J'en ai profité pour corriger une "erreur" :
La version d'avant n'affichait que "1" comme réponse à la limite (X→0) ( (Abs X) / X ). Maintenant, le programme fait le calcul en étant plus petit que 0 et en étant plus grand
Un énorme merci LePhenixNoir pour ton implication !
ThebigbadboyHors ligneMaître du PuzzlePoints: 409 Défis: 16 Message
Posté le 03-03-2019 à 21:53 | #
Et voilà !
On peut calculer les limites au bord du domaine de définition !
ThebigbadboyHors ligneMaître du PuzzlePoints: 409 Défis: 16 Message
Posté le 03-06-2019 à 18:27 | #
N'hésitez pas à voir mon autre programme !
Bataille corse
eleveTS
Statut : Invité
Posté le 14-06-2019 à 12:59 | #
Bonjour, dans le programme avc limite x=-l'infini je rentre ma fonction soit f(x)= 1/1+e^-x et le programme me dit qu'il y a une erreur j'ai reessayé en remplacant le x par un réel ça a marché mais je souhaite obtenir la limite avc x :/
Quelqu'un pourrait m'aider svp
(j'ai une casio graph 75+)
ThebigbadboyHors ligneMaître du PuzzlePoints: 409 Défis: 16 Message
Posté le 14-06-2019 à 15:53 | #
En effet, pour la fonction que tu as essayée, le programme donne une erreur math en -∞ (tandis qu'il saurait donner la réponse en +∞...).
Le programme teste en fait avec plusieurs valeurs de X, mais très petites et très grandes (± 1 millions). Le problème est que si une certaine valeur est dépasse ±1*10 ^ 99, la calculatrice renvoie une erreur math...
Tu peux tester : avec la fonction 1+e^-X, essaie avec X= -250. Tu obtiens une Erreur Math (alors, que ce soit une erreur math ou 1 divisé par une erreur math, ça en reste une quoi qu'il arrive malheureusement... ).
J'espère avoir répondu assez bien à ton problème !

Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9 | Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 41 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd