Bonjour,

Je rencontre une erreur dans ma fonction de réduction : error 21 - Index invalide, après des tests, aucun des indices testés à l'endroit de l'erreur ne dépasse la capacité théorique de la matrice A voici le code de la fonction :
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
17
18
19
20
function[u,y] = reduc(a,b,n)
    for k=1:(n-1)
        for p=(k+1):n
            aux = 0;
            if a(rslvIndice(p,k,n)) ~= 0 then
                aux = a(rslvIndice(p,k,n))/a(rslvIndice(k,k,n));
            elseif p >= 3 then
                aux = a(rslvIndice(p-2,k,n))/a(rslvIndice(k,k,n));
            end
            a(rslvIndice(p,k,n)) = 0;
                disp(a(619));
            for j=(k+1):n
                a(rslvIndice(p,j,n)) = a(rslvIndice(p,j,n))-aux*a(rslvIndice(k,j,n)); // <-- ligne posant problème
            end
            b(p)=b(p)-aux*b(k);
        end
    end
    u=a;
    y=b;
endfunction
Cette fonction est appelée depuis cette autre fonction ci-dessous(u n'est pas traité dans cette partie de la fonction) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
function[u] = approximation(x,y,n)
    matA = zeros(n*n);
    matB = ones(n,1);
    [matA,matB] = reduc(matA,matB,n);
endfunction
Enfin, la fonction permettant de calculer un indice unique à partir de deux indices :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
function[indice] = rslvIndice(x,y,dim)
    indice = modulo(x,dim) + (y-1)*dim;
endfunction
Les tests ont été effectués avec n=25, x étant égal à linspace(1,25,25), y n'est pas utilisé dans la partie du code qui pose problème.
Le problème lors de l'affectation de a à l'indice 601(ligne 13, fct reduc), or le tableau a est censé faire 25*25 cases soit 625 cases, à partir de là je ne sais vraiment plus quoi faire.
Merci d'avance pour votre aide