Page 1 of 4

SD: SuperDérivée

Unread postPosted: 16 Mar 2011, 17:13
by critor
Je suis sur un classeur de dérivation par étapes pour TI-Nspire CAS.
Le style de programme qui se télécharge normalement très bien, parce que y'a juste à récopier.

Il donne toutes les formules et les applique, bref tous les détails sauf:
- le fait que la dérivée de la variable c'est 1
- le fait que la dérivée de la constante c'est 0

L'algorithme récursif de parcours en arborescence semble correct, me produisant plusieurs écrans de dérivation avec les formules les plus compliquées.

Les étapes de dérivation sont indentées selon l'arborescence, et sont affichées en PrettyPrint.


Exemple:

Image


J'aimerais plus vous poser des questions sur la forme d'affichage des résultats.

Comme vous le voyez, dans les différentes formules, la dérivée de cos(x) est notée d(cos(x)).


Voyez-vous une solution pour la noter de façon plus exacte/compréhensible sans inconvénient?

Je vois:

*possibilité de convertir en chaîne où l'on pourra faire tout ce que l'on veut, mais on perd alors l'affichage PrettyPrint...

* la notation différentielle d/dx(), mais:
- elle sera automatiquement évaluée lors de l'affichage, l'on n'obiendra donc pas la formule puis son résultat mais 2 fois le résultat... est-il possible de bloquer l'évaluation d'une expression?
- les étapes toutes détaillées avec des d/dx() prendront plus de place verticalement (fraction), et je trouve que ça risque d'être lourd si elles sont nombreuses

* l'utilisation du caractère " ' " que je n'arrive pas à comprendre:
- cos'(5) donne une erreur de syntaxe
- 2' donne aussi une erreur de syntaxe
- (x+2)' donne encore une erreur de syntaxe
- u' marche si u n'est pas défini
- u'(5) marche aussi
- u'(6)/2 donne curieusement u'6/2 sans parenthèses et avec le u' devant la fraction...


Je cherche à ce que ce soit le plus lisible/compréhensible par des élèves de Première/Terminale.


L'algorithme est beaucoup plus puissant que celui que l'on a actuellement sur le portail.
J'arrive à détailler des dérivées de puissances de fonctions, de formules avec des fonctions non définies ou même des fonctions à plusieurs variables...

Re: SD: SuperDérivée

Unread postPosted: 16 Mar 2011, 18:40
by Levak
C'est vrai que d(quelquechose) n'est pas d(quelquechose)/dx ... et ça on le comprend dans le supérieur.

Après, en 1ere/Terminale, étant donné qu'on ne fait pas vraiment de différence, un petit readme avec la remarque passera bien.

Personnellement, je ne vois rien à redire si ce n'est les espaces avant. Tu dis que c'est pour faciliter la lecture. Peut-être sur Ordi, mais sur calto, tout caractère est déjà difficile à parcourir (1/3 secondes) alors autant d'espaces ...

Ce que je peux te proposer c'est également la chose suivante :
Je vois que tu utilises une matrices, mais est-ce seulement un Disp ?
Car dans ce cas, une matrice globale "result" agrandie à chaque étape récursive permettrait de diminuer l'affichage avec la technique result[i] où i est un nombre compris entre 1 et le nombre d'étapes.

Ainsi, dans le Disp on n'afficherait que le nombre d'étapes totales et ça serait à l'utilisateur de faire un result[i].

Re: SD: SuperDérivée

Unread postPosted: 16 Mar 2011, 19:00
by Bisam
Le d(...) me paraît tout-à-fait compréhensible... mais il est vrai que si tu veux un programme où il n'y a plus qu'à recopier, c'est trompeur.

Pour ce qui est de l'affichage, je me serais contenté d'un programme récursif qui fait des Disp pour montrer les étapes et retourne comme résultat le calcul de dérivée intermédiaire.
Tu peux si tu y tiens faire afficher la profondeur de récursivité au passage.

Re: SD: SuperDérivée

Unread postPosted: 16 Mar 2011, 21:44
by critor
Donc il n'est pas possible d'utiliser une expression non évaluée/simplifiée comme en LISP, si je comprends bien?

Et le comportement bizarre de l'opérateur postfixé " ' ", vous y comprenez un peu plus que moi?

Re: SD: SuperDérivée

Unread postPosted: 16 Mar 2011, 22:19
by Levak
'' (et non pas ") est une seconde
' une minute
° une heure

Dès que le résultat est affiché, il est évalué, et donc parsé, et donc vérifié, et abouti donc à d'éventuelles erreurs. A ma connaissance on ne peut pas afficher en pretty-print sans évaluer l'expres​sion(j'avais trouvé un work-around pour mCAS mais pas pour ce cas de figure).

Re: SD: SuperDérivée

Unread postPosted: 17 Mar 2011, 16:46
by critor
Quelqu'un peut tester le classeur SD: SuperDérivées ?
Pour OS 1.6 et ultérieurs.

L'onglet de documentation est complété.


PS: Mic, ce serait bien de pouvoir uploader directement des fichier "tns"...

Re: SD: SuperDérivée

Unread postPosted: 17 Mar 2011, 17:57
by Bisam
Je vérifie ça tout de suite.

Re: SD: SuperDérivée

Unread postPosted: 17 Mar 2011, 20:16
by Bisam
Voici mon avis : c'est presque parfait.
Je rajouterais une règle pour les dérivées de formes intégrales car pour l'instant, on obtient le résultat tout cuit, sans explication.
Certes, cela n'arrive jamais en Lycée d'avoir une primitive non calculable, et encore moins d'avoir des bornes qui dépendent de la variable... mais pour le supérieur, cela pourrait être un plus.

Par ailleurs, je n'ai pas vraiment compris pourquoi tu faisais à chaque fois un cas particulier pour
Code: Select all
string(zder(part(ex,1),var))="0"

Re: SD: SuperDérivée

Unread postPosted: 17 Mar 2011, 20:30
by critor
Merci Bisam pour ton test très poussé.

Bisam wrote:Par ailleurs, je n'ai pas vraiment compris pourquoi tu faisais à chaque fois un cas particulier pour Code:
string(zder(part(ex,1),var))="0"



Pour afficher les cas particuliers de formules.
Par exemple: 1/u - -u'/u²

Re: SD: SuperDérivée

Unread postPosted: 24 Mar 2011, 22:10
by critor
Et voici la démo!

Image


J'ai rajouté les intégrales pour Bisam.

Sinon, y'a un truc qui n'est pas encore détaillé, ce sont les dérivées de fonctions à plusieurs variables.
La notation "dérivée partielle" m'embête énormément puisque je génère des expressions PrettyPrint, et non des chaînes de caractères linéaires...