SCILAB-"Index invalide"
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

SCILAB-"Index invalide"



  1. #1
    invite3e1e58b5

    SCILAB-"Index invalide"


    ------

    voila comme dit dans le titre, voici l'erreur qu'il me marque et malheureusement je ne trouve pas l'erreur :/
    Code:
    t=linspace(-1,1,500);
    function [H]=Heaviside(t)
    n=prod(size(t));
    for i=1 : n
    if t(i)>=0 then
    H(i)=1;
    else
    H(i)=0;
    end
    end
    endfunction
    H=Heaviside(t);
    
    [ok,h,m]=getvalue("choix du pas et du coefficient d amortissement",["h";"m"],list("vec",1,"vec",1),["0.05";"0.5"]);
    t=[0:h:50]';
    N=prod(size(t));
    A=[0,1;-1,-1];
    B=[0;1];
    I=eye(2,2);
    f=cos(t+%pi/3)*H(t);
    Xexpl=zeros(2,N);Xtrap=zeros(2,N);Ximpl=zeros(2,N);
    for n=2:N
        Xexpl(:,n)=(I+h*A)*Xexpl(:,n-1)+h*B*f(n);
        Ximpl(:,n)=inv(I-h*A)*(Ximpl(:,n-1)+h*B*f(n));
        Xtrap(:,n)=inv(I-h*A/2)*((I+h*A/2)*Xtrap(:,n-1)+h*B/2*(f(n)+f(n-1)));
    end
    
    
    Xexact=f-exp(-m*t).*cos(sqrt(1-m*m)*t)-m*exp(-m*t).*sin(sqrt(1-m*m)*t)/sqrt(1-m*m);
    plot2d(t,[Xexpl',Ximpl',Xtrap',Xexact,H],leg="expl@impl@trap@exact");
    l'erreur se situe sur la fonction f
    merci d'avance =)

    -----

  2. #2
    invite3e1e58b5

    Re : SCILAB-"Index invalide"

    pardon, deja Bonjour , et voici un peu plus de précisions

    Je dois réaliser un programme afin de résoudre l'équation différentielle suivante : y"(t)+y'(t)+y(t)=cos(t+pi/3).H(t) (avec H(t)=heaviside)
    après avoir résolue cette équation a l'aide des transformées de Laplace, j’obtiens le programme ci-dessous :

    lorsque je compile celui-ci , voici ce que m'affiche scilab :
    Code:
    f=cos(t+%pi/3)*H(t);
                        !--error 21 
    Index invalide.
    merci d'avance =)

  3. #3
    Tryss

    Re : SCILAB-"Index invalide"

    H est un vecteur, donc il faudrait que t soit entier (compris entre 1 et la taille de H).

    Il faudrait donc écrire f=cos(t+%pi/3)*Heaviside(t);

    Mais dans Scilab, * est la multiplication matricielle : il ne va pas apprécier de multiplier deux vecteurs ensemble comme ça (dimensions incompatibles). Il faut donc utiliser la multiplication éléments par éléments .* La bonne syntaxe est alors :

    f = cos(t+%pi/3) .* Heaviside(t);

  4. #4
    invite3e1e58b5

    Re : SCILAB-"Index invalide"

    alors déjà merci de votre aide =)

    alors après avoir essayé ce que vous m'avez dit il me marque toujours la même erreur.
    de plus lorsque je change le H(t) en Heaviside(t) ,celui ci me dit "Opération non définie pour les opérandes données."
    voila merci

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

    Re : SCILAB-"Index invalide"

    Ceci compile sans erreur :

    Code:
    t=linspace(-1,1,500);
    function [H]=Heaviside(t)
    n=prod(size(t));
    for i=1 : n
    if t(i)>=0 then
    H(i)=1;
    else
    H(i)=0;
    end
    end
    endfunction
    H=Heaviside(t);
    
    [ok,h,m]=getvalue("choix du pas et du coefficient d amortissement",["h";"m"],list("vec",1,"vec",1),["0.05";"0.5"]);
    t=[0:h:50]';
    N=prod(size(t));
    A=[0,1;-1,-1];
    B=[0;1];
    I=eye(2,2);
    f=cos(t+%pi/3).*Heaviside(t);
    Xexpl=zeros(2,N);Xtrap=zeros(2,N);Ximpl=zeros(2,N);
    for n=2:N
        Xexpl(:,n)=(I+h*A)*Xexpl(:,n-1)+h*B*f(n);
        Ximpl(:,n)=inv(I-h*A)*(Ximpl(:,n-1)+h*B*f(n));
        Xtrap(:,n)=inv(I-h*A/2)*((I+h*A/2)*Xtrap(:,n-1)+h*B/2*(f(n)+f(n-1)));
    end
    
    Xexact=f-exp(-m*t).*cos(sqrt(1-m*m)*t)-m*exp(-m*t).*sin(sqrt(1-m*m)*t)/sqrt(1-m*m);
    
    plot2d(t,Xexpl',leg="expl@impl@trap@exact");
    plot2d(t,Ximpl',leg="expl@impl@trap@exact");
    plot2d(t,Xtrap',leg="expl@impl@trap@exact");
    plot2d(t,Xexact,leg="expl@impl@trap@exact");
    plot2d(t,H,leg="expl@impl@trap@exact");

  7. #6
    invite3e1e58b5

    Re : SCILAB-"Index invalide"

    ah ben ... que dire merci beaucoup
    tu as donc changé le heaviside et les plot
    merci encore =)

    ps : ne pas clôturer le sujet svp car je risque encore peut-être d'avoir besoins de votre gentille aide ^^

  8. #7
    invite3e1e58b5

    Re : SCILAB-"Index invalide"

    bon je vous remercie j'ai réussi a tout faire
    sujet clos

Discussions similaires

  1. [scilab]Index invalide
    Par invite1cede1ba dans le forum Mathématiques du supérieur
    Réponses: 8
    Dernier message: 29/11/2009, 11h13
  2. Scilab : fonction "delay" pour un retard pur ?
    Par invite1e8ad136 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 01/02/2009, 20h20
  3. "Dim invalide"
    Par invite2220c077 dans le forum Mathématiques du collège et du lycée
    Réponses: 0
    Dernier message: 17/09/2008, 19h44