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.
-----