+------------------------------+ | | | Développements Limités | | | +------------------------------+ Par Stéphane Dumas Date de dernière modification : 15/02/09 I. Description ----------- Ce groupe de fonctions contient tout ce qu'il faut pour calculer des DL plus efficacement que ne le fait la fonction intégrée 'taylor'. Pour réussir cela, j'ai été amené à stocker les DL sous la forme d'une liste des coefficients, en considérant que si la liste possède n+1 éléments alors le DL est à l'ordre n. Désormais, lorsque vous verrez le mot DL, il faudra comprendre qu'il s'agit de la liste de ses coefficients. Ces fonctions se regroupent en plusieurs catégories : 1) les DL en 0 des fonctions usuels, dont le nom commence par 'dl' suivi du nom de la fonction, 2) les opérations sur les DL (addition, multiplication, puissances, division, composition, etc...) 3) les composées par des fonctions usuelles, dont le nom commence par le nom de la fonction et se termine par 'dl'. 4) la fonction 'visudl' qui permet de mieux "voir" le DL en faisant apparaître les puissances de la variable x (ou autre) ainsi que le o(x^n) (ou autre). 5) La fonction 'unvisudl' qui fait l'inverse de la précédente. 5) enfin, la fonction 'dl' qui prend directement une fonction f(vr) et la transforme en le DL de f au point et à l'ordre demandé. II. Utilisation, syntaxe -------------------- Tout d'abord, pour accéder plus facilement aux fonctions et surtout pour se placer dans le répertoire "dl", vous devez lancer le programme 'menudl()' qui crée un menu personnalisé (et en profite pour faire un test de toutes les fonctions si cela n'a jamais été fait auparavant). On peut le désactiver ou le réactiver en appuyant sur [2nd][CUSTOM]. Dans cette aide, n désigne un entier naturel et a un réel ou un complexe quelconque. 1) DL des fonctions usuelles (Menu F1) ------------------------- Voici la syntaxe à utiliser pour obtenir les DL en 0 et à l'ordre n des fonctions suivantes : x->sin(x) -> dlsin(n) x->cos(x) -> dlcos(n) x->tan(x) -> dltan(n) x->sh(x) -> dlsh(n) x->ch(x) -> dlch(n) x->th(x) -> dlth(n) x->arcsin(x) -> dlarcsin(n) x->arccos(x) -> dlarccos(n) x->arctan(x) -> dlarctan(n) x->argsh(x) -> dlargsh(n) x->argth(x) -> dlargth(n) x->e^x -> dlexp(n) x->e^(-x) -> dlexp(-n) x->1/(1+x) -> dlinv(n) x->1/(1-x) -> dlinv(-n) x->ln(1+x) -> dlln(n) x->ln(1-x) -> dlln(-n) x->racine(1+x) -> dlsqrt(n) x->racine(1-x) -> dlsqrt(-n) x->(1+x)^a -> dlpow(a,n) x->(1-x)^a -> dlpow(a,-n) 2) Opérations sur les DL (Menu F2) --------------------- Dans les exemples ci-dessous, on note dl1 et dl2 les DL en 0 et chacun à un certain ordre de 2 fonctions f et g. On notera également F la primitive de f qui vaut K en 0 et h(x) désignera une fonction quelconque de la variable x. DL de f+g -> sumdl(dl1,dl2) DL de f*g -> multdl(dl1,dl2) DL de f/g -> divdl(dl1,dl2) DL de h(x)+f -> add(h(x),dl1) ou bien add(dl1,h(x)) DL de h(x)*f -> mult(h(x),dl1) ou bien mult(dl1,h(x)) DL de f/h(x) -> div(dl1,h(x)) DL de h(x)/f -> div(h(x),dl1) DL de f^n -> puisdl(dl1,n) DL de la primitive F de f telle que F(0)=K -> intdl(dl1,K) DL de f' (dérivée de f) -> derivdl(dl1) DL de f(a*x) -> xtoax(dl1,a) DL de f(x^n) -> xtoxn(dl1,n) Valuation de f -> valu(dl1) Valuation de h(x) -> valu(h(x)) Ordre du DL de f -> dim(dl1)-1 DL de fog -> compodl(dl1,dl2) DL de f^g -> dlpowdl(dl1,dl2) DL de f^(-1) (réciproque de f) -> reciprok(dl1) DL de K*f (K constante) -> K*dl1 Visualisation du DL de f(vr) -> visudl(dl1,vr) Dévisualisation d'un DL en la variable vr -> unvisudl(DL,vr) REMARQUES : - La fonction 'reciprok' ne fonctionne que si la valuation de f est égale à 1. - La visualisation consiste à rajouter les puissances de vr et le o(vr^n). - En théorie, les fonctions 'add', 'mult' et 'div' fonctionnent avec n'importe quelle fonction h(x) ayant un DL en 0. En pratique, il vaut mieux ne les utiliser qu'avec des polynômes pour ne pas perdre trop de temps car ces fonctions utilisent un principe similaire au développement de Taylor. IMPORTANT : - Il faut IMPERATIVEMENT que la variable x ne soit pas utlisée pour que les fonctions 'add', 'mult', 'div', 'valu' et 'visudl' fonctionnent correctement. - Toutes les fonctions de ce paragraphe s'occupent toutes seules de déterminer l'ordre adéquat pour le DL résultat en fonction des paramètres qui lui sont donnés. - Si l'un des calculs n'admet pas de résultat correct (par exemple, lors d'une division de DL si la valuation du dénominateur est plus grande que celle du numérateur, ou bien lors d'une composition si g(0) n'est pas égal à 0), la fonction retournera {undef}. 3) Composition (Menu F3) ----------- Les fonctions suivantes servent à composer un DL par une fonction usuelle. Cela présente 3 avantages : - éviter de calculer le DL desdites fonctions usuelles ainsi que l'ordre nécessaire, - pouvoir calculer des composées ailleurs qu'en 0 (c'est-à-dire lorsque g(0) est différent de 0). - de manière interne, cela permet de calculer des DL récursivement avec la fonction 'calcdl' et la fonction'dl'. Pour cela, on écrit : DL de sin(g(x)) -> sindl(dl2) DL de cos(g(x)) -> cosdl(dl2) DL de tan(g(x)) -> tandl(dl2) DL de sh(g(x)) -> shdl(dl2) DL de ch(g(x)) -> chdl(dl2) DL de th(g(x)) -> thdl(dl2) DL de arcsin(g(x)) -> arcsindl(dl2) DL de arccos(g(x)) -> arccosdl(dl2) DL de arctan(g(x)) -> arctandl(dl2) DL de e^(g(x)) -> expdl(dl2) DL de argsh(g(x)) -> argshdl(dl2) DL de argth(g(x)) -> argthdl(dl2) DL de argch(g(x)) -> argchdl(dl2) DL de 1/g(x) -> invdl(dl2) DL de ln(g(x)) -> lndl(dl2) DL de racine(g(x)) -> sqrtdl(dl2) DL de g(x)^a -> powdl(dl2,a) ATTENTION : - Pour les 4 derniers, on obtient les composées par 1/x, ln(x), racine(x) et x^a et non par 1/(1+x), ln(1+x), racine(1+x) et (1+x)^a. Il est donc indispensable que g(0) soit différent de 0 dans ce cas. Exception : si la valuation de g multipliée par l'exposant a (ou par 1/2 pour la racine carrée) donne un entier naturel, le calcul sera tout de même mené. - Pour la composée par argch, il faut que g(0)>1. IMPORTANT : Là encore, les fonctions se chargent toutes seules de déterminer l'ordre adéquat pour le résultat ou de retourner {undef} si le DL n'existe pas. 4) Calcul direct d'un DL (Menu F4) --------------------- On peut faire calculer directement le DL de la fonction f(x) à l'ordre n en 0 en écrivant : dl(f(x),n) Plus généralement, on peut faire calculer directement le DL de toute fonction f(vr) où vr est une variable quelconque, en un point pt quelconque (même + ou - l'infini) et à l'ordre n en écrivant : dl(f(vr),{vr=pt,n}) Cette fonction va appeler récursivement une sous-fonction nommée 'calcdl' pour décomposer la fonction f en morceaux qu'elle pourra traiter. Elle se charge toute seule de déterminer les ordres nécessaires pour les calculs intermédiaires. Même si dans bien des cas, cette méthode sera plus rapide que la fonction 'taylor', il vaut tout de même mieux faire soi-même l'analyse de la fonction f et utiliser toutes les fonctions des paragraphes précédents. Avec un peu d'entraînement, on arrive sans problème à effectuer les calculs "à la main" plus vite que la fonction 'dl'. Néanmoins, cette fonction est tout de même bien utile à tous ceux qui ne veulent pas avoir à se casser la tête. IMPORTANT : Il n'est pas rare (malgré toute la rapidité des fonctions décrites ci-dessus) que la fonction 'dl' mette plus de 30 secondes (voire bien plus) à répondre. Dites-vous bien que dans ce cas, la fonction 'taylor' aurait mis 10 à 100 fois plus de temps ! III. Remerciements ------------- Je remercie (même s'il ne le saura peut-être jamais) Jean-Michel Ferrard pour avoir partagé ses programmes pour TI92 avant la parution de son dernier livre. Je me suis largement inspiré de certaines de ses fonctions (ainsi que de quelques noms) pour écrire les miennes. IV. Résolution des problèmes ------------------------ Pour l'instant, le seul problème connu semble être dû à un mauvais enregistrement des fonctions avant l'archivage. Si l'une des fonctions renvoie une erreur, tentez la manoeuvre ci-dessous : 1) Désarchivez tout ce qui est dans le dossier "dl" 2) Reproduisez l'erreur en retapant ce qui l'a provoquée. 3) Appuyez sur [Enter] pour accéder au programme qui a provoqué l'erreur. 4) Quittez immédiatement l'éditeur de programmes sans toucher à quoi que ce soit. 5) Tentez à nouveau le calcul qui a provoqué l'erreur... et normalement ça marche (ou parfois, cela provoque une nouvelle erreur et on reprend à l'étape 3) Parfois il arrive que l'erreur soit provoquée par une sous-fonction mais que ce ne soit pas celle qui s'ouvre... il faut alors chercher un peu. 6) Une fois que tout est rentré dans l'ordre, réarchivez tout ce qui se trouve dans le dossier "dl". Remarque : Le programme 'testall()' teste toutes les fonctions présentes dans le pack. Si l'une d'elles présente une erreur, il faut la corriger comme décrit ci-dessus. Sinon, une variable'allok' est créée pour signaler que tout fonctionne. Ce programme est automatiquement lancé lorsque 'menudl()' est lancé si la variable 'allok' n'est pas présente et égale à 'true'. Si ça ne marche toujours pas malgré vos efforts (et les miens), signalez-le moi en mettant un commentaire PRECIS sur le site : http://ti.bank.free.fr/