Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scilab Discussion :

Questions novice scilab


Sujet :

Scilab

  1. #1
    Candidat au Club
    Questions novice scilab
    Bonjour,

    Je code actuellement la méthode Newton-Raphson et j'ai quelques petit problème
    technique sur Scilab.

    Je stocke dans deux matrices différentes de même taille des valeurs que je récupère
    après calcul, une fois cette étape effectué, je cherche à afficher graphiquement les
    valeurs de ces matrices en fonction du nombre d'itération.

    Or, comme on peut le voir à la ligne 40-41 je n'arrive pas à avoir un plot2d de ce type la:
    plot2d(i , [t(i) e(i)],leg="a1@a2")

    Si quelqu'un a une idée de comment je pourrais résoudre mon problème, je le remercie !

    Le code est le suivant:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
    function y=f(x)
        y=x^2-a
    endfunction
     
    function y=g(x)
        y=2*x
    endfunction
     
    u=1.1
    v=1.1
    h=0.001
    t=[]
    e=[]
     
    //solution 1
    //forme analytique
    for i=1:iteration
        u=u-(f(u)/g(u));
        t=[t,u]
    end
    format(20)
     
    //solution 2
    //forme approche
    for i=1:iteration
        v=v-( f(v)/( (f(v+h)-f(v)) /h));
        e=[e,v]
    end
    format(20)
     
    //affichage des solutions
    disp(t')
    disp(e')
     
    //affichage graphique
    clf()//reset the current graphic
    i=[1:1:iteration]';
    xgrid
    plot2d(i,t(i),style=5,leg='forme analytique')
    plot2d(i,e(i),style=3,leg='forme approche')
     
    clear

  2. #2
    Rédacteur/Modérateur

    Une solution :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    plot2d(i, [t(:) e(:)], style=[5 3], leg="forme analytique@forme approche")


    Ou de façon plus optimisée :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    te = zeros(iteration,2)
     
    for i = 1:iteration
     
        //forme analytique
        u = u-(f(u)/g(u));
        te(i,1) = u
     
        //forme approche
        v = v-( f(v)/( (f(v+h)-f(v)) /h));
        te(i,2) = v
     
    end
     
    //affichage graphique
    i = 1:iteration;
     
    plot2d(i, te, style=[5 3], leg="forme analytique@forme approche")
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et Arduino)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)