Bonjour,
En saisissant les valeurs à assigner à une matrice carrée K d'ordre n*m selon la boucle explicitée ci-dessous, je suis confronté au message d'erreur "subscript indices must be either positive integers less than 2^31 or logicals" qui résulterait du fait que pour certaine valeur de l'indice i, l'indice de la matrice K se trouve négatif.
Comment je peux, dans mon cas surmonter ce problème en assignant à tout élément de K ayant un indice négatif la valeur 0 ou en le sautant tout simplement??
Merci à l'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 for i=1:n*m K(i,i)= (2*CBX(i)/(DELTAX^2))+(2*CBY(i)/(DELTAY^2))+(4*POISSON*(CBX(i)+CBY(i))/(DELTAX*DELTAY))+(CBX(i+1)/(DELTAX^2))+(CBX(i-1)/(DELTAX^2))+(CBY(i+n)/(DELTAY^2)) +(CBY(i-n)/(DELTAY^2))+((CTXY(i)+CTYX(i))/(DELTAX*DELTAY))+((CTXY(i-1)+CTYX(i-1))/(DELTAX*DELTAY))+((CTXY(i-n)+CTYX(i-n))/(DELTAX*DELTAY))+((CTXY(i-n-1)+CTYX(i-n-1))/(DELTAX*DELTAY)); K(i,i-1)= (CBX(i)/(DELTAX^2))+(POISSON*(CBX(i)+CBY(i))/(DELTAX*DELTAY))-(2*CBX(i-1)/(DELTAX^2))-(POISSON*(CBX(i-1)+CBY(i-1))/(DELTAX*DELTAY))+((CTXY(i-1)+CTYX(i-1))/(DELTAX*DELTAY))-((CTXY(i-n-1)+CTYX(i-n-1))/(DELTAX*DELTAY)); K(i,i+1)=-(CBX(i)/(DELTAX^2))-(POISSON*(CBX(i)+CBY(i))/(DELTAX*DELTAY))+(2*CBX(i+1)/(DELTAX^2))+(POISSON*(CBX(i+1)+CBY(i+1))/(DELTAX*DELTAY))+((CTXY(i)+CTYX(i))/(DELTAX*DELTAY))-((CTXY(i-n)+CTYX(i-n))/(DELTAX*DELTAY)); K(i,i+n)=-(CBY(i)/(DELTAY^2))-(POISSON*(CBX(i)+CBY(i))/(DELTAX*DELTAY))+(2*CBY(i+n)/(DELTAY^2))+(POISSON*(CBX(i+n)+CBY(i+n))/(DELTAX*DELTAY))+((CTXY(i)+CTYX(i))/(DELTAX*DELTAY))-((CTXY(i-1)+CTYX(i-1))/(DELTAX*DELTAY)); K(i,i-n)=(CBY(i)/(DELTAY^2))+(POISSON*(CBX(i)+CBY(i))/(DELTAX*DELTAY))-(CBY(i-n)/(DELTAY^2))-(POISSON*(CBX(i-n)+CBY(i-n))/(DELTAX*DELTAY))+((CTXY(i-n)+CTYX(i-n))/(DELTAX*DELTAY))-((CTXY(i-n-1)+CTYX(i-n-1))/(DELTAX*DELTAY)); K(i,i+2)=-(CBX(i+1)/(DELTAX^2)); K(i,i-2)=-(CBX(i-1)/(DELTAX^2)); K(i,i+n+1)=-(POISSON*(CBX(i+1)+CBY(i+1))/(2*DELTAX*DELTAY))-(POISSON*(CBX(i+n)+CBY(i+n))/(2*DELTAX*DELTAY))-((CTXY(i)+CTYX(i))/(DELTAX*DELTAY)); K(i,i+n-1)=(POISSON*(CBX(i-1)+CBY(i-1))/(2*DELTAX*DELTAY))+(POISSON*(CBX(i+n)+CBY(i+n))/(2*DELTAX*DELTAY))+((CTXY(i-1)+CTYX(i-1))/(DELTAX*DELTAY)); K(i,i-n+1)=(POISSON*(CBX(i+1)+CBY(i+1))/(2*DELTAX*DELTAY))+(POISSON*(CBX(i-n)+CBY(i-n))/(2*DELTAX*DELTAY))+((CTXY(i-n)+CTYX(i-n))/(DELTAX*DELTAY)); K(i,i-n-1)=-(POISSON*(CBX(i-1)+CBY(i-1))/(2*DELTAX*DELTAY))-(POISSON*(CBX(i-n)+CBY(i-n))/(2*DELTAX*DELTAY))+((CTXY(i-n-1)+CTYX(i-n-1))/(DELTAX*DELTAY)); K(i,i+(2*n))=-(CBY(i+n)/(DELTAY^2)); K(i,i-(2*n))=-(CBY(i-n)/(DELTAY^2)); end
Partager