Metodo di eliminazione di Gauss senza pivoting

di il
2 risposte

Metodo di eliminazione di Gauss senza pivoting

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

2 Risposte

  • Re: Metodo di eliminazione di Gauss senza pivoting

    Stai passando i parametri per valore e non per reference!

    Ristudiati come funzionano i puntatori!
  • Re: Metodo di eliminazione di Gauss senza pivoting

    migliorabile ha scritto:


    Stai passando i parametri per valore e non per reference!
    Scusami ma non ho capito cosa vuoi dire e sopratutto a che punto ti riferisci.
    Ho sempre utiliccato una "descrizione" di questo tipo, ad esempio per il calcolo del prodotto scalare tra due vettori, e non ho avuto problemi. Puoi essere più chiaro?
Devi accedere o registrarti per scrivere nel forum
2 risposte