begin process at 2010 03 18 04:03:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > RESOLUTION DE SYSTEME LINEAIRE PAR LA METHODE DU GRADIENT CONJUGUE

RESOLUTION DE SYSTEME LINEAIRE PAR LA METHODE DU GRADIENT CONJUGUE


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :maths, analyse numerique, gradient conjugue, algorithme Niveau :Débutant Date de création :17/06/2009 Date de mise à jour :17/06/2009 01:14:43 Vu / téléchargé :3 175 / 176

Auteur : zangul

Ecrire un message privé
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
ce post implemente la resolution des systemes lineaires du type Ax = b par la methode du gradient conjugue( A matrice, b et x vecteurs). l'interet de ce post est quadruple

1) implementation de la methode:  l'algorithme que j'utilise est disponible a l'adresse web http://www.math-linux.com/spip.php?article5 (en esperant qu'elle soit encore valide.je n'ai pas pris la peine de verifier...)

2) definition complete d'une classe C++ avec tout ce que ca comporte comme constructeur,destructeur, accesseurs, fonctions amies etc...

3) notion d'heritage de classe

4) commentaires de code a l aide de doxygene. ces commentaires peuvent etre deroutants pour ceux qui ne s'y connaissent pas mais ils n'alterent en rien la comprehension du code.

une fonction main est fournie uniquement dans le but de tester les resultats (elle resout le systeme x + y = 1, x - y = 0)
l'utilisateur pourra donc utiliser le code a sa guise.

NB la matrice A doit doit etre symetrique definie positive. le code fourni verifie uniquement le caractere symetrique de la matrice.

Source

  • /*!
  • * \file main.cpp
  • * \brief Programme de test.
  • * \author Zangul
  • * \version 0.1
  • * \date 01 juin 2009
  • *
  • * Programme de test pour la resolution de systemes d'équations
  • linéaires par la méthode du gradient conjugué.
  • *
  • */
  • #include <iostream>
  • #include "GradConj.h"
  • #include "Erreur.h"
  • int main()
  • {
  • Matrix A (2, 2);
  • Vecteur b(2);
  • std::cout << "entrez 6 valeurs : "<<std::endl;
  • std::cin >> A >> b;
  • std::cout << A << b ;
  • GradConj u(A,b);
  • try
  • {
  • std::cout << u.Solve();
  • }
  • catch (erreur &e)
  • {
  • std::cout << "exception" << std::endl;
  • switch(e())
  • {
  • case BAD_ALLOC:
  • std::cout << "Bad alloc" << std::endl;
  • break;
  • case BAD_SIZE:
  • std::cout << "Bad size" << std::endl;
  • break;
  • case BAD_INDEX:
  • std::cout << "Bad index" << std::endl;
  • break;
  • case NON_SYM:
  • std::cout << "Non sym" << std::endl;
  • break;
  • case NON_DEF:
  • std::cout << "Non def" << std::endl;
  • break;
  • }
  • return -1;
  • }
  • catch (...)
  • {
  • std::cout << "erreur non repertoriée";
  • }
  • return 0;
  • };
/*!
 * \file main.cpp
 * \brief Programme de test.
 * \author Zangul
 * \version 0.1
 * \date 01 juin 2009
 *
 * Programme de test pour la resolution de systemes d'&eacute;quations 
   lin&eacute;aires par la m&eacute;thode du gradient conjugu&eacute;.
 *
 */

#include <iostream>
#include "GradConj.h"
#include "Erreur.h"

int main() 
{ 
	Matrix A (2, 2);                                              
	Vecteur b(2);
	std::cout << "entrez  6 valeurs : "<<std::endl;
	std::cin >> A >> b;
	std::cout << A << b ;
	GradConj u(A,b);
	try 
	{
		std::cout << u.Solve();
	}
	catch (erreur &e)
	{
		std::cout << "exception" << std::endl;
		switch(e())
		{
		case BAD_ALLOC:
			std::cout << "Bad alloc" << std::endl;
			break;
		case BAD_SIZE:
			std::cout << "Bad size" << std::endl;
			break;
		case BAD_INDEX:
			std::cout << "Bad index" << std::endl;
			break;
		case NON_SYM:
			std::cout << "Non sym" << std::endl;
			break;
		case NON_DEF:
			std::cout << "Non def" << std::endl;
			break;
		}
		return -1;
	}
	catch (...)
	{
		std::cout << "erreur non repertoriée";
	}
 	return 0;
};

 Conclusion

vos remarques et suggestions sont attendues.
merci

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

17 juin 2009 01:09:54 :
pas de modification du code. juste rajouter les fichier zip et la capture ecran
17 juin 2009 01:14:43 :
mise a jour du fichier zip

 Sources du même auteur

Source avec Zip Source avec une capture APPLI FINANCIERE AVEC GUI MFC

 Sources de la même categorie

Source avec Zip TRANSFORMER UN ENTIER EN DEUX NOMBRES COMPOSÉ DES MEMES CHIF... par thebroyeur
CALCULE LOG(X) par tagtog
Source avec Zip Source avec une capture ALGORITHME DE TRI D'UN TABLEAU PAR ORDRE CROISSANT OU DÉCROI... par Thuzhen
Source avec une capture CALCUL DE VARIANCE par Minilogus
Source avec une capture GÉNÉRATEUR DE CLÉS SUR 26 DIGITS AU FORMAT HEXADÉCIMAL par besilent

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture ALGORITHME DE TRI D'UN TABLEAU PAR ORDRE CROISSANT OU DÉCROI... par Thuzhen
Source avec Zip Source avec une capture ALGORITHME DE CRYPTAGE/DECRYPTAGE par besilent
[DEV-C++] CALCUL DE LA RACINE CARRÉE D'UN RÉEL par Jhep
Source avec une capture MULTIPLICATIONS: PETIT EXERCICE DE MATHS par gmorris
Source avec Zip COMPILATEUR ET DÉCOMPILATEUR DE SOURCES MALBOLGE [MLBC] par youscef

Commentaires et avis

Commentaire de juju12 le 27/06/2009 18:23:30

au lieu de renvoyer une erreur si la matrice n'est pas symétrique :
Ax=b
tu peux multipier g/d par tA, la transposée de A :
=> Mx=c avec M=tA.A et c =tA.b

du coup M est symétrique et tu peux résoudre le système par la méthode GC.


suggestion bien entendu...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

je cherche quelqu'un fort en maths et qui est en 1ere ES !! [ par GEO ] je cherche quelqu'un qui aurais le livre orange declic maths de 1 ES merci d'avance Algorithme de compression STAR amélioré [ par hi_vivie2 ] Bonjour à tous,Je dois réaliser de manière urgente l'implémentation en java de l'algorithme de compression STAR amélioré appliqué aux images en mouvem Algorithme de compression STAR amélioré [ par hi_vivie2 ] Bonjour à tous,Je dois réaliser de manière urgente l'implémentation en java de l'algorithme de compression STAR amélioré appliqué aux images en mouvem un programme à creer [ par yoyo ] je dois creer un programme permettant d trouver les nombres premiers.l'algorithme est donné, et il utilise des tableaux dont les cases sont remplies p Qui sait l'algorithme pour calculer les racines? [ par TMT ] Aidez-moi! conversion de la partie fractionnaire en base n [ par Alucard ] J'ai vu qu'il y avait beaucoup d'algorithme de la partie entière (int) d'un nombre en n'importe quel base mais je voulais savoir si quelqu'un avait un Algorithme de mélange [ par C2S ] bonjour, j'aimerais connaitre un algorithme de mélange d'un tableau... (aléatoire) ... c'est pour simuler une fonction "mélanger" relative a un paquet aide sur l'algorithme AMR [ par semecurbep ] Votre texte iciVotre texte ICIVotre texte ICI map basic?????? [ par Sfoued2003 ] slt tout le monde,je me demande si je peux faire implémenter un algorithme de Electre1 sur map basic, pour pouvoir l'utiliser aprés sur map info? et ç 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


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,780 sec (3)

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