Olá!
Estou desenvolvendo um código em C que calcula o Método de Newton, fazendo diversos cálculos matriciais. O código está funcionando perfeitamente para casos simples que rodo, mas quando tento rodar problemas maiores, chega uma hora que o programa simplesmente trava e obtenho o erro:
process terminated with status -1073741510
Pelo que andei testando, o programa para no laço em vermelho no código abaixo:
void calcular_LU(double **A, double **L, double **U, int *p, int n) {
int i, j, k, y,a, v;
for(a = 0; a < n; a++)
p[a] = a;
for(k = 1; k <= n; k++) {
for(i = k; i <= n; i++) {
for(j = 1; j <= k - 1; j++) {
A[i - 1][k - 1] -= A[i - 1][j - 1] * A[j - 1][k - 1];
}
}
detecta_maximo_e_troca(A, p, k - 1, n);
for(v = k + 1; v <= n; v++) {
for(y = 1; y <= k - 1; y++)
A[k - 1][v - 1] -= A[k - 1][y - 1] * A[y - 1][v - 1];
A[v - 1][k - 1] /= A[k - 1][k - 1];
}
}
//----------------------------------------------------------------------------------------------------------
//Determinação das matrizes L e U, a partir da matriz A calculada acima
int conta_linha, conta_coluna;
for(conta_linha = 0; conta_linha < n; conta_linha++) {
for(conta_coluna = 0; conta_coluna < n; conta_coluna++) {
if(conta_linha == conta_coluna) {
L[conta_linha][conta_coluna] = 1;
U[conta_linha][conta_coluna] = A[conta_linha][conta_coluna];
} else if(conta_linha < conta_coluna) { //célula de A que vai para U
U[conta_linha][conta_coluna] = A[conta_linha][conta_coluna];
L[conta_linha][conta_coluna] = 0;
} else { //conta_linha > conta_coluna célula de A que vai para L
L[conta_linha][conta_coluna] = A[conta_linha][conta_coluna];
U[conta_linha][conta_coluna] = 0;
}
}
}
}
O código rodou 3743 iterações, e depois solta a mensagem de erro.
Alguma ideia do que pode ser esse erro?