Pourquoi ce programme ne s'exécute pas dans Matlab?
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Pourquoi ce programme ne s'exécute pas dans Matlab?



  1. #1
    invited817514e

    Pourquoi ce programme ne s'exécute pas dans Matlab?


    ------

    Bonsoir,
    Pourriez vous m'aidez a trouver l'erreur afin d'exécuter un programme dans Matlab de la méthode Rung Kutta d'ordre 4 qui permet de tracer la trajectoire de la lumière dans une fibre optique.
    Voici le code
    Code:
        
              
                %Programme Rung Kutta 4 appliqué à la Fibre Optique%
    
    
                function [xx,yy,zz]=RK4(x,y,z,h,phi,theta,N)
                xx[1]=x;
                yy[1]=y;
                zz[1]=z;
    
    
                t1=(sin(theta*pi/180))*(cos(phi*pi/180));
                t2=(sin(theta*pi/180))*(sin(phi*pi/180));
                t3=cos(theta*pi/180);
    
                for i=2:1000
    
    
                i1=t1;
                k1=t2;
                m1=t3;
                j1=(2*(-x+i1*(x*i1+y*k1)))/((2*p*p)-(x*x)-(y*y));
                l1=(2*(-y+k1*(x*i1+y*k1)))/((2*p*p)-(x*x)-(y*y));
                n1=(2*(m1*(x*i1+y*k1)))/((2*p*p)-(x*x)-(y*y));
    
                i2=t1+(j1*(h/2));
                k2=t2+(l1*(h/2));
                m2=t3+(n1*(h/2));
                j2=(2*((-(x+(i1*h/2)))+i2*((x+(i1*h/2))*i2+((y+(k1*h/2))*k2))))/((2*p*p)-(x*x)-(y*y));
                l2=(2*((-(y+(k1*h/2)))+k2*((x+(i1*h/2))*i2+((y+(k1*h/2))*k2))))/((2*p*p)-(x*x)-(y*y));
                n2=(2*(m2*((x+(i1*h/2))*i2+((y+(k1*h/2))*k2))))/((2*p*p)-(x*x)-(y*y));
    
                i3=t1+(j2*(h/2));
                k3=t2+(l2*(h/2));
                m3=t3+(n2*(h/2));
                j3=(2*((-(x+(i2*h/2)))+i3*((x+(i2*h/2))*i3+((y+(k2*h/2))*k3))))/((2*p*p)-(x*x)-(y*y));
                l3=(2*((-(y+(k2*h/2)))+k3*((x+(i2*h/2))*i3+((y+(k2*h/2))*k3))))/((2*p*p)-(x*x)-(y*y));
                n3=(2*(m3*((x+(i2*h/2))*i3+((y+(k2*h/2))*k3))))/((2*p*p)-(x*x)-(y*y));
    
                i4=t1+(j3*h);
                k4=t2+(l3*h);
                m4=t3+(n3*h);
                j4=(2*((-(x+(i3*h)))+i4*((x+(i3*h))*i4+(y+(k3*h))*k4) ))/((2*p*p)-(x*x)-(y*y));
                l4=(2*((-(y+(k3*h)))+k4*((x+(i3*h))*i4+(y+(k3*h))*k4) ))/((2*p*p)-(x*x)-(y*y));
                n4=(2*(m4*((x+(i3*h))*i4+(y+(k3*h))*k4)))/((2*p*p)-(x*x)-(y*y));
    
                x =x +h*((i1+2*i2+2*i3+i4)/6);
                y =y +h*((k1+2*k2+2*k3+k4)/6);
                z =z +h*((m1+2*m2+2*m3+m4)/6);
                t1=t1+h*((j1+2*j2+2*j3+j4)/6);
                t2=t2+h*((l1+2*l2+2*l3+l4)/6);
                t3=t3+h*((n1+2*n2+2*n3+n4)/6);
                xx[i]=x;
                yy[i]=y;
                zz[i]=z;
    
    
                end
    merci beaucoup

    -----
    Dernière modification par Jack ; 10/07/2012 à 09h20. Motif: modifications balises quote pour balises code

  2. #2
    Jack
    Modérateur

    Re : Pourquoi ce programme ne s'exécute pas dans Matlab?

    je ne connais pas matlab, mais ton code ne montre qu'une fonction. Où est le reste du programme?

    A+

    PS: pour du code, on utilise les balises CODE et pas QUOTE. Il faut également indenter le code afin de le rendre plus lisible.
    Dernière modification par Jack ; 10/07/2012 à 09h21.

  3. #3
    Paraboloide_Hyperbolique

    Re : Pourquoi ce programme ne s'exécute pas dans Matlab?

    Qu'il n'y ait qu'une fonction dans un code Matlab est normal.

    Par contre, je trouve ce code bien trop compliqué. Il vaudrait mieux faire une fonction RK4 générique à part. Voici typiquement mon code RK4 en C++:

    Code:
    for(i = 1; i <= m; i++)
       {
       K[0] = (*f)(X, U[i-1]);
       K[1] = (*f)(X + 0.5*h, U[i-1] + 0.5*h*K[0]);
       K[2] = (*f)(X + 0.5*h, U[i-1] + 0.5*h*K[1]);
       K[3] = (*f)(X + h, U[i-1] + h*K[2]);
       U[i] = U[i-1] + h/6.0 * (K[0] + 2.0*K[1] + 2.0*K[2] + K[3]);
    
       X += h;
       }

Discussions similaires

  1. problème dans le programme de variation de vitesse du moteur pas à pas
    Par invited633afae dans le forum Électronique
    Réponses: 1
    Dernier message: 14/03/2012, 04h34
  2. chargement dun programme c++ dans MATLAB
    Par invitec2158250 dans le forum Électronique
    Réponses: 0
    Dernier message: 24/04/2011, 15h23
  3. Mon programme matlab s'exécute mal et ne s'arrête plus!
    Par halyins dans le forum TPE / TIPE et autres travaux
    Réponses: 9
    Dernier message: 03/06/2009, 14h50
  4. [Blanc] le programme de lavage s'exécute trop vite
    Par invited4808e09 dans le forum Dépannage
    Réponses: 2
    Dernier message: 16/03/2009, 09h49
  5. pourquoi mon programme ne compile pas?
    Par inviteb5f895f5 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 17/11/2008, 09h34