Forum

Catégorie : Programmes
Forum : Aide à la programmation
Vues : 4353
Réponses : 25
Type : discussion
Etat : réponses autorisées

Algorithme de tracer de courbe

monsalbert le 28/11/2011 à 19:23
bonsoir,

ce livre propose un algorithme de tracer de courbe :
- entrée
a, b bornes
f fonction étudiée
N =10
- initialisation
pas (b-a)/10
x =a
-traitement
marquer le point de coordonnées (x; f(crazy.gif)
x prend la valeur x+pas

comment traiter ces 2 lignes? que peut-on attendre de la TI ? elle va calculer les cooerdonnées sous forme de couple (x; y)?
le programme executé fera t-elle le graphe ?
cKZO le 28/11/2011 à 20:44
il fera le graph si tu lui demande winkle.gif
linkakro le 28/11/2011 à 20:52
Pour dessiner une courbe directement et point par point : il faut d'abord régler le graphe.
En général on tape ZStandart avec zoom+6. Cela dépend des besoins.
L'autre ménière de gérer tout ça est de stocker les valeurs dans un menu statistique puis la machine effectue tout le travail de réglage de la fenêtre et le tracé automatiquement.

Le programme que tu présente partiellement calcule 10 points dans l'intervalle saisi au début et les trace un par un.

Code
Prompt A,B
Input Y1   // Y1 se trouve dans le menu var. Il faudra saisir des guillemets
FonctOff
(B-A)/10->P
ZStandart
For(X,A,B,P)
Pt-On(X,Y1(X))
End

précision : A->X // dans un autre language c'est X:=A
sandro le 28/11/2011 à 20:59
Essaye ça:
Code
:Prompt A,B    //prompt est dans prgm/droite et la virgule est celle audessus du 7
:Imput "F(X)=",Chaîne1      //idem ; chaîne1 ce trouve en faisant var/7/1
:Chaîne1 -> Y1   //Y1 se trouve en faisant var/droite/1/1 attention: pas Y puis 1
:Prompt N
:(B-A)/N -> P
:A -> X
:While X différend_de B       //différend de se trouve dans 2nde/math
:Pt-On(X,Y1(X       //pt-On est dans 2nde/programme/droite
:X+P->X
:End


c'est le code qui me semble le meiux correspondre à ton énnancé (même si on pourrait faire plus court).
Je suis partit du principe que N est le nombre de points (sauf celui de départ) et qu'on peut lke choisir
Persalteas le 29/11/2011 à 09:09
Marche aussi avec un For :

Code

:Prompt A,B
:Imput "F(X)=",Chaîne1
:Chaîne1 -> Y1
:Prompt N
:(B-A)/N -> P
:For(X,A,B,P
:Pt-On(X,Y1(X     
:End


Si tu veux qu'il affiche les valeurs, en plus:

Code

:Prompt A,B
:Imput "F(X)=",Chaîne1
:Chaîne1 -> Y1
:Prompt N
:(B-A)/N -> P
:For(X,A,B,P
:Output(1,1,"X="
:Output(1,3,X
:Output(1,6,"Y="
:Output(1,8,Y1(X)
:Pause
:Pt-On(X,Y1(X
:End


Tu dois appuyer sur [entrer] pour chaque X.
Ensuite, quand le programme est fini, tu appuies sur [graphe] et tu peux voir le graphique.
monsalbert le 29/11/2011 à 18:05
merci à tous trois. j'adore avoir plusieurs points de vue.impeccable.
il ne rest plus qu'à executer
- c'est fait pour celui de linkakro .
une surprise : je pensais que TI n'allait faire que de 0 à 1 ( intervalle de definition choisit).

ayant pris N=10 le pas fait 1/10 surprise egalement de voir x evoluer de 1 en 1 ( et pas de 0,1 en 0,1)
linkakro le 29/11/2011 à 20:48
Ce que tu décris n'est pas normal pour chacun de nos programmes.
Tu dois avoir commis une erreur ici : "(B-A)/10->P" ou "(B-A)/N->P"

Remarque que les Chaînes servent à ne pas avoir besoin de guillemets mais que je ne voulais pas compliquer dès le départ.
monsalbert le 30/11/2011 à 20:04
- on devrait voir 10 points..
bien sûr je mets les guillemets et la fonction est bien prise en compte puisque des A, B, et la fct enregistrés le graphe apparait sans que je lui demande.

le code a bien (B-A)/10->P .

je ne vois pas d'où vient l'erreur. le code est le même que le tien
linkakro le 30/11/2011 à 22:13
Ajoûte FonctOff juste avant le For.
Car sinon mon programme trace ses 10 points par dessus la fonction Y1 tracée automatiquement.
FonctOff permet de désactiver la fonction Y1.
Ainsi elle ne se tracera plus et tu pourras admirer les points calculés par le programme. (sachant que désactiver le tracé n'empêche pas de calculer)

En gros tu croyais que la courbe était tracée par le programme alors que le graphe traçais une fonction automatiquement.


Si la fenêtre ne convient pas, enlève ZStandart et modifie les dimensions de la fenêtre hors du programme puis lance le programme.
monsalbert le 01/12/2011 à 17:19
voilà
- " Ajoûte FonctOff juste avant le For." /exécuté
- ZStandart / supprimé

bilan: quand on lance le programme le graphe de f(crazy.gif apparait une seconde et disparait ( FonctOff fait son boulot ) mais ensuite on ne voit rien que les axes. pas les 10 points.

Rq :
intervalle de definition proposé 0 ,1/ la fct proposée -3x^2+2x
dans la fenêtre j'ai mis xmax=1 / xmin=0 xgrad =0.1 (N=10)
ymax=0 /y min= -1 ygrad=0.1

dans table il n'y avait que les valeurs entieres de x

Y aurait-il un autre menu concerné? concernant les fcts ou les graphstats ( je crois savoir qu'il y a parfois de l"'eau dans le gaz"!! entre eux..
)
linkakro le 01/12/2011 à 17:39
Je ne sais pas encore d'où vient l'absence des points.
Je pense que ça vient de ta fenêtre.

Pour vérifier si ça marche, execute Zstandart puis teste la fonction Y=X entre 0 et 10 sur 10 ou 20 points.
Tu devrais alors obtenir des points en haut à droite sur la diagonale.

Si vraiment tu ne parviens pas à utiliser mon code (que j'ai testé) tu peux te rabattre sur ceux des autres. Mais dans tous les cas ajoûte FonctOff entre la définition de Y1 et la boucle.

Pour consulter le tableau de valeurs "automatiques", il faut activer les fonctions. Les paramètres de cette table et le reste sont indépendant de nos programmes.
CF mon autre message pour une énumération de menus et paramètres.
J'y ajoûte : place le curseur sur "=" en face de Y1 dans le menu y= et appuie sur entrer pour activer/désactiver la fonction sans la commande FonctOff.

Les graphs statistiques s'activent en haut du menu y= et se règlent en détail avec [2nde]+[y=(graphstat)].
Ils permettent de tracer des graphiques à partir de valeurs contenues dans des listes.
Je proposais au début de remplir les listes et d'activer le graph statistique avec le programme puis de laisser la caltoche calculer la fenêtre avec ZoomStat.
Mais je n'ai pas creusé ce sujet car cela est plus compliqué et que le paramétrage du graphe statistique depuis le programme est un peu craignos.
monsalbert le 02/12/2011 à 18:38
bonsoir,

super tout marche.

finalement ZStandart n'était pas utile. Par contre FonctOff a été determinant( et la bonne place avant la boucle ) du coup les 3 codes ont marché immediatemet

bien joué de me proposer f(crazy.gif= x de 0 à 10 ! celà a permis de voir les points!!
c'est qu'ils sont petits!
peut-on changer la taille des points ? (des petites croix seraient preferables)

il y avait donc conflit entre le programme et la fonction f(crazy.gif (qu'on voit dans la touche f(crazy.gif -touche blanche) . Peut me preciser ce FonctOff ?
Peut me preciser aussi Pt-On (X,Y(X ?

persalteas : super avec les points!!!.. c'est par hasard que j'ai decouvert
le "pot aux roses"!

sandro merci d'avoir bien preciser le code ( y compris Pt-On (X,Y(X )
linkakro le 03/12/2011 à 00:34
Par "préciser" veux-tu une définiton ou un ajoût dans les codes ?

J'ai déjà ajoûté FonctOff dans mon code mais ce n'est pas leur cas.
FonctOff sert à désactiver toutes les fonctions.
FonctOff 1,2 sert à désactiver uniquement les fonctions 1 et 2 (mais pas forcément Y1 et Y2 puisqu'il y a aussi r1 et r2 en mode polaire)

Pt-On(X,Y) trace un point de la taille d'un pixel en X,Y.
Pt-On(X,Y,2) le marqueur du point sera un carré vide
Pt-On(X,Y,3) la marqueur sera une croix
Ces marqueurs sont accessibles aussi dans les graphes statistiques.

Y1(X ) calcule la valeur de Y=f(X ) pour l'équation f(X ) stockée dans Y1.
Y1(A) fonctionne aussi.
Pt-On(X,Y1(X)) trace donc le point (X,f(X ))

ps: les espaces servent à éviter le smiley crazy.gif
monsalbert le 05/12/2011 à 19:38
- oui un ajout explicatif dans les codes comme tu viens de le faire( inutile si vous avez deja explqué bien sûr )

peux-tu donc preciser ces lignes de persalteas

:Output(1,1,"X="
:Output(1,3,X
:Output(1,6,"Y="
:Output(1,8,Y1(X)
ce fût assez special !! la machine commençait par afficher tout en haut (x, y)de depart et il fallait cliquer dessus pour passer au coordonnées suivantes ( je n'en savais rien! je pensais que les coordonnées allaient paraitre toutes sur l'écran) ) , après le graphe se mettait en place mais comme les points faisaient 1 pixel!! .je ne les ai pas vu tout de suite..
Persalteas le 05/12/2011 à 21:19
Ces fonctions servent juste à afficher "X=... Y=..." en haut de l'écran.

Le fait que tu doive cliquer vient de la Pause, mais je l'ai mise pour que tu aies le temps de noter les valeurs.

Sinon, ça se fait tellement vite que tu n'as pas le temps de le voir.

Output( est une fonction qui sert à afficher quelque chose a un endroit précis de l'écran.

Output(ordonée sur l'écran,abscisse sur l'écran,chose a afficher

l'abscisse est comprise entre 1 et 16, l'ordonnée entre 1 et 8.

donc:
Code

:Output(1,1,"X="    // tu affiches en haut à gauche de l'écran "X="
:Output(1,3,X       // tu affiches juste un peu plus a droite la valeur de X
:Output(1,6,"Y="    // tu affiches encore plus a droite "Y="
:Output(1,8,Y1(X)   // tu affiches tout a droite l'image de X par la fonction contenue dans Y1.
monsaibert le 06/12/2011 à 18:57
merci persalteas,

le livre poursuit: faire fonctionner cet algorithme pour f definie sur 0,2
f(crazy.gif=1 si x compris entre 0 et 1
f(crazy.gif=x+1 si x compris entre 1 et 2
en prenant N=20

1 -comment modifie t-on l'algorithme avec finalement 2 fonctions et 2 intervalles de definition?

2- est-il possible ( dans un autre ordre d'idée)d'ecrire dans le menu f(crazy.gif pour y1 une fonction composée de plusieurs formes algebriques definies sur des intervalles successifs ( genre fonction en escalier ) et visible dans graphe ?
sandro le 06/12/2011 à 20:02
Il y a une astuce pour les fonctions composées (dans l'éditeur f(crazy.gif comme pour le programme:
(cond1)(fn1)+(cond2)(fn2)+...+(condX)(fnX)

avec cond? une condition équivalente à l'interval (par example "X<2" pour l'interval ]-inf;2[ ; X>=2 et X <= 5 pour l'interval [2;5] ;... (>= et <= étant les tests de comparaisons)

et fn? les fonctions sur l'interval donné

Sandro
linkakro le 06/12/2011 à 20:07
Code
Prompt N
FonctOff
ZStandart
For(X,0,2,2/N)
If X<=1
Pt-On(X,1
If X>1
Pt-On(X,X+1))
End

Sinon il te faut utiliser les tests inclus dans les calculs comme a dit sandro
CF fin de l'article test

Y1=(X<=1)+(X+1)(X>1)
correspond à la fonction par morceaux
{Y=1 si X<=1
{Y=X+1 si X>1
monsaibert le 07/12/2011 à 20:14
linkakro ,c'est bon. Donc pas de input Y1 et Y2.
Pt-On enregitre la fonction ,fait le calcul de f(crazy.gif et note le couple (x,y).

par contre avec l'editeur f(crazy.gif problème : comme l'ecrit sandro
Y1= (entre 0et2)(2)+ (entre 2et 4 )(4)) ( un escalier) on a n'importe quoi.
linkakro le 07/12/2011 à 20:35
Mon dernier programme donne l'équivalent des tests inclus aux fonctions.
Je t'ai donné le lien vers un tuto là dessus et t'ai donné un exemple qui verrifie ta fonction entre 0 et 2.

Une ambiguité demeure sur les intervalles de définitons.

La dernière fonction que tu proposes s'obtient avec :
Y1=2(0<X and X<2)+4(2<X and X<4)
ou bien ceci si tu étudie ta fonction sur (0,4)
Y1=2(X<2)+4(2<X)
monsaibert le 08/12/2011 à 17:09
-" si tu étudie ta fonction sur (0,4)
Y1=2(X<2)+4(2<X)"

cette forme fonctionne bien sûr sur tout l'axe xx' (pas de 0 à 4)

- curieux "Y1=2(0<X and X<2)+4(2<X and X<4)" ne marche pas, on voit un trait sur tout xx' à y = +2.

- que faut-il faire pour enregister ton magnifque article ( je n'avais pas vu le lien )? il va falloir revoirtout çà.
Persalteas le 08/12/2011 à 17:30
Citation

"Y1=2(0<X and X<2)+4(2<X and X<4)"


Moi quand je fais ça, j'ai une sorte de courbe en marche d'escaliers.
( un trait à Y=2 pour X entre 0 et 2 et un trait à Y=4 pour X entre 2 et 4, et un grand trait à Y=0 pour toutes le autres valeurs de X. )

Son article sur les tests est là: https://tout82.pages-perso.fre[...].php?sujet=2741

pour l'enregistrer, ben... ça dépend de ton navigateur web !
monsalbert le 09/12/2011 à 19:44
ôtez moi d'un doute!!..le "and" en minuscule?
je l'ai tapé au clavier.
rq : au fait la TI peut-elle ecrire en minuscule ?
The K le 09/12/2011 à 19:50
Non, c'est le "et" (en français ou and en anglais) dans le menu test, que l'on obtient en faisant [seconde]+[math], puis flèche droite. Tu le trouveras la winkle.gif
sandro le 09/12/2011 à 20:08
Citation
rq : au fait la TI peut-elle ecrire en minuscule ?

Avant la TI83+, pas vraiment, mais il en existe quand même quelques unes, les suites u,v et w ; ainsi qu'un certain nombre d'autre, surtout dans le menu vars/5 (dans les diverses sous menus optenus ensuite;...

Sandro
monsaibert le 13/12/2011 à 18:45
parfait celà marche.
C'etait la question du AND qui est un et (TIStat.fr bien sûr! mais comme on utilise quand même l'anglais..)

merci encore.