Matlab, somme de termes
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Matlab, somme de termes



  1. #1
    pa24

    Matlab, somme de termes


    ------

    Bonjour à tous,

    j'ai une question a priori triviale mais pourtant cela ne fonctionne pas quand j'essaie dans Matlab.

    Je voudrais faire une boucle pour i=N:M de façon à ce que pour chaque i, Matlab me calcule la somme de termes suivante :

    (e.^k)*J(i-k) pour k allant de 1 à i-1, e étant un nombre prédéfini dans Matlab et J étant une matrice (M+N-1,1) dont les termes sont prédéfinis.

    J'ai trouvé la formule suivante dans un forum pour faire ma somme :

    for i=N:M
    k=1:i-1;
    Sum(i)=sum((e.^k)*J(i-k));
    end

    mais cela ne fonctionne pas sur Matlab, Sum est une matrice de zéros.

    Quelqu'un saurait-il d'où vient le problème ?

    Merci beaucoup par avance !

    -----

  2. #2
    lou_ibmix_xi

    Re : Matlab, somme de termes

    Je ne suis pas sûr de comprendre la formule, mais je pense que quelque chose cloche dans ton adressage de la matrice J, qui doit ressembler à J(:, i-k) si tu veux utiliser la colonne "i-k", ou J(i-k, si tu veux utiliser le vecteur ligne "i-k". De plus "e.^k" est un vecteur, donc, si je suppose que c'est un produit scalaire, il faut utiliser ".*" pour multiplier tes vecteurs éléments par éléments.
    Dernière remarque, utiliser "i" comme identifiant est une très mauvaise idée puisque c'est l'imaginaire pur.

  3. #3
    pa24

    Re : Matlab, somme de termes

    Bonjour,

    merci beaucoup pour cette réponse.

    En fait J est un vecteur colonne.

    Il me semble que e.^k n'est pas un vecteur, mais juste un nombre. e est un nombre et en fonction de la valeur de k, e.^k prend telle ou telle valeur.

    Pour mieux expliquer ma formule :

    en fait ce que je voudrais calculer, c'est la chose suivante (j'ai remplacé l'identifiant i par j) :

    pour j=N
    Sum(N,1)= (e.^1).*J(N-1,1) + (e.^2).*J(N-2,1) + … + (e.^(N-1)).*J(1,1)

    pour j=N+1
    Sum(N+1,1)= (e.^1).*J(N,1) + (e.^2).*J(N-1,1) + … + (e.^(N)).*J(1,1)

    …. jusqu'à j=M

    Ai-je choisi la bonne formule ? Je vois bien comment faire ma boucle, mais ce qui me gêne plus, c'est : ai-je bien
    déclaré que je dois faire une somme des différents termes pour k=1:j-1 ?

    Merci encore !

  4. #4
    pa24

    Re : Matlab, somme de termes

    PS : même en mettant e.^k .* J(j-k,1), ça ne fonctionne pas, je n'ai que des zéros dans chaque case de ma matrice Sum

  5. A voir en vidéo sur Futura
  6. #5
    lou_ibmix_xi

    Re : Matlab, somme de termes

    Il me semble que e.^k n'est pas un vecteur, mais juste un nombre.
    ça dépends de ton "k", tel que tu l'as défini (k=1:i-1), k est un vecteur ligne (sauf lorsque i = 2)... De manière générale, sous MATLAB, les opérations sont TOUTES des opérations matricielles, même si tu les utilises souvent sur des matrices 1x1. le modificateur d'opérateur "." te permet d'appliquer l'opérateur éléments par éléments de tes opérandes plutôt que sur les opérandes directement (dont les dimensions doivent être compatibles).

    Pas vraiment le temps de regarder plus en détails pour l'instant, je tâcherai de rejetter un oeil ce soir...

  7. #6
    pa24

    Re : Matlab, somme de termes

    Bonjour,

    désolée de revenir à la charge mais je ne comprends toujours pas bien comment faire une somme de termes sur Matlab.

    Voilà la somme que je veux calculer en termes mathématiques :



    a est un scalaire.

    Voilà ce que je propose de faire dans Matlab :

    x=zeros(T,1) avec la t-ième ligne de x correspondant au x_t de ma formule précédente
    s=zeros(T,1) avec la t-ième ligne de s correspondant au s_t de ma formule précédente

    Alors :

    for t=1:T
    k=1:J-t
    S(t)=Sum(b.^k*exp((1-a)*x(t).*k + 0.5*(1-a)^2.*k.*s_t^2).
    end

    Cela vous paraît-il correct ? Est-ce que cela est bien équivalent à :

    S(t)= b^1*exp((1-a)*x(t) + 0.5*(1-a)^2*s_t^2) + b^2*exp((1-a)*x(t)*2 + 0.5*(1-a)^2*2*s_t^2)+ ... + b^(J-t)*exp((1-a)*x(t)*(J-t) + 0.5*(1-a)^2*(J-t)*s_t^2) ?

    J'ai deux doutes en particulier :

    1) puis-je utiliser la fonction Sum sur ce terme, alors que ce n'est pas une matrice ?

    2) je ne suis jamais très sûre de là où je dois mettre .* ou .^ plutôt que * ou ^. Est-ce correct dans l'expression ci-dessus ? Dois-je l'utiliser quand j'effectue une opération sur un des termes d'une matrice comme x(t) (mais c'est un scalaire il me semble, donc ça ne devrait pas être nécessaire, si ?) ? Dois-je l'utiliser quand je fais une opération impliquant k ?

    Merci énormément !
    Dernière modification par pa24 ; 02/04/2015 à 09h06.

Discussions similaires

  1. Somme de termes précédents sur Matlab
    Par pa24 dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 03/12/2014, 08h18
  2. Somme de termes
    Par invite3021b5ab dans le forum Mathématiques du collège et du lycée
    Réponses: 3
    Dernier message: 13/04/2013, 10h55
  3. Suite de somme de termes
    Par invite49f8c781 dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 14/09/2011, 20h22
  4. Théorème d'intégration termes à termes de la fonction somme d'une série de fonctions
    Par yootenhaiem dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 28/11/2010, 20h13
  5. Somme de termes
    Par invitedcbe4be7 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 06/05/2005, 20h03