Matlab: matrice et moyenne de points

Fermé
Utilisateur anonyme - 9 déc. 2009 à 11:15
ptidavid Messages postés 1273 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 16 février 2010 - 10 déc. 2009 à 14:03
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

1 réponse

ptidavid Messages postés 1273 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 16 février 2010 104
10 déc. 2009 à 14:03
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?
0