begin process at 2012 05 27 13:55:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > BOITE A OUTILS MATHÉMATIQUES POUR L'ALGÈBRE LINÉAIRE ET L'ANALYSE

BOITE A OUTILS MATHÉMATIQUES POUR L'ALGÈBRE LINÉAIRE ET L'ANALYSE


 Information sur la source

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths Classé sous :listes chainées, vecteurs, matrices, fonctions, tables Niveau :Initié Date de création :01/07/2010 Date de mise à jour :29/10/2010 23:16:17 Vu / téléchargé :4 291 / 184

Auteur : BOLLOTD

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

 Description

Cliquez pour voir la capture en taille normale
Calcul matriciel, polynomial, équations différentielles, équations aux dérivées partielles, calculs de zéros et d'extrema, d'intégrales, d'éléments propres, lissage, tabulation, interpolation, systèmes linéaires et non-linéaires.


 Conclusion

Il reste à écrire l'interface graphique et le post-traitement pour l'équation de poisson.

 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

01 juillet 2010 20:59:17 :
Détail de la syntaxe à utiliser pour créer les différents objets.
03 juillet 2010 00:06:03 :
J'ai remplacé entete2.h par entete.h pour que ça passe à la compilation.
08 juillet 2010 18:46:48 :
Modification majeure: la structure globale qui regroupait les départs de chaînes sont remplacés par les données membres statiques debut. Les fonctions friends qui parcouraient les chaînes sont remplacées par des fonctions membres statiques.
16 juillet 2010 12:27:04 :
Nouvelle mise à jour majeure: tous les char* et les char[] sont remplacés par des objets string. Pour tous les objets, le passage de paramètres par valeur est remplacé par le passage par référence (avec const à chaque fois que c'est possible). Prochaine mise à jour: remplacement des listes chaînées crées manuellement à l'aide de la donnée membre *suiv par des listes crées avec std::list.
17 juillet 2010 14:45:49 :
modification mineure: simplification de recupere_nom_objet
20 juillet 2010 12:33:48 :
modification majeure: suppression des 10 listes chaînées faites "manuellement" (avec les pointeurs membres "*suiv" et données membres statiques "debut"). Elles sont remplacées par 10 std::list qui procure une gestion plus simple des listes.
22 juillet 2010 16:28:05 :
Lorsqu'une opération est effectuée le résultat est stocké dans les listes ce qui permet de réutiliser ce résultat pour d'autres calculs.
28 juillet 2010 00:49:03 :
Modifications mineures: amélioration de l'affichage d'un complexe et d'un polynôme. Correction d'un bug dans "saisie_complexe". Ajout majeur: les opérations croisées entre les différents types d'objets sont écrites. Voir dans "effectuer_operation" toutes les opérations implantées.
29 juillet 2010 12:10:23 :
Création de la variable permanente "i" utile pour les nombres complexes. Dans "effectuer_operation", création de deux variables réelles temporaires pour pouvoir introduire des nombres directement. Ex: v1=5*v ou r=5+2 ou m1=m/5.
16 août 2010 17:27:40 :
Ajout de l'option: effectuer un enchainement d'opérations. Exemples: a=3(7-2)+8 crée le réel a, a=m-r*I crée la matrice a (m et I matrices, r réel), v=au-b crée le vecteur v (a matrice et u et b vecteurs) Pour évaluer une expression, celle-ci est analysée et transformée en arbre syntaxique (binaire). Ensuite un parcours en post-ordre de cet arbre permet d'obtenir une notation polonaise inverse de l'expression. Celle-ci est rangée dans une std::queue puis exécutée dans une pile std::stack. Les résultats intermédiaires sont stockés temporairement dans les std::list avec un nom tel que temp<n°>. Une fois le résultat final obtenu, ces variables temporaires sont effacées.
17 août 2010 12:12:31 :
corrections de bugs, notamment lors de la copie d'une variable et lorsque qu'une variable-opérande d'une opération n'existe pas dans les std::list.
23 août 2010 12:53:19 :
Correction de nombreux bugs (facteurs négatifs et affichage des polynômes). Implantation des fonctions usuelles (cos,sin,tan,acos,asin,atan,log,exp,sqrt) valables pour kes variables réelles, de l'opération puissance (ex: m'=m^3)valable pour tous les types d'objet et de la fonction ide qui permet de créer des matrices identité. Pour aider à l'utilisation du programme, vous pouvez lire le fichier lisez-moi qui détaille ce que l'on peut déjà faire. Faites moi aussi part des bugs qui pourraient m'avoir échapper. Merci d'avance.
24 août 2010 11:39:42 :
Suppression de l'horrible menu. Il est remplacé par des commandes et une analyse des expressions du type nom=expression pour savoir quoi faire. Voir le fichier lisez-moi pour plus de détails.
26 août 2010 20:03:16 :
Lire lisez-moi. Ajout de l'évaluation d'un polynôme à variable réelle et à matrice réelle carrée. Ajout de l'évaluation d'une fonction à une variable réelle.
30 août 2010 12:11:05 :
correction de bugs dans la multiplication des matrices, ajout d'un fichier journal, des fonctions reso (résolution de systèmes linéaires), trans (transposée d'une matrice), det (déterminant), trace (trace), module (d'un nb complexe). Voir lisez-moi pour plus de détails.
30 août 2010 13:40:23 :
correction d'un bug sur la multiplication de deux matrices.
31 août 2010 16:31:22 :
Correction d'un bug sur l'analyse des expressions. Transposé d'un vecteur, multiplication de deux vecteurs pour donner suivant les cas un produit scalaire ou une matrice de rang 1. Polynôme caractéristique d'une matrice carrée. Voir lisez_moi.
03 septembre 2010 23:27:31 :
rang d'une matrice, éléments propres d'une matrice, zéros d'un polynôme. Voir lisez_moi pour plus de détails.
07 septembre 2010 13:33:32 :
Tabulation de fonctions, méthode de Newton, intégration de Gauss.
09 septembre 2010 16:49:35 :
Possibilité de taper les commandes et les fonctions indifféremment en majuscule ou en minuscule. Possibilité de sauver les objets en mémoire dans un fichier et de les récupérer. Voir lisez-moi.
17 septembre 2010 16:53:18 :
Méthode d'Euler, de RK4 pour les équations du premier ordre Méthode matricielle pour les équations différentielles linéaires du second ordre. Voir lisez_moi.
20 septembre 2010 12:22:05 :
Évaluation des fonctions à expression à deux variables (ex: x=f(3,2). Méthode de Runge-Kutta d'ordre 4 adaptée aux équations linéaires du second ordre transformées en systèmes 2*2 du premier ordre(diff21). Méthode de tir (tir) pour les équations linéaires du second ordre avec des conditions aux limites.
24 septembre 2010 22:34:22 :
Tabulation et évaluation d'une fonction à deux variables. Évaluation d'une fonction tabulée 1d et 2d par interpolation. Voir lisez-moi pour plus de détails.
27 septembre 2010 14:02:47 :
Détermination du noyau d'une matrice (fonction ker). Indispensable pour obtenir les sous-espaces propres d'une matrice (à utiliser avec poly et bairstow) en déterminant les noyaux de A-l_i*Id.
28 septembre 2010 20:04:12 :
Extraction de lignes et de colonnes d'une matrice et extraction de nombres des vecteurs et des matrices. Voir lisez_moi pour la syntaxe.
03 octobre 2010 13:15:30 :
Équations aux dérivées partielles du premier ordre de la forme ay'x+bf'y=c avec des C.L sur une courbe
09 octobre 2010 17:51:22 :
Extrema (fonction 2 variables), systèmes non-linéaires (2*2), interpolation de Lagrange,
13 octobre 2010 15:31:28 :
Équation de la chaleur et sa résolution par la méthode de Cranck-Nicholson (une variable d'espace). Équation de propagation des ondes et sa résolution par la méthode implicite (une variable d'espace).
21 octobre 2010 11:19:35 :
Création et résolution directe de l'équation de Poisson. Voir lisez_moi.
29 octobre 2010 23:16:22 :
Pour l'équation de poisson, introduction directe de coefficients à l'équation, exemple; 2f"x+3f"y=x+y Pour la méthode directe de la résolution de l'équation de poisson, la matrice (énorme) a été découpée et allégée grâce à l'introduction d'une ligne de ciel (voir le livre de Gouri Dhatt et de Gilbert Touzot "Une présentation de la méthode des éléments finis"). Pour une discrétisation de 100X100 (ce qui donne une matrice de 9600 équations à 9600 inconnues), sa taille passe de 800Mo à 16Mo environ. La prise en compte de la ligne de ciel avec la méthode LR à la place de celle du pivot permet de faire passer le temps de calcul de 4h à quelques secondes. Tout le secret réside dans le fait que l'on ne stocke plus les zéros inutiles et qu'ils ne sont plus pris en compte dans les calculs.

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) PERMUTATIONS DE CARACTÈRES par alpha5
Source avec Zip Source avec une capture PARTICIPATION À L'APPRENTISSAGE DE LECTURE DE L'HEURE (PENDU... par oulipan
Source avec Zip Source avec une capture TECHNIQUE TRADITIONNELLE DE LA DIVISION par oulipan
Source avec Zip Source avec une capture ENTRAÎNEMENT POUR EFFECTUER DES MULTIPLICATIONS EN COLONNES ... par oulipan
Source avec Zip Source avec une capture CONVERTISSEUR HEXAVIGÉSIMAL par shaeks

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture [C++] CLASSE DE GESTION DE FONCTIONS par pop70
Source avec Zip BIBLIOTHEQUE FONCTIONNELLE : OPÉRATIONS, COMPOSITION D'OBJET... par ordiman85
Source avec Zip EVALUATEUR D'EXPRESSION AVEC VARIABLES INDEXÉES par DragonRapide
Source avec une capture [C] BALLES REBONDISSANTES EN SDL par smartties
Source avec une capture EXEMPLE DE POINTEURS DE FONCTION par pop70

Commentaires et avis

Commentaire de CptPingu le 02/07/2010 11:26:39 administrateur CS 1/10

C'est un code que je ne recommande pas.

Plusieurs remarques:
- Le titre est incorrecte puisque ton code n'a *absolument* rien à voir avec une quelconque base de données. C'est juste liste chaînées qui est gardée en mémoire !
- Tu fais du C++, mais tu n'en utilises pas les avantages, tu aurais pu coder directement en C, ton code n'aurait pratiquement pas changé.

Au niveau techniques:
- N'utilise jamais using namespace std, *surtout* dans header ! Voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Préfère 0 à NULL. Voir: http://0217021.free.fr/portfolio/axel.berardino/articles/null-en-cpp
- Un seul header par classe, on ne met pas plusieurs définitions de classe dans un seul header !
- Les variables globales sont à proscrire totalement. Si tu as des variables globales, pose toi des questions.
- Utilise des std::string, au lieu de faire du char*/char[] partout !
- La liste chaînée aurait pu être aisément remplacé par une std::list
- Il est inutile de faire un "return;" à la fin d'une fonction retournant void.
- L'encapsulation des données ne sert strictement à rien, si tu mets toutes les méthodes amis de tes classes (friend). L'utilisation du mot clé friend doit être rarissime, et doit se justifier. Ici il est utilisé n'importe comment.
- Beaucoup de fonction ne sont pas optimisées (je pense par exemple à "enleve_les_blancs" qui fait des copies inutiles).
- Les fonctions sont *trop* grosses. Une bonne fonction n'excède généralement pas une trentaine de ligne.
- Beaucoup de répétition ! Beaucoup de code aurait pu être factorisé. A la place tu as fait énormément de copier coller.

Enfin, cerise sur le gâteau, le code ne compile pas chez moi (normal, tu n'as pas pris la peine d'inclure les headers nécessaires pour strcpy et strcmp, et entete2.h n'existe pas !), et j'ai énormément de warnings (tu n'as pas du compiler en activant l'affichage de conseil).

Le code ne compilant pas, je n'ai pas vérifié les fuites mémoires, mais je suis à peu près sur que sur ce point aussi, il y a des problèmes.

J'oublie sûrement plein de remarques, mais j'ai du en parcourir la majorité.

Commentaire de BOLLOTD le 03/07/2010 00:45:01

Je ne suis pas un pro comme vous. Je débute en c++ et je ne suis pas informaticien de profession. Il y a longtemps j'ai programmé en fortran. Je tiendrais compte de vos conseils mais ce n'est pas dit de façon très sympa. Merci quand même.

Commentaire de CptPingu le 03/07/2010 13:51:51 administrateur CS

Il ne faut pas le prendre mal. En postant dans la section "source", tu exposes ton code à la critique. Cette section a vocation à présenter des codes qui sont soit techniquement intéressants (et donc techniquement, à défaut d'être irréprochable, au moins très "carré"), soit à présenter quelque chose de pédagogique.
Ici tu entres dans la première catégorie. Le souci est que tu fais beaucoup de chose de la mauvaise manière. Il faut savoir qu'un débutant qui voit une source a beaucoup de mal à différencier les bonnes pratique, des mauvaises. S'il prend ta source comme référence, ce ne sera pas à son avantage.
Pour simplifier, on est plus sévère sur les codes postés dans cette section, que sur le forum.

Néanmoins, rien ne t'empêche de mettre à jour ton code. N'hésite pas à demander de l'aide, c'est toujours avec plaisir que les membres de cette communauté t'aideront.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

AIDE: CHERCHE TUTORIEL SUR LES FONCTIONS GRAPHIQUES [ par Mmuller57 ] je CHERCHE un TUTORIEL sur LES FONCTIONS GRAPHIQUES en C++(tracer une ligne, un cercle, un carrée, un rectangle, un polygone et le tout en C++ !). Je Liens entre 2 tables sous Base Oracle [ par Charly06 ] Bonjour ma question est la suivante : Comment créer un lien entre 2 tables, sachant que je suis sous Oracle. D'avance merci liste de fonctions [ par niconico ] quelqu'un aurait-il l'adresse d'un site ou je pourrait trouver la liste des fonctions en C++; ou au moins celles relatives a la creation, modification problèmes liens entre fichiers C et C++ dans un projet Visual C++ 6.0 [ par nico ] J'ai récupéré un projet contenant des fichiers écrits en C. Le fichier "principal" de ce projet également écrit en C fait appel à des fonctions se tro codes C++ pour TAPI et MAPI [ par Francky ] Bonjour,Je recherches des codes sources C++ pour les les fonctions TAPI (téléphone) et fonctions MAPI (mails).Merci d'avance. Comment utiliser InternetOpen(...), CloseHandle(...) et autres fonctions se rapportant au Web ? [ par Tiot Seb ] Salut amis programmeurs sous Visual C++!J'ai besoin, pour un projet de stage, de pouvoir, ouvrir et fermer Internet Explorer. En fait, je dois créer u classes ou juste fonctions ? [ par madVinz ] Salut!Comment choisir entre faire des classes ou juste des fonctions ???merci, @+ <bios.h>aidez moi aussi pour les fonctions geaphiques sous dev c++ 4.0 [ par riderpro ] Voila il me faut &lt;bios.h&gt; pour dev c++ 4.0 sinon je ne peux pas faire mes progs pleas entrz en contact pour coopération Les grandes tables Access et ODBC [ par Michel Caramez ] Bonjour,Je travail sur un système de récupération de données en C++ via un ODBC sur une table MS Access. j'ai développé une mini application. Mais voi Tableau de correspondance des fonctions c++ et de leur fichier #include [ par guguy ] BonjourJ'aimerais savoir s'il serait possible de trouver un tableau de correspondance entre les fonctions c++ et leur fichier #include (ex : cout -&gt


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

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