Pivot de gauss

Contenu du snippet

Le titre est assez explicite non?

Pas forcément super bien détaillé, mais les variable sont pas trop mal nommé. Je me suis inspiré de ce pdf http://www.dil.univ-mrs.fr/~garreta/generique/sujets/PB01.pdf

.

Source / Exemple :


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <math.h>
#define N_Eq 11

int main()
{
	//long double buf;
	long double T_Eq[N_Eq][N_Eq]={{	1	,	10	,	100	,	1000	,	10000	,	100000	,	1229	}	,
{	1	,	30	,	900	,	27000	,	810000	,	24300000	,		4249	}	,
{	1	,	50	,	2500	,	125000	,	6250000	,	312500000	,	12358	}	,
{	1	,	60	,	3600	,	216000	,	12960000	,	777600000	,		19956	}	,
{	1	,	80	,	6400	,	512000	,	40960000	,	3276800000	,	47434	}	,
{	1	,	100	,	10000	,	1000000	,	100000000	,	10000000000	,101450	}};

	int i_Equation;
	int i_Monome;
	int n_Equation=6;//Variable constante représentant le nombre d'équation
	int n_Monome = n_Equation ;//Nombre de Monome

	printf("Programme du pivot de gauss");
	/*printf("\nEntrez le nombre d'équation :");
	scanf("%d",&n_Equation);
	printf("\n\n");
	n_Monome = n_Equation ;//Nombre de Monome
	for (i_Equation=0;i_Equation<n_Equation;i_Equation++)
	{
		printf("Equation n°%i\n",i_Equation+1);
		for (i_Monome=0;i_Monome<n_Monome;i_Monome++)
		{
			printf("valeur %i = ",i_Monome+1);
			scanf("%Lf",&buf);
			T_Eq[i_Equation][i_Monome]=buf;
		}
		//printf("\n");
		printf("Equation %i =",i_Equation+1);
		scanf("%lf",&T_Eq[i_Equation][n_Monome]);
		printf("\n\n");
	}	// on a saisi les facteurs des equations

  • /
long double Pivot; long double PivotEq; int reference; int Tri_Equation; int PathS[N_Eq]; for(i_Equation = 0;i_Equation<n_Equation-1;i_Equation++) // Nous parcourons l'ensemble des equations { reference = 0; Pivot = T_Eq[i_Equation][reference]; for(i_Monome=1;i_Monome<n_Monome;i_Monome++) //Nous parcourons l'ensemble des monomes pour chercher le pivot! { if(fabs(T_Eq[i_Equation][i_Monome])>fabs(Pivot)) { Pivot = T_Eq[i_Equation][i_Monome]; reference = i_Monome; } } PathS[i_Equation]=reference; for(Tri_Equation = i_Equation + 1; Tri_Equation<n_Equation;Tri_Equation++) // triangulation du systeme. { PivotEq = T_Eq[Tri_Equation][reference] ; for(i_Monome=0;i_Monome<=n_Monome;i_Monome++) //Nous parcourons l'ensemble des monomes { if(T_Eq[Tri_Equation][i_Monome]!=0) { T_Eq[Tri_Equation][i_Monome]= T_Eq[Tri_Equation][i_Monome] *Pivot/PivotEq- T_Eq[i_Equation][i_Monome]; } } } } //Recherche de l'élément >0 dans la dernière equation pour trouver le résultat... int Depart=0; bool Ok = false; while((Depart<n_Monome)&&(Ok==false)) { i_Monome=0; while((i_Monome<n_Monome)&&(Ok==false)) { if(Depart ==PathS[i_Monome]) Ok = true; i_Monome++; } if(Ok==true){ Ok=false; Depart++;} else Ok=true; } PathS[n_Equation - 1] = Depart; //reference = Depart; long double Solution[N_Eq]; long double ASoustraire; long double ADiviser; int d_Monome = n_Monome-1; for(i_Equation = n_Equation-1;i_Equation>=0;i_Equation--) { Depart = PathS[i_Equation]; i_Monome = n_Monome-1; ASoustraire =0; ADiviser = 0; while(i_Monome>=d_Monome) { if(i_Monome==d_Monome) ADiviser += T_Eq[i_Equation][PathS[i_Monome]];//Partie de l'équation else ASoustraire += T_Eq[i_Equation][PathS[i_Monome]]*Solution[PathS[i_Monome]]; i_Monome--; } Solution[Depart] = (T_Eq[i_Equation][n_Monome]-ASoustraire)/ADiviser ; d_Monome--; } //Passons au remplacage.. printf("Solution aux equations :\n"); for(i_Equation =0;i_Equation<n_Equation;i_Equation++) { printf("valeur %d = % Lf",i_Equation + 1,Solution[i_Equation]); } printf("\n\nAppuyer sur une touche pour terminer..."); scanf("%d",&n_Equation); return 0; }

Conclusion :


Je m'en sert pour faire mes propres fonction en génie climatique. Dorénavent et suite à un crash de mon disque dur, je mettrai beaucoup plus de source sur le net!

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.