Page 1 of 1

Tableau de variation v2

Unread postPosted: 01 Nov 2016, 13:02
by GalacticPirate
Salut ! Vous vous souvenez du programme de tabvar que j'ai dépoussiéré à l'occasion l'année dernière pour TI-83 Premium CE ? Bon, Je vais reprendre le projet de zéro. Pourquoi ? Parce que le code est tout simplement foireux et bordélique, et que ce truc est incapable de produire un tableau vrai à 100 %. Soyons clairs, jamais ça ne sera parfait, mais on va essayer :p
Alors, on a besoin de plusieurs étapes :
  • D'abord, on demande le domaine d'étude, rien de sorcier. Soit
    $mathjax$[a,b] ((a,b)\in \mathbb{R}^{2})$mathjax$
    , soit
    $mathjax$\mathbb{R}$mathjax$
    .
  • Ensuite, on entreprend un scan de
    $mathjax$f'(x)$mathjax$
    sur
    $mathjax$[a,b]$mathjax$
    , ou sur
    $mathjax$[-10^{2},10^{2}]$mathjax$
    si l'utilisateur a choisi
    $mathjax$\mathit{D}_{f}=\mathbb{R}$mathjax$
    . En gros, je prendrai une boucle For( avec un incrément
    $mathjax$\varepsilon =10^{-4}$mathjax$
    (ou
    $mathjax$\varepsilon =10^{-5}$mathjax$
    , je sais pas encore) et on va mitrailler du solve(nDeriv( pour détecter des solutions. Mais, en même temps, on va détecter si la dérivée dépasse
    $mathjax$10^{k}, k$mathjax$
    entier suffisamment grand, et on ralentit la cadence
    $mathjax$\varepsilon$mathjax$
    d'un facteur 1000 ou 10000 pour s'approcher de la valeur interdite. Ensuite, go stocker ces choses dans des listes ou des matrices.
  • Maintenant, on calcule les limites inférieure et supérieure de
    $mathjax$f$mathjax$
    en chaque zéro/valeur interdite de la dérivée. Si les limites sont différentes (et finies) au niveau d'un zéro ou d'une valeur interdite, on les stocke et on considère ce zéro comme valeur interdite de
    $mathjax$f$mathjax$
    . Sinon, si c'est un zéro de la dérivée, on calcule son image par
    $mathjax$f$mathjax$
    , si c'est une valeur interdite de
    $mathjax$f'$mathjax$
    , on calcule la limite. Si jamais on a des limites infinioes, différentes ou pas, au niveau d'une V.I., on le prend aussi en compte.
  • On finalise le coup en prenant la limite de
    $mathjax$f$mathjax$
    en les bornes de son domaine d'étude/de définition, et si c'est
    $mathjax$\mathbb{R}$mathjax$
    on les calcule en
    $mathjax$\pm \infty$mathjax$
    . Puis on trouve les signes de
    $mathjax$f'$mathjax$
    sur chaque intervalle à coups de (A+B)/2.
  • La partie la plus chiante (oui, oui, je suis sérieux), on dessine le tableau à partir du bordel de valeurs qu'on a stockées.

Bon. Soyons sérieux, cette méthode a un énorme avantage et un énorme inconvénient. L'avantage, c'est que si on se débrouille pour pas tout foirer, on aura un truc fiable à 100. % pour le lycée (i.e., faudra le faire exprès pour le faire buguer) L'inconvénient, c'est que ce sera aussi lent que d'essayer de bruteforce des systèmes stochastiques météorologiques à 1000 variables sur une TI-80 :troll: Mais bon, si c'est le prix à payer pour faire mieux que la précédente version :p
Voilà ! Bon, je cherche pas des simples opinions, mais surtout des commentaires sur ma façon de faire, des optis, des bouts de code/routines et au mieux des participations d'autres membres.
STV

Re: Tableau de variation v2

Unread postPosted: 01 Nov 2016, 13:06
by Adriweb
Hm, faut raisonner en formel pas en numérique en essayant plein de valeurs, au moins pour trouver les endroits intéressants de la fonction.

Après, tabvar en lui même, s'il a des défauts, autant les corriger là.
Je sais que le coeur en Basic du truc c'est moi qui l'avait fait dedans dans une vieille version (et séparément, à l'époque), mais ca a probablement été retouché depuis, donc je ne saurais trop dire comme ça se passe.

Re: Tableau de variation v2

Unread postPosted: 01 Nov 2016, 13:08
by GalacticPirate
Tu veux vraiment essayer de raisonner en formel sans calcul formel ? :p Je me sentais pas à implémenter un système RPN complet avec des strings sur PCE tu vois :p

Re: Tableau de variation v2

Unread postPosted: 01 Nov 2016, 13:09
by Adriweb
Ah, ouai, je parlais de la version Nspire ("tabvar", c'est le nom phare sur nspire, hm...), et, ahem, c'était avant ton edit précisant la calculatrice.
Bref, nevermind du coup.

Re: Tableau de variation v2

Unread postPosted: 01 Nov 2016, 23:25
by Wistaro
Bon courage :)
Si j'ai l'occasion je t'aiderai.

StarTrekVoyager wrote:Tu veux vraiment essayer de raisonner en formel sans calcul formel ? :p Je me sentais pas à implémenter un système RPN complet avec des strings sur PCE tu vois :p


À part partir sur un système formel et/ou rpn, je ne vois pas vraiment comment faire.

Hamza.S a travaillé sur un programme en basic npire sur cette méthode, tu peux peut-être voir avec lui pour savoir comment procéder.

Re: Tableau de variation v2

Unread postPosted: 01 Nov 2016, 23:40
by Hamza.S
euh non je n'ai pas travaillé sur la méthode RPN mais critor oui avec la bibliothèque.
sur les (e)z80 c'est plus facile puisque les fonctions sont déjà tokenisés pas besoin de méthode artificielle comparé aux Nspire & 68k

Re: Tableau de variation v2

Unread postPosted: 02 Nov 2016, 08:25
by Bisam
Le problème de ta méthode, STV, c'est qu'elle ne va pas forcément aboutir... même avec des fonctions du lycée.
Par exemple :
  • il y a de fortes chances qu'elle ne détecte pas un endroit où la dérivée s'annule sans changer de signe (Ex :
    $mathjax$x\mapsto x^3$mathjax$
    en 0)
  • elle ne pourra pas non plus gérer les endroits où la fonction n'est pas dérivable. (Ex :
    $mathjax$x\mapsto |x|$mathjax$
    en 0).
  • tu espères découvrir des "valeurs interdites" en te basant sur la dérivée qui, selon toi, "explose" au voisinage de ladite valeur, mais ce n'est pas forcément le cas (ex :
    $mathjax$x\mapsto e^{\frac{-1}{x^2}}$mathjax$
    ou encore
    $mathjax$x\mapsto \frac{\sin(x)}{x}$mathjax$
    )
  • tu parles de "limites inférieures" et "supérieures" mais je suppose que tu voulais parler de limites à droite et à gauche... et là encore, tu ne pourras pas forcément en déduire grand chose... Par exemple,
    $mathjax$x\mapsto e^{\frac{-1}{x}}$mathjax$
    possède une limite à droite en 0 qui est nulle mais une limite à gauche en 0 qui est infinie. Mais les exemples plus tendancieux ne sont pas vraiment disponibles au lycée.
  • enfin, tu souhaites obtenir le signe de la dérivée en calculant "au pif" une valeur de la dérivée et en regardant son signe... et tu fais pour cela l'hypothèse que la dérivée ne change pas de signe sur les intervalles que tu as découverts (ce qui, déjà, suppose que tu as bien tout trouvé, sinon, bonjour le foirage !) Mais malheureusement, c'est faux... si la fonction n'est pas dérivable partout. Par exemple,
    $mathjax$x\mapsto 1+|x|$mathjax$
    .

Bref, même si ce sont des cas que l'on pourrait appeler "pathologiques", ils sont tous au programme du lycée... et ne pourront pas être traités de la façon dont tu l'espères.
Je ne vois pas comment on pourrait se passer d'une recherche formelle.

Re: Tableau de variation v2

Unread postPosted: 02 Nov 2016, 14:09
by GalacticPirate
Bisam, merci pour le soutien :troll:
Plus sérieusement, si tu as une meilleure méthode bon formelle... Bon, la première routine est codée en tout cas. Et elle fonctionne, désolé Bisam, même avec x^2 :p En fait, en prenant un pas de 10^-4, ca risque de prendre dans les 30 h, alors j'ai remis l'a pas à 0.1... Il détecte bien tous les zéros de la dérivée pour des fonctions simples, mais ça reste extrémement lent...