Ciao a tutti sono nuovo nel forum.
Volevo chiedervi di dare un'occhiata a questo codice per la risoluzione di sistemi lineari con metodo di Gauss, senza pivoting.
Il codice non presenta errori "tecnici", nel senso che parte, però quando inserisco gli elementi della matrice e del vettore è come se la function non agisse, ovvero mi sputa fuori quello che ho inserito io poco prima; non cambia nulla.
Questo è il codice.
#include<stdio.h>
void gauss(float A[][100], float b[], int n);
main()
{int i, j, k, n;
printf("inserire la dimensione del sistema n=");
scanf("%d", &n);
float A[n][n], b[n], m[n];
printf("Inserire gli elementi della matrice\n");
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
printf("A[%d][%d]=", i, j);
scanf("%f", &A[i][j]);
};
printf("Inserire gli elementi del vettore termini noti\n");
for(i=0; i<n; i++)
{
printf("b[%d]=", i);
scanf("%f", &b[i]);};
gauss(A, b, n); /*chiamo la function gauss */
printf("Stampo gli elementi della nuova matrice\n");
for(i=0; i<n; i++)
{for(j=0; j<n; j++)
printf("A[%d][%d]=%f \n", i, j, A[i][j]);
};
printf("Stampo gli elementi del nuovo vettore termini noti\n");
for(i=0;i<n;i++)
printf("b[%d]=%f \n", i, b[i]);
}
dove la function è questa:
void gauss(float A[100][100], float b[100], int n)
{ int i, j, k;
for(k=0;k<n;k++)
{ for(i=k+1;i<n;i++)
{A[i][k]=A[i][k]/A[k][k]; /*creazione di un coefficiente per l'eliminazione */
for(j=k+1;j<n;j++)
{A[i][j]=A[i][j]-A[i][k]*A[k][j]; /*riduzione dei coefficienti */
};
b[i]=b[i]-A[i][k]*b[k]; /*riduzione dei termini noti */
}; }; }
Grazie mille