Matlab: matrice et moyenne de points
Utilisateur anonyme
-
ptidavid Messages postés 1273 Date d'inscription Statut Membre Dernière intervention -
ptidavid Messages postés 1273 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bonjour,
Sous matlab, je dois calculer les potentiels de chaque point d'une matrice
la matrice est de taille 20 lignes sur 60 colonnes
les points des lignes 1 = 500 : ne peux pas changer
les points des lignes 20 = 0 : ne peux pas changer
a l'initial, tous les point sont egaux à 0
puis, pour les lignes 2 à 19, on doit faire le calcul des point
on doit repeter ce calcul jusqu'a ce que les variations d'un points entre deux calcul est inférieur à 0.02
je cherche a faire le calcul suivant dans une matrice :
valeur du point = moyenne de (valeur du point à gauche + valeur du point à droite + valeur du point à gauche + valeur du point en haut )
comme le calcul demande de points hors de la matrice, j'ai agrandi la matrice et laissé les points extérieurs à 0
B=zeros(20,62);
B(1,2:61)=500.0;
nb_prec=0;
k=0.0;
nb=B(2,2);
while nb_prec-nb<0.02;
nb_prec=B(2,2);
for i = 1:20
for j = 2:61
k=B(i-1,j)+B(i+1,j)+B(i,j+1)+B(i-1,j);
B(i,j)=k;
k=0.0;
end
nb=B(2,2);
end
l'erreur inscrite est Error: Missing operator, comma, or semicolon.
je n'arrrive pas a modifier la matrice
Bonjour,
Sous matlab, je dois calculer les potentiels de chaque point d'une matrice
la matrice est de taille 20 lignes sur 60 colonnes
les points des lignes 1 = 500 : ne peux pas changer
les points des lignes 20 = 0 : ne peux pas changer
a l'initial, tous les point sont egaux à 0
puis, pour les lignes 2 à 19, on doit faire le calcul des point
on doit repeter ce calcul jusqu'a ce que les variations d'un points entre deux calcul est inférieur à 0.02
je cherche a faire le calcul suivant dans une matrice :
valeur du point = moyenne de (valeur du point à gauche + valeur du point à droite + valeur du point à gauche + valeur du point en haut )
comme le calcul demande de points hors de la matrice, j'ai agrandi la matrice et laissé les points extérieurs à 0
B=zeros(20,62);
B(1,2:61)=500.0;
nb_prec=0;
k=0.0;
nb=B(2,2);
while nb_prec-nb<0.02;
nb_prec=B(2,2);
for i = 1:20
for j = 2:61
k=B(i-1,j)+B(i+1,j)+B(i,j+1)+B(i-1,j);
B(i,j)=k;
k=0.0;
end
nb=B(2,2);
end
l'erreur inscrite est Error: Missing operator, comma, or semicolon.
je n'arrrive pas a modifier la matrice
A voir également:
- Matlab: matrice et moyenne de points
- Gnu octave matlab - Télécharger - Édition & Programmation
- Programmer avec MATLAB ✓ - Forum Matlab
- Termes de Matlab ✓ - Forum Matlab
- Problème diffusion matlab - Forum Matlab
- Boucle for matlab - Forum Matlab
1 réponse
Bonjour à toi,
Tout d'abord, tu as marqué :
valeur du point = moyenne de (valeur du point à gauche + valeur du point à droite + valeur du point à gauche + valeur du point en haut )
puis dans ton programme :
k=B(i-1,j)+B(i+1,j)+B(i,j+1)+B(i-1,j);
Je me pose donc quelques questions :
- si c'est une moyenne, pourquoi tu ne divises pas la somme des valeurs de points par le nombre de valeurs, cad 4?
- ensuite, si ton point est en B(i,j), la valeur du point à gauche est B(i,j-1), celle du point à droite est B(i,j+1), celle du point à gauche toujours B(i,j-1) et enfin celle du point en haut B(i-1,j). Or dans ton expression de k n'apparaissent ni B(i,j-1), ni B(i,j-1)??
- autre souci, ta boucle : for i = 1:20
for j = 2:61
k=B(i-1,j)+B(i+1,j)+B(i,j+1)+B(i-1,j);
Si on se place au point B(1,1), la boucle en s'exécutant tentera de calculer k = B(0,1)+B(2,1)+B(1,2)+B(0,1). Or dans Matlab, l'indice minimum dans une matrice est 1, il n'y a pas d'indice 0 d'après mes souvenirs...? A vérifier.
- tu as 3 boucles dans ton programme : une while et deux for, mais il n'y a que deux end? Donc il manquerait la fermeture de boucle while.
Voici les erreurs vues au premier coup d'oeil.
Sinon l'erreur fait-elle référence à une ligne de ton programme en particulier?
Tout d'abord, tu as marqué :
valeur du point = moyenne de (valeur du point à gauche + valeur du point à droite + valeur du point à gauche + valeur du point en haut )
puis dans ton programme :
k=B(i-1,j)+B(i+1,j)+B(i,j+1)+B(i-1,j);
Je me pose donc quelques questions :
- si c'est une moyenne, pourquoi tu ne divises pas la somme des valeurs de points par le nombre de valeurs, cad 4?
- ensuite, si ton point est en B(i,j), la valeur du point à gauche est B(i,j-1), celle du point à droite est B(i,j+1), celle du point à gauche toujours B(i,j-1) et enfin celle du point en haut B(i-1,j). Or dans ton expression de k n'apparaissent ni B(i,j-1), ni B(i,j-1)??
- autre souci, ta boucle : for i = 1:20
for j = 2:61
k=B(i-1,j)+B(i+1,j)+B(i,j+1)+B(i-1,j);
Si on se place au point B(1,1), la boucle en s'exécutant tentera de calculer k = B(0,1)+B(2,1)+B(1,2)+B(0,1). Or dans Matlab, l'indice minimum dans une matrice est 1, il n'y a pas d'indice 0 d'après mes souvenirs...? A vérifier.
- tu as 3 boucles dans ton programme : une while et deux for, mais il n'y a que deux end? Donc il manquerait la fermeture de boucle while.
Voici les erreurs vues au premier coup d'oeil.
Sinon l'erreur fait-elle référence à une ligne de ton programme en particulier?