Petit programme

Discutez d'informatique ici !
MacManus
Membre Irrationnel
Messages: 1365
Enregistré le: 28 Avr 2008, 14:41

petit programme

par MacManus » 11 Nov 2009, 18:10

Bonsoir à tous !

Voilà, j'essaye tant bien que mal de représenter (plot) la fonction suivante :

Il s'agit en fait de la somme partielle de la série de Fourier d'une fonction f. Cette somme partielle a pour expression :
, où avec ={3,5,7,9,49,999}. K est donc fixé. De plus x varie dans l'intervalle [0,2pi].

Ma question est purement technique : comment faire la somme dans mon programme ? voilà mon chef-d'oeuvre (sous Matlab) :

MacManus a écrit:
function SKf=skf(K)
L=(K-1)/2;
for p=0:L
for x=0:2*pi
f=(4/pi)*sin(((2*p)+1)*x)/((2*p)+1);
SKf=SKf+f;
end
end
plot(x,SKf)
end


Le problème c'est que la ligne SKf=SKf+f n'a pas de sens puisque SKf n'est pas défini...et ce n'est pas le seul pb à mon avis... bref quelqu'un aurait-il une solution ?
Merci beaucoup!



Benjamin
Membre Complexe
Messages: 2337
Enregistré le: 14 Avr 2008, 10:00

par Benjamin » 11 Nov 2009, 19:05

Bonsoir,

A priori je dirai soit de mettre SKf=0 avant sa boucle (mais il me semble que Matlab initialise les variables non déclarées à 0), soit si ça met une erreur de changer de nom de variable, il apprécie peut-être pas d'avoir une variable qui a le même nom que la fonction

Ensuite, il va y avoir un problème avec la fonction plot, parce que SKf ne contient qu'une valeur, donc il va tracer la fonction constante. Si tu veux un SKf pour chaque x il faut définir SKf comme un vecteur et du coup additionner séparément les termes pour chaque x

Un truc du style (modulo les erreurs de syntaxe et autres trucs du genre)

Code: Tout sélectionner
function SKf=skf(K)
        L=(K-1)/2;
   SKf = zeros(100);
        for i=1:100
      x=(i-1)*2*pi/100;
           for p=0:L
              f=(4/pi)*sin(((2*p)+1)*x)/((2*p)+1);
         SKf[i]=SKf[i]+f;
      end
   end
   plot(x,SKf)
end

MacManus
Membre Irrationnel
Messages: 1365
Enregistré le: 28 Avr 2008, 14:41

par MacManus » 11 Nov 2009, 19:14

Salut et merci

Oui je suis d'accord avec tes remarques
J'ai testé mais il y a une erreur à la ligne 8 SKf[i]=........

MacManus
Membre Irrationnel
Messages: 1365
Enregistré le: 28 Avr 2008, 14:41

par MacManus » 11 Nov 2009, 19:17

Voilà le message d'erreur :

>> SKf
??? Error: File: C:\Program Files\matlab\Matlab6p5portable\work\skf.m Line: 8 Column: 28
Missing operator, comma, or semicolon.

Mais je ne vois pas pourquoi.

Benjamin
Membre Complexe
Messages: 2337
Enregistré le: 14 Avr 2008, 10:00

par Benjamin » 11 Nov 2009, 19:23

Déjà, une petite erreur, ce n'est pas x mais x[i] qu'il faut mettre.
Ensuite, vérifie que zero(100) ne fait pas une matrice en fait. Si c'est une matrice, il faut que tu trouves la commandes qui donne un vecteur ligne de 100 zéros, je m'en rappelle plus.
Et essaie des parenthèses à la place des crochets. Voilà les pistes qu'on voit avec un pote.

MacManus
Membre Irrationnel
Messages: 1365
Enregistré le: 28 Avr 2008, 14:41

par MacManus » 11 Nov 2009, 19:29

Ok merci bcp je vais suivre tes conseils et je vais voir ce que ça donne

MacManus
Membre Irrationnel
Messages: 1365
Enregistré le: 28 Avr 2008, 14:41

par MacManus » 11 Nov 2009, 19:32

AH JE TE DIS BRAVO !!
excellent ça marche : effectivement paranthèses plutôt que crochets
j'obtiens une très jolie courbe (signal), et franchement je crois bien que c'est ce que je voulais! ça correspond aux phénomènes de Gibbs je crois

en fait zeros(100) correspond à une matrice ligne

bombastus
Membre Complexe
Messages: 2295
Enregistré le: 29 Nov 2007, 21:35

par bombastus » 11 Nov 2009, 20:59

Salut,

en fait, zeros(100) créée une matrice de 100 lignes et 100 colonnes, pour avoir une matrice ligne : zeros(1,100) (1 ligne et 100 colonnes).

MacManus
Membre Irrationnel
Messages: 1365
Enregistré le: 28 Avr 2008, 14:41

par MacManus » 11 Nov 2009, 22:08

Mais oui tu as raison je sais pas où je suis allé cherché ça, surtout que j'avais déja utilisé cette expression...d'ailleurs en testant avec matlab j'obtiens bien ce que tu dis. Je suis vraiment bête parfois :euh:

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite