Page 1 sur 1

Tricraprog Épisode 3, le LOGO

Publié : 28 juil. 2020 15:15
par Mokona
Un an et quelques jours après l'épisode sur le BASIC, en voici un nouveau sur le LOGO.


Re: Tricraprog Épisode 3, le LOGO

Publié : 29 juil. 2020 00:50
par __sam__
Super! Je l'ai regardé en mangeant ce soir. As tu connaissance de sources autres que ce que tu montres dans la vidéo utilisant l'aspect symbolique (à la lisp) du logo ? Je pense à des trucs sympa (pour moi) comme des calculs de dérivées d'expression mathématiques (à une époque c'était mon hobby de faire ca en basic, et j'avais galéré comme pas possible), ou mieux des calculs de développement limités (idem, je faisais ca quand j'étais jeune quand les adultes pensaient que je "jouais" sur l'ordinateur(1).)
____
(1) C'est pas faux dans le fond car pour moi programmer est un jeu, mais un jeu sérieux bien plus intéressant que de battre un high-score.

Re: Tricraprog Épisode 3, le LOGO

Publié : 29 juil. 2020 10:53
par gleike
Vidéo très intéressante, concept du Logo et de ses dérivés bien expliqué d'une voix claire et compréhensible.

J'essaye toujours d'obtenir et d'installer le Logo si il est disponible sur les machines que je possède,
mais je ne pousse pas la programmation trop loin.

Merci.

Re: Tricraprog Épisode 3, le LOGO

Publié : 29 juil. 2020 22:36
par joaopa
Bonsoir,

quelqu'un a t-il déjà vu des sources en Z80 pour un logo? J'ai farfouillé sur le web. Je n'ai rien trouvé de probant à part un logo home-made pour calculatrice TI...

Re: Tricraprog Épisode 3, le LOGO

Publié : 30 juil. 2020 18:49
par Mokona
Merci.

Pour les développements limités, je n'ai jamais fait ça en Logo. Parser une fonction et en trouver sa dérivée est un exercice que j'ai déjà vu passer dans un bouquin... il faudrait que je retrouve.

Je n'ai pas trouvé de sources Z80 pour du Logo non plus. J'avais commencé à écrire un interpréteur Logo au début de mon étude pour bien comprendre le langage. L'idée était ensuite d'en porter une version sur Z80 et d'en faire une ROM VG5000... Bon... mon interpréteur n'étant pas terminé, je n'en suis pas là...

Re: Tricraprog Épisode 3, le LOGO

Publié : 30 juil. 2020 23:50
par __sam__
Les développements limités c'est très facile à partir du moment ou l'on est capable d'évaluer une expression symbolique, sauf qu'au lieu de l'évaluer avec des nombres "simple", on les évalue avec des trucs "genre polynômes (sauf que le produit n'augmente pas leur degré, tout est mangé par le O(x^n)... c'est une sorte de "modulo"). Ca se code super bien en fait, mais ca ne couvre pas toutes les expressions imaginables si on tombe sur une expression dont on a pas encodé l'évaluation.

L'autre possibilité et de calculer les dérivées symboliques successives, puis de les évaluer au point qu'on souhaite (0 en général), et utiliser le développement de Taylor. Ca doit donner le même résultat, mais à coup sur ici (on sait dire quand il n'y en a vraiment pas, et pas parce qu'il nous manque une règle d'évaluation).

Re: Tricraprog Épisode 3, le LOGO

Publié : 31 juil. 2020 23:25
par Carl
Sympa cette épisode Logo, Merci Mokona !

Si quelqu'un à besoin de doc sur le sujet, j'ai quelques bouquins PDF de dispo : (1 Go environ).
log1.jpg
log1.jpg (536.15 Kio) Consulté 8316 fois
log2.jpg
log2.jpg (533.05 Kio) Consulté 8316 fois
log3.jpg
log3.jpg (452.14 Kio) Consulté 8316 fois
Carl

Re: Tricraprog Épisode 3, le LOGO

Publié : 01 août 2020 00:09
par Asic512
Un exemple comme le développement à l'ordre 2 en 0 de x^3sin(1/x) doit laisser de telles méthodes muettes non ?

Re: Tricraprog Épisode 3, le LOGO

Publié : 01 août 2020 00:43
par __sam__
Ben oui, parce que le développement limité n'existe pas en 0 pour cette fonction (la dérivée seconde -4 cos(1/x) + (-1 + 6 x^2) sin(1/x)/x, n'a pas de limite en 0).

Re: Tricraprog Épisode 3, le LOGO

Publié : 01 août 2020 10:13
par Asic512
En fait, x^3sin(1/x) est un O(x^3) donc un o(x^2) : le développement limité existe donc à l'ordre 2 en 0. Il est vrai par contre que la dérivée seconde n'existe pas en 0. Tous les développements limités ne sont donc pas de Taylor ... C'est la revanche de l'homme sur la machine :wink: .

Re: Tricraprog Épisode 3, le LOGO

Publié : 01 août 2020 13:59
par __sam__
Et oui en effet puisque sin() est borné, x^3*sin()/x^2 -> 0 en 0, donc o(x^2), son D.L. est 0. Il fallait revenir à la définition.. mais tiens c'est étrange, mon vieux programme me donne:
dcmoto02.png
dcmoto02.png (4.98 Kio) Consulté 8274 fois
Comment c'est possible? je pense que c'est un bug, car le calcul du D.L. de 1/x en 0 me retourne 0 au lieu d'erreur dans la division des polynômes :lol:

Re: Tricraprog Épisode 3, le LOGO

Publié : 04 août 2020 20:41
par pascalien
En effet je ne connaissais pas en détail le LOGO.

Il y avait sur le pascal apple2 une unité turtle.

Sinon, de mémoire, dans feu microsystèmes, il y a avait eu un article sur lisp et le calcul symbolique.
Je m'en était servi de base pour mes petits bidouillages lisp
http://franck-pissotte.fr/perso/logiciels.htm (programme symbolisp.7z)

Re: Tricraprog Épisode 3, le LOGO

Publié : 04 août 2020 22:01
par Asic512
@sam : il n'est pas difficile d'obtenir le développement asymptotique en 0 des fractions rationnelles. On se ramène (quitte à multiplier le numérateur par une puissance de x assez grande) au cas où le degré du numérateur est plus grand que celui du dénominateur et on peut faire une division selon "les puissances croissantes" du premier par le second (il n'y a pas de "division par zéro").

Comment obtenais-tu les DL dans ton programme ? Tu analysais l'expression fournie et tu remplaçais chaque fonction classique sin/exp/cos par leur DL avec les règles usuelles de composition et multiplication ?

Re: Tricraprog Épisode 3, le LOGO

Publié : 05 août 2020 01:40
par __sam__
Oui c'est ca.. l'algo connait les D.L. des fonctions traditionnelles (sin(x), cos(x), tan(x), exp(x), sqrt(1+x), ln(1+x), ...), puis les compose (en faisant le produit, l'addition, les compositions) lors du parsing de l'expression. D'une certaine façon cela revient à évaluer l'expression symbolique non pas avec des nombres mais avec des polynôme modulo un degré fixé.

L'exercice est assez tordu en basic sans variables locales (à l'époque je ne connaissais que ca), mais trivial et assez jouissif à coder avec les langages polymorphiques (ce que ferais de nos jours).

Le programme basic affiche une erreur quand, lors de la composition F o G, le polynôme de G commence par un terme constant. En fait on pourrait être plus fin et voir que pour certaines fonctions F on peut exprimer le dev limité autour de n'importe quelle valeur a non nulle (sqrt(a+x) = sqrt(a)*sqrt(1 + x/sqrt(a)), ln(a+x) = ln(a) + ln(1 + x/a), exp(a+x)=exp(a)*exp(x)), on pourrait pousser le calcul plus loin. Mais bon j'étais jeune et j'avais faim votre honneur ;) [ah non c'est la mauvaise excuse ;) ]

Si le logo peut manipuler les listes et les floats aussi facilement que ne le ferait un lisp, je me replongerait bien dans l'exercice.