Page 1 sur 1

Tracer une fonction particulière

Publié : sam. mai 28, 2011 6:30 pm
par pomette222
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

Re: Tracer une fonction particulière

Publié : sam. mai 28, 2011 6:50 pm
par alb
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)

Re: Tracer une fonction particulière

Publié : sam. mai 28, 2011 7:28 pm
par pomette222
Super merci!! J'essaie de ce pas!

Re: Tracer une fonction particulière

Publié : lun. mai 30, 2011 6:04 am
par alain974
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)))

Re: Tracer une fonction particulière

Publié : lun. mai 30, 2011 6:10 am
par pomette222
Fallait y penser! je ne connaissais pas cette "fonction" sign!
J'essaierai la manip, merci!

Re: Tracer une fonction particulière

Publié : mer. juin 01, 2011 7:55 pm
par alb
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.

Re: Tracer une fonction particulière

Publié : jeu. juin 02, 2011 11:30 am
par parisse
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.

Re: Tracer une fonction particulière

Publié : jeu. juin 02, 2011 12:07 pm
par parisse
Impossible de déterminer pourquoi ça crashe, par contre shift-STOP arrive à l'interrompre.

Re: Tracer une fonction particulière

Publié : ven. juin 03, 2011 1:22 pm
par alb
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);

Re: Tracer une fonction particulière

Publié : sam. juin 04, 2011 6:41 am
par alain974
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...

Re: Tracer une fonction particulière

Publié : sam. juin 04, 2011 7:15 am
par parisse
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.

Re: Tracer une fonction particulière

Publié : sam. juin 04, 2011 7:37 am
par alb
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

Re: Tracer une fonction particulière

Publié : sam. juin 04, 2011 9:13 am
par alain974
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!

Re: Tracer une fonction particulière

Publié : sam. juin 04, 2011 12:01 pm
par alb
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