A voir également:
- Problèmes (faciles à résoudre, je pense) avec Scilab 5.4.1.
- Scilab - Télécharger - Édition & Programmation
- Freeocr 5.4.1 - Télécharger - Divers Bureautique
3 réponses
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
17 janv. 2014 à 19:11
17 janv. 2014 à 19:11
1) "évaluer la sélection avec écho", je ne suis pas sûr que ce soit la bonne commande.
Quand tu as démarré ta console Scilab tu as un onglet Application > SciNotes
Cela te permet d'avoir un éditeur de code, que tu peux enregistrer au format .sce
C'est d'ailleurs avec SciNotes que sont censés s'ouvrir par défaut les fichiers .sce
Pour exécuter le mieux est d'utiliser la commande "Enregistrer et exécuter" qui est disponible dans les boutons (la petite flèche), le menu "Exécuter" ou directement avec F5.
Tu bascules alors sur la console pour voir le résultat. En l'occurrence tu auras des erreurs car ton code est incorrect.
Voici le code correct, sans oublier l'affichage de A, sinon ça ne sert à rien :
2) Le problème c'est que tu as mélangé i et k. Et oublié l'affichage comme pour le 1.
Pour les questions les plus courantes, regarde la documentation :
http://fr.wikibooks.org/wiki/Découvrir_Scilab
Quand tu as démarré ta console Scilab tu as un onglet Application > SciNotes
Cela te permet d'avoir un éditeur de code, que tu peux enregistrer au format .sce
C'est d'ailleurs avec SciNotes que sont censés s'ouvrir par défaut les fichiers .sce
Pour exécuter le mieux est d'utiliser la commande "Enregistrer et exécuter" qui est disponible dans les boutons (la petite flèche), le menu "Exécuter" ou directement avec F5.
Tu bascules alors sur la console pour voir le résultat. En l'occurrence tu auras des erreurs car ton code est incorrect.
-->exec('C:\Users\Guillaume\Desktop\test.sce', -1)
for i=1:m
!--error 4
Variable non définie : m
at line 1 of exec file called by :
exec('C:\test.sce', -1)
Voici le code correct, sans oublier l'affichage de A, sinon ça ne sert à rien :
m=5
n=5
for i=1:m
for j=1:n
A(i,j)=i-j
end
end
disp(A)
2) Le problème c'est que tu as mélangé i et k. Et oublié l'affichage comme pour le 1.
n=10
for i=1:n
w(i)=(-1)^i
end
disp(w)
Pour les questions les plus courantes, regarde la documentation :
http://fr.wikibooks.org/wiki/Découvrir_Scilab
Merci pour ces réponses, "KX".
1) Effectivement, je me doutais bien que je faisais une faute affreuse.
2) Une belle étourderie.
Par ailleurs, mon fichier scilab est déjà (par défaut apparemment) un fichier sce.. "Evaluer la sélection avec écho" fonctionne bien.
Enfin, après avoir fouillé ton lien (très complet, je sais maintenant comment résoudre des systèmes linéaires), je n'ai toujours pas trouvé comment résoudre cette histoire de carrés, pourrais-tu m'aider ?
1) Effectivement, je me doutais bien que je faisais une faute affreuse.
2) Une belle étourderie.
Par ailleurs, mon fichier scilab est déjà (par défaut apparemment) un fichier sce.. "Evaluer la sélection avec écho" fonctionne bien.
Enfin, après avoir fouillé ton lien (très complet, je sais maintenant comment résoudre des systèmes linéaires), je n'ai toujours pas trouvé comment résoudre cette histoire de carrés, pourrais-tu m'aider ?
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
19 janv. 2014 à 11:36
19 janv. 2014 à 11:36
On peut le faire avec un produit matriciel, mais ça va calculer les n² carrés de la matrice produit alors que seule la diagonale nous intéresse.
Au final, la boucle serait moins lourde en nombre de calculs dans ce cas...
n = 10
v = 1:n
m = v' * v
d = diag(m)
disp(d)
Au final, la boucle serait moins lourde en nombre de calculs dans ce cas...
n = 10
w(1) = 1
for i = 1:(n-1)
w(i+1) = w(i)+2*i+1
end
disp(w)
J'ai rencontré encore d'autres difficultés, d'abord avec le modèle de Leslie, et aussi avec la lecture/l'écriture des données dans un fichier.
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).
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).