begin process at 2012 05 27 17:48:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > PIVOT DE GAUSS

PIVOT DE GAUSS


 Information sur la source

 Description

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/suje ts/PB01.pdf

.

Source

  • #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;
  • }
#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!


 Sources du même auteur

UNE CALCULATRICE TRAITANT LES CARACTÈRES....
DLL - SPLIT AVEC MULTIPLE DELIMITEUR

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture HDR EXPOSURE FUSION par mecrosoft
Source avec Zip Source avec une capture EVALUATEUR_EXPRESSION_ARITHMETIQUE par Donald180v
Source avec Zip Source avec une capture DETERMINANTS (GAUSS & COFACTEURS) par JCDjcd
RÉSOLUTION DE SYSTEME DE 3 ÉQUATIONS À 3 INCONNUES par eldred
METHODE D'INTEGRATION par jad_raad

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

pivot de gauss [ par DeNeBj ] bonjourj'aimerais trouver un prog en c qui utilise seulement les tableaux et les boucles et qui resoud des systemes d'equations (on s'arrete à 10 ) ke pivot de gauss [ par midokok ] salut .....je rechrche une fonction récursive ...pour la solution de (n) systeme d'equation //par la méthode ----> (PIVOT DE GAUSS) & merci ....... besion d' aide [ par ccfacile ] j'ai  fais un programme sur devc++ pour resoudre l'equation matricielle : A*X=B ,  je vois pas ou est elle euruer ? est ce que vous pouvez aidez SVP, gauss en pascal "Tres Urgent " [ par islem2007 ] Svp je voudrais ecrire en pascal le programme correspondant a la methode de gauss pour la matrice suivante :On considere la matrice An=(ai,j)&lt;=i,j& problème mathématique [ par zut69 ] Bonjour,Je voudrais savoir comment mettre au carré une valeur, sans utilisé la fonction pow() et sans la multiplier par elle-même.Quelqu'un aurait une Création d'un nouveau langage de programmation à visée mathématique [ par HumbuckerSingleCoil ] Bonjour à tous. Je suis en-train de réaliser un logiciel mathématique. Pour ce faire, j'ai développé des algorithmes simples puis je les ai implément logique mathématique [ par khaleddjeddi ] [color=green]SVP aider moi pour faire cet algorithme....[/color] Algorithme de mise sous forme normale Toute fbf de LP admet une fnc et une fnd (minim parser une expression mathématique, de manière récursive ou itérative ? [ par mmaximum ] Bonjour, Je suis actuellement en train de programmer un petit CAS, qui devra tourné sur un système très réduit (calculatrice). J'ai déjà crée toute l algorithme de gauss et decomposition LU [ par speedamine ] bonjour a tous.je voudrai avoir des algorithmes ,ecrits en borland pascal,suivants:methode de gauss ordinaire pour la resolution d'un systeme .la deco


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales