[big][red][u]/!\[/u][/red] Les versions précédentes sont obsolètes ! Cete mise à jour est un programme [red]réécrit de A À Z[/red] (plus dans [i]Historique des versions[/i]) [red][u]/!\[/u][/red][/big] 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ée sous forme fractionnaire - avec ou non un facteur π ([b]en appuyant sur F1[/b]). Par exemple lim (x→-∞)(arctg x) = -π/2. N'hésitez pas à regarder le menu [i]Help[/i]. ;) [spoiler=Utilisation (LISEZ-MOI)|Versions obsolètes]Ce programme utilise les variables A~P, Str 1~2, [b]Y[/b]1, 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 [b]Y[/b]1, sélectionnez alors "2 [b]Y[/b]1" dans le menu ;) . [red]Des appels à d'autres fonctions graphiques ([b]Y[/b]n ou fn) ne sont pas autorisés. Il vous faut aussi ajouter des parenthèses pour les multiplications sans opérateur explicite. Par exemple au lieu d'entrer sin 3x, entrez sin (3x).[/red] 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 π. Cela peut être 23/25 comme -2π/9. Utilisation du programme [url=https://www.planet-casio.com/Fr/programmes/programme4116-last-number-to-fraction-thebigbadboy-utilitaires-conversion.html]Number to Fraction[/url]. Les limites en un réel se calculent quasi instantanément, et les asymptotes verticales sont détectées et affichées automatiquement. Les limites en l'infini demandent plus de temps : d'environ 15~20 secondes pour les fonctions normales/classiques (par exemple sin log x) contre ~45 secondes pour des méchantes. Le programme gère les erreurs math - dépassements arithmétiques - mais a besoin pour cela de 6000 octets libres sur votre calto [b]SEULEMENT POUR LES LIMITES EN ∞[/b] (voir [url=https://www.planet-casio.com/Fr/forums/topic16880-1-gerer-et-eviter-les-erreurs-math-dune-fonction.html]mon tuto[/url]) pour savoir pourquoi). Si vous obtenez une erreur mémoire, maintenez le bouton lors du choix du signe de l'infini, et vous verrez apparaître à l'écran [###]. [b]Faites attention à bien TAPOTER lors de cette sélection dans le cas contraire[/b].[/spoiler] [spoiler=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 [b]limite en ∞[/b], 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 rares limites ne sauraient être résolues, 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 ![/spoiler] [spoiler=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 [b]calculatrice[/b]) : 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 [url=https://www.planet-casio.com/Fr/forums/topic16880-1-gerer-et-eviter-les-erreurs-math-dune-fonction.html]l'abscisse maximale de la fonction à ne pas dépasser (avant une Erreur Math)[/url]. 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) (à [url=https://www.planet-casio.com/Fr/forums/topic16770-1-recherche-dexpression-dune-erreur.html]une erreur près[url]), 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. Ça se passe de commentaire pour ma part :E . `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 [url=https://www.planet-casio.com/Fr/programmes/programme4116-last-number-to-fraction-thebigbadboy-utilitaires-conversion.html]Number to Fraction[/url], 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 ![/spoiler] [spoiler=Améliorations possibles]Le programme, bien qu'il réponde correctement à énormément de limites, a ses propres faiblesses. Des idées pouvant [b]possiblement[/b] 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). Je ne pense pas que cela apporte tellement de changement, et en plus il faudrait aussi changer des valeurs seuils Très certainement plein d'autres choses, mais j'ai oublié, vu le temps que la version A m'a prise :sry: ...[/spoiler] [spoiler=Historique des versions|Cliquer pour enrouler][spoiler=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 [i]Graph[/i] 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… :sry: ). 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...).[/spoiler] 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 [url=https://www.planet-casio.com/Fr/forums/topic16880-1-gerer-et-eviter-les-erreurs-math-dune-fonction.html]mon tuto[/url]). 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 à ses limites en forme de fractions avec - ou non - un facteur π (petite modification du programme [url=https://www.planet-casio.com/Fr/programmes/programme4116-last-number-to-fraction-thebigbadboy-utilitaires-conversion.html]Number to Fraction[/url]. Bien évidemment les limites en un réel se font quasi instantanément, et supportent aussi les sauts (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, [b]Y[/b]1, f1~f2, et le radiant. [/spoiler] Je tiens à remercier [i]LePhenixNoir[/i], [i]Manolo[/i], [i]Sentaro21[/i] pour leur aide sur ce [u][i][url=https://www.planet-casio.com/Fr/forums/lecture_sujet.php?id=15596&page=1]topic[/url][/i][/u] Et merci à Totoyo pour son cours de programmation qui m'a bien aidé :lol: Faites absolument ce que vous voulez de ce prog, tant que vous mettez un lien vers cette page-ci ! Merci ! CC 2.0 BY