récurrence dans matlab
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

récurrence dans matlab



  1. #1
    inviteb6203f5f

    récurrence dans matlab


    ------

    bonjour à tous,
    j'ai un problème avec matlab, je dois créer un programme qui calcul les polynomes de tchebychev ainsi que leurs racines mais je bloque à la récurrence:
    les polynomes se calculent grâce a cette formule:
    Tn+2= 2*x*Tn+1 - Tn

    dans le programme j'ai calculé T_0=1 T_1=x et T_2 à la main mais par la suite je n'arrive pas à utiliser cette formule de récurrence, matlab ne reconnait pas les indices, il me jette a chaque fois, je dois passer à coté de quelque chose, si qqu'un pouvait m'aider. merci!

    -----

  2. #2
    lou_ibmix_xi

    Re : récurrence dans matlab

    Salut,

    Matlab représente les polynome sous forme de vecteur, ainsi le polynome P(x) = a*x^2 + b*x + c est représenté par le vecteur [c, b, a]. Il te suffit donc de transposer ta relation de récurrence entre tes polynomes en une relation de récurrence entre vecteurs.

  3. #3
    inviteb6203f5f

    Re : récurrence dans matlab

    oui ça je sais mais le problème c'est quand je veux faire une boucle pour aller jusqu'au polynomes de degré n il me jette:
    for j = 3:n
    T_j = (conv (h,T_(j-1)) - [ 0 0 T_(j-2)])
    r_j = roots (T(j))
    end
    avec h=[2 0], j'ai fait comme ca pour les premiers mais sans les indices, je les ai nommé T_0, T_1... directement et ca marche.
    Mais la matlab n'accepte pas ça et ça coince au niveau des indices je ne sais plus comment faire!

  4. #4
    lou_ibmix_xi

    Re : récurrence dans matlab

    Attention, je crois que tu n'as pas compris quelque chose du fonctionnement de matlab: T_j c'est une variable nommé T_j! ca n'a rien à voir avec T_(j) qui est bien l'indice j du tableau nommé T_...
    De plus tu travailles en 2 dimensions, car tu manipules un vecteur de polynomes, qui sont eux mêmes des vecteurs.
    Mon conseille: assigne ton tableau de polynome avant ta boucle
    T = zeros (n,n) ou n est le nombre de récurrence,
    alors le polynome k sera T(:,k) ou T(k, suivant que tu travailles en lignes ou en colonnes.

    la convolution c'est un peu le marteau pour écraser la mouche non? Ne serait il pas plus simple de décalé ton vecteur (multiplication par x), ajouter un zéro au bout (puisque plus de

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

    Re : récurrence dans matlab

    ah! justement je venais d'orienter mes recherches sur les matrices et les écritures T(:,k)... sauf que j'avais fait T= magic(n). je m'en rapproche on dirait par contre pour la convolution que dois-je mettre à la place?
    je vous tiens au courant de mes résultats. merci beaucoup

  7. #6
    inviteb6203f5f

    Re : récurrence dans matlab

    bon ça ne marche toujours pas désolé
    voila comment commence mon programme:

    n =input('degré du polynome souhaité: ');
    T = zeros(n,n)
    r = zeros(n,n);
    T0 = 1;
    T(:,1) = [1 0]
    h = [2 0];
    T(:,2) = (conv (h,T(:,1)) - [0 0 T0]); ...

    et si je met n=3 par exemple ca coince à la ligne 5: T(:,1) a cause des dimensions de la matrice ce qui est logique.
    alors est-il possible de rentrer un vecteur du genre T(:,1)= [... 1 0] pour dire que peu importe la taille de la matrice, T(:,1) = x
    merci de votre aide

  8. #7
    lou_ibmix_xi

    Re : récurrence dans matlab

    Tu y es presque, comme tu l'as compris le T(:,n) = c assigne la nième colonne de T avec c, mais pour cela il faut que c et T aient le même nombres de lignes, et de manière générale, lorsque tu spécifies l'étendu de ton assignement, il faut que les arguments à gauche et à droite du égale aient les mêmes dimensions. Ce n'est pas le cas lorsque tu fais T(:,1) = [1 0] pour deux raisons:
    -T possède n lignes
    -[1 0] est une ligne deux colonnes, tu penses en fait à [1; 0]
    Pour résoudre ce problème il faut que tu assignes éléments par éléments T, donc T(1,1) = 0, T(2,1) = 1.
    Une dernière remarque, je remplacerai T0 par T(:,1), après c'est bien le premier polynôme de ta suite...

  9. #8
    lou_ibmix_xi

    Re : récurrence dans matlab

    Pour la convolution, réfléchis à ce que devient un polynôme de degrés n multiplié par x, et que vos sa valeur à l'origine... Une foit transposé en vecteur c'est nettement plus simple...

  10. #9
    inviteb6203f5f

    Re : récurrence dans matlab

    Citation Envoyé par lou_ibmix_xi Voir le message
    Pour résoudre ce problème il faut que tu assignes éléments par éléments T, donc T(1,1) = 0, T(2,1) = 1.
    Une dernière remarque, je remplacerai T0 par T(:,1), après c'est bien le premier polynôme de ta suite...
    tout ce que vous avez expliquez avant j'avais compris mais la j'ai toujours un problème pour assigner éléments par éléments car il faut que je fasse une boucle et je ne connait pas n ! la matrice va changer de dimensions suivant le n rentré par l'utilisateur donc comment savoir? par exemple si n = 5 j'aurais T(1,1)=T(1,2)=T(1,3)=T(1,5)=0
    et ce serait différent si n=4 ou n=6...

  11. #10
    inviteb6203f5f

    Re : récurrence dans matlab

    nan en fait ca c'est bon j'ai trouvé ce n'était pas compliqué en fait! lol :$! par contre j'ai encore un souci...
    j'ai commencé mon prog comme ça:

    k=input('degré du polynome souhaité: ');
    n=k+1;
    T = zeros(n,n);
    r = zeros(n,n);
    T0 = zeros(n,1);
    T0(n,1) = 1; //T0 = 1
    T((n-1),1)= 1; //T1 = x
    h = zeros (n,1);
    h (n-1,1) = 2; // h= 2x
    T(:,2) = h(:,1).*T(:,1)- T0

    et à T(:,2) je devrais tombé sur T2 = 2x^2 -1 mais il me sort juste 2x - 1... et si je réutilise la convolution, il me jette car les matrices n'ont pas las meme dimension... logique...
    je suis complètement bloqué là...

  12. #11
    lou_ibmix_xi

    Re : récurrence dans matlab

    On va y arriver...

    Tu as mal compris ma remarque concernant le T0 puisque je le vois encore... En décorticant ça donne:

    Déclaration de T à un tableau n*n remplis de zéros:
    T = zeros (n,n); où n est bien l'indice demandé +1

    Pour initialiser ta boucle:
    T(1,1) = 1; ton fameux T0(x) = 1
    T(2,1) = 0;
    T(2,2) = 1: le T1(x) = x +0

    Alors de manière général tu auras:
    T(i,j) = a
    qui veut dire que le coefficient de la puissance j-1 du polynôme numéro i vaut a... C'est quand même plus simple... Et c'est dans ces sens que les représente MATLAB.

    Ensuite ta boucle:
    for j=3:n
    T(j, = relation avec T(j-1, et T(j-2,
    end
    Cette fameuse relation n'est vraiment pas compliquée, rappelle toi que tu as multiplié par x donc que vaut la valeur continu du nouveau polynôme???

  13. #12
    inviteb6203f5f

    Re : récurrence dans matlab

    ok merci je vois ça demain matin car je suis pas chez moi là et je vous tiens au courant par contre y'aura toujours un p'tit truc qui va pas aller ou plutot qu'il va falloir rajouter c'est l'ecriture de chaque T. je suis obligé d'afficher à l'écran T(3)= ... et r1(3)=, r2(3)=..., etc...
    et là il va bien falloir que je fasse une boucle pour incrémenter des indices Tn ou T(n) ou T_n je ne sais pas.
    en tout cas, gros merci pour vorte aide

  14. #13
    inviteb6203f5f

    Re : récurrence dans matlab

    bonjour,
    je me suis permi de prendre votre adresse mail je pense que ce sera plus simple mais voici un double au cas ou je me sois tromper d'adresse! Par contre j'espère que vous n'allez pas vous sentir harceler!
    Pour en revenir au sujet j'en suis sur que je suis très proche de la solution mais une chose me "chagrine" dans votre conseil d'utiliser les vecteurs et non les polynomes car en fait si je prend mon cas, je doi faire : 2x * x - 1 avec h=2x , T1=x et T0=1 ce qui donne T2=2x^2 - 1
    alors si je prend h=(2 0) et que je le mutliplie par T1= (1 0) je tombe sur le vecteur (2 0) qui correspond à 2x et non 2x^2.
    J'ai donc ressayé la convolution de polynomes mais le probleme c'est que la matrice à chaque fois obtenue a son degré d'augmenté de 3.
    exemple: si je fai conv (h,T1) - [0 0 T0] avec h= (0 2 0) et T1= (0 1 0) j'obtien T2= [ 0 0 2 0 -1]
    et donc pour la suite, pour la boucle, je suis embeté car je ne peux plus soustraire Tn-1 (incompatibilité de degré)
    j'espère que vous pourrez m'aider.
    cordialement
    mickael

Discussions similaires

  1. deconvolution dans matlab
    Par invite43361057 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 28/03/2008, 19h30
  2. programmer recurrence matlab
    Par invitee98002ab dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 27/06/2007, 15h36
  3. fonction pde dans Matlab
    Par invite2c8e6b50 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 14/04/2006, 08h15
  4. Texte dans matlab
    Par inviteb6d74d9b dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 26/03/2006, 15h13
  5. le temps dans matlab
    Par invite696186d1 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 20/06/2004, 11h40