Tracer une fonction particulière

Utilisation de Xcas au lycée (sauf algorithmique), y compris projet d'epreuve pratique en Terminale S

Modérateur : xcasadmin

Répondre
pomette222
Messages : 7
Inscription : sam. mai 28, 2011 5:50 pm

Tracer une fonction particulière

Message par pomette222 » sam. mai 28, 2011 6:30 pm

Bonjour,
Je souhaiterais tracer la fonction suivante:
1 sur [0,pi]
-1 sur [pi,2pi]

mais je n'arrive pas a définir une telle fonction...

Pourriez vous m'aider??

C'est pour une illustration dans le cadre des séries de Fouriers.

Merci beaucoup,
Elodie

alb
Messages : 1229
Inscription : ven. août 28, 2009 3:34 pm

Re: Tracer une fonction particulière

Message par alb » sam. mai 28, 2011 6:50 pm

quelques pistes:
1/ le plus simple: plot(1,x=0..pi);plot(-1,x=pi..2*pi)
2/ f(x):=piecewise(x<0,undef,x<pi,1,x<2*pi,-1,undef) puis plot(f(x)) mais la discontinuité est mal gérée
3/ plot((-1)^k,x=k*pi..(k+1)*pi)$(k=0..1)

pomette222
Messages : 7
Inscription : sam. mai 28, 2011 5:50 pm

Re: Tracer une fonction particulière

Message par pomette222 » sam. mai 28, 2011 7:28 pm

Super merci!! J'essaie de ce pas!

alain974
Messages : 104
Inscription : lun. mai 24, 2010 11:15 am

Re: Tracer une fonction particulière

Message par alain974 » lun. mai 30, 2011 6:04 am

alb a écrit :le plus simple: plot(1,x=0..pi);plot(-1,x=pi..2*pi)
Je trouve celle-ci plus simple (surtout qu'elle est définie sur tous les réels):

Code : Tout sélectionner

plot(sign(sin(x)))

pomette222
Messages : 7
Inscription : sam. mai 28, 2011 5:50 pm

Re: Tracer une fonction particulière

Message par pomette222 » lun. mai 30, 2011 6:10 am

Fallait y penser! je ne connaissais pas cette "fonction" sign!
J'essaierai la manip, merci!

alb
Messages : 1229
Inscription : ven. août 28, 2009 3:34 pm

Re: Tracer une fonction particulière

Message par alb » mer. juin 01, 2011 7:55 pm

version shadockienne (pourquoi faire simple quand on peut faire compliqué)

Code : Tout sélectionner

f(x,T):={
  si type(x)==DOM_IDENT alors 
    retourne 'f'(x,T)
  fsi;//pour que f(a,2) renvoie f(a,2) et que f(7.2) renvoie 0.64
  tantque x<0 ou x>=T faire
    x:=x-sign(x)*T;
  ftantque;
  retourne piecewise(x<0,undef,x<T/2,sqrt(x),x<T,(x-2)^2,undef);
}
:;
Faire chercher des motifs sur [0,T[ et faire dessiner une frise,par exemple:
C:=plot(f(x,2));symetrie(droite(y=0),C)
Si je fais plot(f(x,2),xstep=0.01) le calcul ne s'arrête pas, en stoppant on a un crash.

parisse
Messages : 5079
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Tracer une fonction particulière

Message par parisse » jeu. juin 02, 2011 11:30 am

c'est à cause des erreurs d'arrondi (flottants en base 2) et du fait que sign(x) renvoie 0 si |x| est petit. Ainsi f(-5+300*0.01,2) boucle indéfiniment. Par contre il faudra que je rajoute un test de l'appui sur STOP pour éviter le crash.

parisse
Messages : 5079
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Tracer une fonction particulière

Message par parisse » jeu. juin 02, 2011 12:07 pm

Impossible de déterminer pourquoi ça crashe, par contre shift-STOP arrive à l'interrompre.

alb
Messages : 1229
Inscription : ven. août 28, 2009 3:34 pm

Re: Tracer une fonction particulière

Message par alb » ven. juin 03, 2011 1:22 pm

Pas grave on enlève sign

Code : Tout sélectionner

f(x,T):={
  si type(x)==DOM_IDENT alors
    retourne 'f'(x,T)
  fsi;
  tantque x>=T faire
    x:=x-T;
  ftantque;
  tantque x<0 faire
    x:=x+T;
  ftantque;
  retourne piecewise(x<0,undef,x<T/3,1+2x^2,x<2T/3,(15x-30)/(3x-8),x<T,sqrt(x-2),undef);
}
Ce qui permet en moins de 3 secondes d'obtenir le pavage suivant:

Code : Tout sélectionner

aff:=affichage=nom_cache;
C:=plot(f(x,3),x=-30..24,xstep=0.001,aff);
D:=symetrie(droite(y=1),C,aff);
seq(translation([0,4*k],D,aff),k=-3..3);
seq(translation([0,4*k],C,aff),k=-3..3);

alain974
Messages : 104
Inscription : lun. mai 24, 2010 11:15 am

Re: Tracer une fonction particulière

Message par alain974 » sam. juin 04, 2011 6:41 am

pomette222 a écrit :Fallait y penser! je ne connaissais pas cette "fonction" sign!
J'essaierai la manip, merci!
Entre les lignes je devine une question sous-jacente: Mais comment est-ce qu'on fait pour savoir qu'elle existe cette fonction-là?

Premier élément de réponse: En tapant "si" dans l'index, on la voit apparaître, avec sa description (j'utilise énormément l'index). Mais voilà: Comment est-ce qu'on pense à taper "si" dans l'index? Il faut pour cela savoir que dans certains langages de programmation il existe une fonction de ce genre et qu'elle porte un nom de ce genre, et regarder si par hasard Xcas n'en serait pas doté... Bref, il s'agit d'une connaissance plus accessible à ceux qui ont déjà une petite idée sur la réponse.

Comme un rugbyman pressé de se débarrasser d'un encombrant ellipsoïde de révolution, je transmets les remerciements à Renée de Graeve, dont les écrits sont si exhaustifs qu'on a tendance à toujours remettre leur lecture à "quand on aura le temps", mais qui valent vraiment la peine d'être lus, ne serait-ce que pour y trouver des idées (la fonction "sign" y est annoncée parmi les fonctions usuelles).

Un exercice intéressant (mais peut-être difficile en BTS) est de créer la fonction de Heaviside à partir de sign plutôt que par des tests...

parisse
Messages : 5079
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Tracer une fonction particulière

Message par parisse » sam. juin 04, 2011 7:15 am

alain974 a écrit :
Entre les lignes je devine une question sous-jacente: Mais comment est-ce qu'on fait pour savoir qu'elle existe cette fonction-là?

Premier élément de réponse: En tapant "si" dans l'index, on la voit apparaître, avec sa description (j'utilise énormément l'index). Mais voilà: Comment est-ce qu'on pense à taper "si" dans l'index? Il faut pour cela savoir que dans certains langages de programmation il existe une fonction de ce genre et qu'elle porte un nom de ce genre, et regarder si par hasard Xcas n'en serait pas doté... Bref, il s'agit d'une connaissance plus accessible à ceux qui ont déjà une petite idée sur la réponse.
Si vous ne connaissez pas les noms de commande, vous pouvez aussi en trouver un certain nombre dans les menus, en particulier le menu Cmds.

alb
Messages : 1229
Inscription : ven. août 28, 2009 3:34 pm

Re: Tracer une fonction particulière

Message par alb » sam. juin 04, 2011 7:37 am

Si j'ai besoin de trouver le signe d'un réel sans savoir comment faire je fouille dans la boîte à outils de la façon suivante:
AideRechercher un motje tape signe,je valideje parcours la liste des réponses par ex Les fonctions usuellesVoirje trouve sign

alain974
Messages : 104
Inscription : lun. mai 24, 2010 11:15 am

Re: Tracer une fonction particulière

Message par alain974 » sam. juin 04, 2011 9:13 am

Oui mais pour taper "signe" il faut savoir qu'il existe une fonction donnant le signe d'un réel; la méthode de parisse, même si elle n'est pas exhaustive, est meilleure pour découvrir l'existence même de cette fonction: C'est ce qu'Xcas apporte de mieux à giac selon moi: La possibilité de naviguer dans les menus!

alb
Messages : 1229
Inscription : ven. août 28, 2009 3:34 pm

Re: Tracer une fonction particulière

Message par alb » sam. juin 04, 2011 12:01 pm

Ce que je voulais dire c'est qu'on peut taper signe à l'intuition sans se douter de l'existence d'une fonction ad hoc
Autre exemple: l'élève qui cherche la fonction partie entière aura peut-être des difficultés à la trouver par Cmds tandis qu'en tapant partie entiere dans Rechercher un mot il devrait pouvoir s'en sortir seul.
Pour des élèves qui auraient la grosse tête on peut leur proposer de résoudre les exercices obtenus en recherchant einstein

Répondre