Page 1 sur 2

somme de fonctions

Posté : jeu. 21 mars 2013, 18:41
par zariski
Bonsoir !
Une petite idée pour tracer le graphe d'une somme de fonctions, style: somme(x^n,n=0..5) pour x dans [0,4] ?
Car "draw(graph ...)" ne marche pas !
Merci !

ps: j'ai cherché mais rien trouvé !

Re: somme de fonctions

Posté : jeu. 21 mars 2013, 20:02
par GM
Bonsoir,

deux idées me viennent... dont l'une est celle-ci :

Code : Tout sélectionner

import graph;
size(5cm,IgnoreAspect);
int n=5;
string fx="1",sfx;
for(int k=1; k<=n; ++k)
{
   fx += format("+x^%i",k);
}
sfx = "real f(real x) { return "+fx+"; }";
write(fx);
eval(sfx,true);
xaxis(Ticks(NoZero));
yaxis(Ticks(NoZero));
draw(graph(f,0,5));
label(Label("$f:x\mapsto "+fx+"$",Fill(yellow)),truepoint(N),3N);


La fonction eval ne passe pas sur le forum... donc à tester chez soi pour voir ce que cela donne.

Re: somme de fonctions

Posté : jeu. 21 mars 2013, 21:56
par zariski
Merci pour cette réponse inventive !
Cependant, mon exemple était un peu simpliste, en fait je souhaite représenter le développement en série de Fourier d'une fonction f :

3+\displaystyle \sum_{k=0}^{5}(12(-1)^k\frac{ \cos(\frac{(2k+1)2)\pi t}{4})}{(2k+1)\pi}

Re: somme de fonctions

Posté : jeu. 21 mars 2013, 22:58
par GM
Il devrait y avoir peu de choses à changer. Il y a notamment à remplacer :

Code : Tout sélectionner

+x^%i


par quelque chose qui commence ainsi :

Code : Tout sélectionner

+12*((-1)^%i)*...

Tu as à savoir à écrire "en ligne" le terme répété de ta somme.

Je ne l'ai pas fait moi-même car il y a au moins deux problèmes de parenthèses dans ton expression.

Re: somme de fonctions

Posté : ven. 22 mars 2013, 07:15
par zariski
A priori ça ne marche pas mais je dois surement faire une ânerie !


Code : Tout sélectionner

import graph;

unitsize(1cm);

int n=2;
string fx="1",sfx;
for(int k=0; k<=n; ++k)
{
   fx += format("+3+(12*(-1)^%i)*cos((1/4)*((2*%i+1)*2)*3.14*x)/((2*%i+1)*3.14)",k);
}

sfx = "real f(real x) { return "+fx+"; }";

write(fx);
eval(sfx,true);

// Les axes
//draw((-0.5,0)--(5,0),0.5bp+black,Arrow);  //horiz
//draw((0,-1)--(0,7),0.5bp+black,Arrow);   //vert

draw(graph(f,0,4,150), 1bp + rgb(0,0,1));

Re: somme de fonctions

Posté : ven. 22 mars 2013, 19:10
par zariski
j'ai trouvé ceci mais la courbe tracée ne correspond pas :

Code : Tout sélectionner

import graph;

unitsize(1cm);

int n=10;
string fx="3",sfx;
for(int k=0; k<=n; ++k)
{
 fx += format("+12*(-1)^%i*cos(((2*%i+1)*2*3.14*x)/4)",k)+format("/((2*%i+1)*3.14)",k);
}

sfx = "real f(real x) { return "+fx+"; }";

eval(sfx,true);

draw(graph(f,0,4,150), 1bp + rgb(0,0,1));

Re: somme de fonctions

Posté : ven. 22 mars 2013, 21:51
par GM
zariski a écrit :j'ai trouvé ceci mais la courbe tracée ne correspond pas

impossible de vérifier ce que tu fais...

... si tu n'indiques pas à quoi cela doit correspondre
et
... si tu ne rectifies ton expression mathématique au niveau des parenthèses : Image

Re: somme de fonctions

Posté : ven. 22 mars 2013, 22:40
par zariski
je l'avais rectifié lors de ma dernière mouture !
C'est le graphique qui ne donne pas le tracé escompté .

Re: somme de fonctions

Posté : ven. 22 mars 2013, 23:20
par GM
zariski a écrit :je l'avais rectifié lors de ma dernière mouture !
C'est le graphique qui ne donne pas le tracé escompté .


Je crois que l'on ne se comprend pas.

Tu dis que l'as rectifié... mais moi la seule expression que j'ai sur le forum, c'est celle avec les problèmes de parenthèses.

Tu me redis que le graphique ne donne pas le tracé voulu... sauf que moi j'écrivais qu'il est difficile d'aider quand on ne sait pas quel est ce tracé que tu espères avoir.

Je résume : comment puis-je faire mes propres tests si j'ai une expression avec une erreur... et si je ne sais pas ce que je dois obtenir... pour contrôler mes tests ?

Re: somme de fonctions

Posté : ven. 22 mars 2013, 23:27
par zariski
En effet !
Je suis sur une autre piste utilisant "sum" et "sequence" ...
Dès que je trouve, je donne le résultat qui devrait intéresser d'autres personnes car il y a peu de trucs là dessus sur le net.