Petits problèmes avec Scilab
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Petits problèmes avec Scilab



  1. #1
    invite07c97bce

    Petits problèmes avec Scilab


    ------

    Bonjour à tous et à toutes !

    Je suis étudiant en L2 de physique, et je débute avec Scilab. J'ai déjà cependant quelques ennuis, d'abord avec la lecture/l'écriture des données dans un fichier, et aussi avec le modèle de Leslie.

    1) Dans mon énoncé de TD, on me dit que pour manipuler des données qu'on veut conserver, on a la possibilité d'utiliser la fonction "save". On me déclare alors que dans l'exemple ci-dessous, on crée une matrice A (pleine de valeurs aléatoires), un vecteur B, et qu'on les sauvegarde dans un fichier matriceA_vecB, qu'on les efface de la mémoire de Scilab, puis qu'on les recharge à nouveau en mémoire avec la fonction "load":
    -->A=rand(5,3)
    -->B=[6 2 91]
    -->save('matriceA_vecB',A,B)

    Quand je tape ça, la console me dit :

    "Attention : Scilab 6 ne prendra pas en charge le format de fichier utilisé.

    Attention : Veuillez mettre entre guillemets la déclaration de variable. Par exemple, save('myData.sod',a) devient save('myData.sod','a').

    Attention : Veuillez consulter help('save') pour les raisons de ce choix."

    J'ai change de place les guillemets, comme préconisait le deuxième "attention", ça me lance le message :

    "Attention : Scilab 6 ne prendra pas en charge le format de fichier utilisé.

    Attention : Veuillez mettre entre guillemets la déclaration de variable. Par exemple, save('myData.sod',a) devient save('myData.sod','a').

    Attention : Veuillez consulter help('save') pour les raisons de ce choix.
    !--error 248
    Valeur erronée de l'argument 2 : Un nom de variable valide attendu."

    J'ai déjà crée le fichier matriceA_vecB, mais comment y "sauvegarder" les matrices A et B de telle sorte que la commande "save" marche ?

    2) Sur le modèle de Leslie

    "On note U(n) le vecteur colonne de taille k représentant (en pourcentage) la population temps n (en années), qu'on a regroupée en k tranches d'âges : u1(n) ("u indice 1 de n") est la tranche formée des individus les plus jeunes, ..., uk(n) est la tranche formée des individus les plus âgés. On note fi ("f indice i") le taux de fécondité de la classe i, et s indice i ("si") le nombre d'individus de la classe i qui passent à la classe i + 1 (i variant de 1 à k-1).
    Pour k=5, l'évolution des classes des populations entre les temps n et n+1 est :

    u1(n+1)=f1*u1(n) + f2*u2(n) + f3*u3(n) + f4*u4(n) +f5*u5(n)
    u2(n+1)=s1*u1(n)
    u3(n+1)=s2*u2(n)
    u4(n+1)=s3*u3(n)
    u5(n+1)=s4*u4(n)

    a) Après avoir écrit au brouillon le système ci-dessus sous forme matricielle U(n+1)=A*U(n), où A une matrice (k;k) à déterminer en fonction des "si" et des "fi", rentrer A dans Scilab.
    b) Partant d'une population initiale (stockée dans le vecteur à trois composantes PopInit) de 100 jeunes, 0 adultes et 0 séniors, calculer avec une boucle la population de la génération suivante 20 ans plus tard (U(n=21)). On pourra utiliser un tableau Pop de 3 lignes et 21 colonnes pour stocker les valeurs des vecteurs U en fonction des années.
    c) Tester le modèle avec s1 = 0,9. Comment évolue la population ?

    -------> a) Pour moi,

    f1 f2 f3 f4 .......
    A = s1 0_______0
    0 s2 0____0
    0 0 s3____0
    0 0 0 s4_ 0

    et ainsi de suite jusqu'à s indice u-1, où u est un réel correspondant à l'âge maximal atteignable. J'ai alors entré A dans Scilab.
    b) Comment rentrer u(21) ? Je voudrais rentrer l'équation U(n+1)=A*U(n), mais comment faire ?
    c) Je pense que j'aurai la réponse quand j'en aurai fini avec la question b).

    Je vous serais très reconnaissant de me répondre, et je vous souhaite en tout cas à toutes et à tous une bonne soirée.

    -----

  2. #2
    Arzhur

    Re : Petits problèmes avec Scilab

    Bonjour,


    J'ai déjà crée le fichier matriceA_vecB, mais comment y "sauvegarder" les matrices A et B de telle sorte que la commande "save" marche ?
    Sous scilab 5 tu dois faire save("nomDeFichier", A , B)....sous le 6 je ne sais pas trop. As-tu consulté l'aide ?

    Comment rentrer u(21) ? Je voudrais rentrer l'équation U(n+1)=A*U(n), mais comment faire ?
    Ici il faut faire une procédure qui calcule le n-ième terme d'un suite. Ou bloques-tu ?

    c) Tester le modèle avec s1 = 0,9. Comment évolue la population ?
    As-tu les valeurs des autres paramètres ?

  3. #3
    invite07c97bce

    Re : Petits problèmes avec Scilab

    J'ai déjà fait save("nomDeFichier", A , B), c'est justement alors que j'obtiens des messages d'erreur.
    Pour u(21), justement, je ne sais pas faire. En cours, on a vu par exemple comment définir une suite, mais à condition de connaître le terme général un, pas par récurrence. Je me doute que je dois faire une boucle, mais comment, à partir de u0 ? J'ai essayé de faire

    n=input
    u=[0 50 50 0 0]
    for i=1:n
    u=A*u
    end ,
    et ça n'a rien donné.

    Pour le c), j'ai trouvé (bien sûr que j'ai les valeurs des autres paramètres), il suffit de remplacer le s1 de la matrice A par 0,9 ; mais tant que je n'ai pas rentré l'équation...

    Merci pour votre réponse en tout cas.

  4. #4
    gg0
    Animateur Mathématiques

    Re : Petits problèmes avec Scilab

    Il y a une aide en ligne dans scilab, qui permet, en particulier de connaître la syntaxe.

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

    Re : Petits problèmes avec Scilab

    mais à condition de connaître le terme général un, pas par récurrence
    Un ptit effort et tu l'as le terme général.


    et ça n'a rien donné.
    une petite étourderie...fais attention aux tailles des vecteurs/matrices


    (bien sûr que j'ai les valeurs des autres paramètres)
    Est-ce que tu peux les donner, je veux jouer moi aussi.

    J'ai déjà fait save("nomDeFichier", A , B)
    je fais save("modelData",'A','u') -> ca sauve. et load("modelData",'A','u') charge (j'ai pris ta version de Scilab)

  7. #6
    invite07c97bce

    Re : Petits problèmes avec Scilab

    Mon dieu, comme je suis bête (au passage je suis au courant qu'il y a une aide en ligne, et je connais déjà la syntaxe) !

    Bien sûr, il faut faire :
    A=[0.3, 1, 0.1;0.6, 0, 0;0,0.8,0]
    u=[100 0 0]'
    k=21
    for i=1:k
    u=A*u
    end

    (comme ça, les valeurs des paramètres sont données pour ceux qui veulent jouer ha ha).
    Et donc on obtient : _______30.096874
    _________________u(21) =18.622278
    _______________________15.3611 89

    Avec s1 =0.9, on tape :

    A=[0.3, 1, 0.1;0.9, 0, 0;0,0.8,0]
    u=[100 0 0]'
    k=21
    for i=1:k
    u=A*u
    end ,

    et on aboutit à
    ______922.38838
    ____u=726.73967
    ______508.48485.

    Et donc la population a vraiment beaucoup augmenté, selon une croissance exponentielle si je ne m'abuse.

    Nonobstant cette résolution, je ne comprends toujours pas le procédé pour la lecture/l'écriture dans un fichier.
    Ce que je fais, c'est taper A et u :
    A=[...]
    u=[...]
    Mais comment faire alors pour effacer A et u de la mémoire (pour alors faire "clear A u") ?

  8. #7
    invite07c97bce

    Re : Petits problèmes avec Scilab

    EDIT : Et si quelqu'un pouvait me dire en quoi ces commandes basiques sont défectueuses (la console n'affiche rien), ça m'aiderait aussi :
    deff("[y]=f(x)","y=x^2") , et

    function[y]=f(x)
    y=x^2
    endfunction.
    (Utiliser des input est inutile).

  9. #8
    Arzhur

    Re : Petits problèmes avec Scilab

    Mais comment faire alors pour effacer A et u de la mémoire (pour alors faire "clear A u") ?
    help('clear')

    Et si quelqu'un pouvait me dire en quoi ces commandes basiques sont défectueuses
    Elles ne sont pas défectueuses....t'as tenté de les utiliser ?

  10. #9
    invite07c97bce

    Re : Petits problèmes avec Scilab

    Ça y est, ça a marché pour le fichier (mais pas pour les commandes, on me dit soit que x n'est pas défini, soit on ne me dit rien, rien ne s'affiche, comme si j'avais mis un point-virgule).
    Par contre, quand je tape les commandes

    A=rand(5,3)
    fid=file('open','jean') (ce qui me donne fid=1)
    write(fid,A)
    file('close',fid) ,

    ça n'ouvre pas le fichier "jean" avec la matrice A inscrite dedans.

  11. #10
    invite07c97bce

    Re : Petits problèmes avec Scilab

    Nobody ???

Discussions similaires

  1. Petits problèmes avec exercices
    Par invite67a38137 dans le forum Technologies
    Réponses: 8
    Dernier message: 14/05/2013, 21h04
  2. Petits problèmes avec un DM...
    Par invite910856b6 dans le forum Mathématiques du collège et du lycée
    Réponses: 8
    Dernier message: 05/10/2008, 10h48
  3. [Blanc] Re : Petits problèmes avec LV WHIRLPOOL ADP6946
    Par invite71cce0be dans le forum Dépannage
    Réponses: 1
    Dernier message: 12/05/2008, 16h29
  4. Petits problèmes avec LV WHIRLPOOL ADP6946
    Par invite9b0884e7 dans le forum Dépannage
    Réponses: 5
    Dernier message: 24/12/2007, 12h46
  5. petits problemes avec mozilla
    Par invitea2a960fc dans le forum Internet - Réseau - Sécurité générale
    Réponses: 1
    Dernier message: 27/04/2007, 00h53