Sujet : FORTH s'étoffe en Maths
De : houten.van (at) *nospam* orange.fr (Arachide)
Groupes : fr.comp.sys.atariDate : 16. Oct 2022, 16:30:24
Autres entêtes
Organisation : Aioe.org NNTP Server
Message-ID : <tih82e$1637$1@gioia.aioe.org>
User-Agent : Thunderbird 680x0 for Windows powered by Atari
Coucou,
j'avais déjà une routine SOLVE et une GAUSS pour résoudre une équation ou intégrer une fonction.
Après un démarrage hier, j'ai pris le temps de finaliser aujourd'hui.
Voilà trois nouvelles routines pour tracer des courbes:
GR_Y(X) pour les fonctions standard de x
GR_XY(T) pour les courbes paramétrées
GR_R(T) pour les courbes polaires.
A cela s'ajoutent:
GR_WINDOW pour fixer les limites de la fenêtre mathématique
GR_AXES pour tracer les axes.
A titre d'exemple, voici un petit programme qui se propose d'étudier l'influence du paramètre k dans ces deux situations:
1) y = sin(k.x)
2) y = k.sin(x)
Voici le résultat à l'écran (sur la Vampire):
https://gtello.pagesperso-orange.fr/temp/graph.jpgOn peut bien sûr changer les couleurs des courbes ou des axes, je n'ai pas ajouté ceci pour rester simple.
Guillaume.
Le programme pour ceux qui aiment lire le FORTH:
; les deux variables x et PARAM (qui représente k)
&float x
&float PARAM
; les trois zones écran
&page COM
&page DRAW1
&page DRAW2
>comp
; COM sera la colonne de gauche, zone de commande
2 1 page0 setsubpage
0 page0 getsubpage COM defpage
; DRAW1 et 2 seront les deux zones de tracé à droite
2 2 page0 setsubpage
1 page0 getsubpage DRAW1 defpage
3 page0 getsubpage DRAW2 defpage
>comp
; ici on définit les deux fonctions
:: FN1
x f@ PARAM f@ f* sin
;
:: FN2
x f@ sin PARAM f@ f*
;
; dessin sur le cadre du haut
: show1
DRAW1 setpage ; fixe ma zone de sortie
cls ; efface l'écran
." y=sin(k.x)" ; affiche le texte
( %f-3.14 %f3.14 %f-2.2 %f2.2 ) gr_window ; limites des axes
( %f0 %f0 0 ) gr_axes ; trace les deux axes
%f1 PARAM f! ; initialise k à 1
7 ndo ; bouclera 7 fois
( 'FN1 x %f-3.14 %f3.14 100 ) gr_y(x) ; on trace une courbe
( PARAM f@ %f0.1 f+ ) PARAM f! ; on augmente k de 0.1
nloop
COM setpage ; retour aux commandes
;
; dessin en bas, même procédure sur DRAW2
; et avec la fonction FN2
: show2
DRAW2 setpage
cls
." y=k.sin(x)"
( %f-3.14 %f3.14 %f-2.2 %f2.2 ) gr_window
( %f0 %f0 0 ) gr_axes
%f1 PARAM f!
7 ndo
( 'FN2 x %f-3.14 %f3.14 100 ) gr_y(x)
( PARAM f@ %f0.1 f+ ) PARAM f!
nloop
COM setpage
;
>comp
; au démarrage, efface l'écran et donne la main
; sur la page de commande
cls
COM setpage
; je n'ai plus qu'à lancer show1 et show2