Rechercher : dans
Par :

Matrice Ax = b

Dernière réponse le 18 oct 2007 à 12:19:31 maverick1984, le 18 oct 2007 à 10:37:00 
 Signaler ce message aux modérateurs

Bonjour,

Je recherche activement de l'aide concernant ce programme ci dessous permettant de résoudre le système linéaire Ax=b et contanant éalement les donctions de saisie, d'affichage, de remontée, d'élimination et de permutation, j'y travaille depuis une semaine et à la compilation on me renvoie toujours des erreurs, là je suis vraiment bloqué. Je compte très sincèrement sur votre aide pour débugger le programme ou s'il le faut me donner le lien d'un programme similaire qui marche car c'est un projet que je dois rendre demain. En vous remerciant chaleureusement j'espère avoir bientôt de vos nouvelles. Bonne journée.


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>



/*Les fonctions*/
int saisie_taille();
int recherche_pivot(k,i0,A);

/*Les proc‚dures*/
void saisie_matrice(n,A);
void afficher(x,n);
void remontee(b,x,A);
void elimination(k,b,A);
void permuter(k,i0,b,A);


int main ()
{
const max=100;
int A[max][max];
int b[max],x[max];
int k,n,i0,arret;


/*D‚but du programme*/
n = saisie_taille();
saisie_matrice(n,A);

k=1; arret=0;

do
{
if (A[k][k]!=0)
{
elimination(k,b,A);
k+=1;
}
else if (A[k][k]==0)
i0=recherche_pivot(k,i0,A);
if (i0==k)
{
elimination(k,i0,A);
k+=1;
}
else if (i0!=k)
{
permuter(k,i0,b,A);
elimination(k,b,A);
k+=1;
}
else
arret=1;

}while(arret=1 || k=n);
if ( arret=0 && A[n][n]!=0 )
{
remontee(A,b,x);
afficher(x);

}
else
printf("Pas de solution");

return 0;

}

/* fonction qui saisit n*/
int saisie_taille()
{
int n;
do
{
printf("donner n");
scanf("%s",&n);
}while((n>0) && (n<=max));
return n;
}

/*fonction recherche pivor*/
int recherch_pivot(A,k)
{
int i0;
while ((i0<=n) && A[i0][k]==0)
{
i0-=1;
if (i0==(n-1))
i0=0;

}

return 0;
}

/*procedure qui saisit les ‚l‚ments d'une matrice*/
void saisi_matrice(n,A)
{
for(int i=0;i<=n;i++)
for(int=0;j<=n;j++)
{
printf("Donner A[%d][%d]",i,j);
scanf("%d",&A[i][j]);
}

}

/*procedure afficher*/
void afficher(n,x)
{
for (int i=0;i<=n;i++)
printf("%d",x[i]);

}

/*procedure remont‚e*/
void remontee(A,b,x)
{


for(int i=0;i<=(n-1);i--)
{
x[i]=b[i];
for(int j=i+1;j<=n;j++)
{
c=x[i]-(A[i][j]*x[j]);
x[i]=c/A[i][j];

}
}

}

/* procedure d'elimination*/

void elimination (A,b,k);
{
float r;
for(int i=k+1;i<=n;i++)
{
r=A[i][k]/A[k][k];
for(int j=k;j<=n;j++)
{
A[i][j]=A[i][j]-(r*A[k][j]);
b[i]=b[i]-(r*b[k]);

}
}

}

/*proc‚dure permuter */
void permuter (A,i0,k,b);
{
int tp,l2,li;
for(int j=1;j<=n;j++)
{
A[k][j]=tp;
tp=A[li][j];
A[l2][j]=tp;

}

b[li]=tp;
tp=b[l2];
b[l2]=b[li];

}

Meilleures réponses pour « matrice Ax = b » dans :
Représentation des courbes sous Matlab VoirLa fonction plot permet essentiellement de tracer des courbes sous Matlab. Dans cette astuce, nous allons essayer de détailler le fonctionnement de cette commande. Simple utilisation Vecteur Matrice Vecteur en fonction d'un autre Autres...
Concaténer les vecteurs ou les matrices sous Matlab VoirL'opération de concaténation des variables de Matlab consiste à regrouper ces variables dans une seule (vecteur ou matrice). Exemple : |2 3 4| X= |1 2 5| |0 2 7| Avec : |9 6 8| Y= |5 6 2| |3 2 1| Donne...
Facebook - Attente de b.static.ak.fbcdn.net VoirLorsque vous êtes sur Facebook, la barre d'état du navigateur affiche constamment l'un des messages suivants : Transfert des données depuis b.static.ak.fbcdn.net Attente de b.static.ak.fbcdn.net Les serveurs *.static.ak.fbcdn.net sont en...
Equipements réseau - Les B-routeurs VoirPrésentation des B-routeurs Un B-Routeur (en anglais b-routeur, pour bridge-routeur) est un élément hybride associant les fonctionnalités d'un routeur et celles d'un pont. Ainsi, ce type de matériel permet de transférer d'un réseau à un autre les...

1

 c-moi, le 18 oct 2007 à 12:19:31

Salut,

Si tu nous donnais les erreurs renvoyées par gcc / ton compilateur ? Je n'ai jamais développé sous Windows (je présume que tu le fais, au vu de l'entête conio.h) donc ne connait pas les différences avec le C sous Linux, mais je vois un

const max=100;
. En C (Linux) je préfère utiliser un
#define MAX 100
après l'inclusion des entêtes, ou un
static const int max = 100;
.

Bon courage,

c-moi

Répondre à c-moi