Deutsch   English   Français   Italiano  
<tih82e$1637$1@gioia.aioe.org>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!aioe.org!ehPmoIe1VPaiJg2plNRepQ.user.46.165.242.91.POSTED!not-for-mail
From: Arachide <houten.van@orange.fr>
Newsgroups: fr.comp.sys.atari
Subject: =?UTF-8?Q?FORTH_s=27=c3=a9toffe_en_Maths?=
Date: Sun, 16 Oct 2022 17:30:24 +0200
Organization: Aioe.org NNTP Server
Message-ID: <tih82e$1637$1@gioia.aioe.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Info: gioia.aioe.org; logging-data="39015"; posting-host="ehPmoIe1VPaiJg2plNRepQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Thunderbird 680x0 for Windows powered by Atari
X-Notice: Filtered by postfilter v. 0.9.2
Content-Language: fr
Bytes: 3346
Lines: 110

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.jpg

On 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