Présentation de midel

Voir le sujet précédent Voir le sujet suivant Aller en bas

Présentation de midel

Message par midel le Lun 17 Jan - 12:06

Bonjour,

Bon, je me suis déjà un peu présenté dans l'autre message que j'ai posté, mais là je vais au moins le faire au bon endroit !

Je ne suis ni au lycée ni au collège, en fait je sors des études universitaires. J'ai un doctorat (il faut donc m'appeler docteur Wink ) et pendant mes études j'ai longuement pratiqué l'analyse numérique/le calcul scientifique avec MatLab et/ou SciLab.

Aujourd'hui, un peu pour le "fun", je veux me mettre à un autre langage et l'appliquer au calcul scientifique. Je devais en gros choisir entre Fortran et C/C++ et j'ai choisi, un peu par défi, celui qui est le moins adapté naturellement au calcul scientifique : C/C++. J'ai aussi choisi le C parce que je ne veux pas limiter mon apprentissage au calcul scientifique, je voudrai peut-être aussi programmer d'autres genres de choses.

Par contre, et c'était prévisible, la doc sur science et C/C++ n'est pas super fournie. Il y a les "Numerical Recipes" et la GNU Scientific Library. Donc je suis tombé un peu par hasard sur ce site qui parle de la GSL, qui sera mon point de départ.

Je suis ici pour me frotter au C/C++, mais si je peux aider avec mes connaissances scientifiques ou ma pratique de MatLab/SciLab, je le ferai avec plaisir !

midel

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par domi le Lun 17 Jan - 14:23

Bienvenu Docteur!
Appelez-moi "Commandant" ou "Docteur" au choix! -Smile)
Soit le bienvenu ici!
Pour aborder le C++ en calcul, je te recommande le "Computational Physics and OO programming wih C++" de David Yevick, excellent bouquin d'introduction.
Pourquoi sembles-tu croire que le C n'est pas adapté au calcul? Bon d'accord, il ne gère pas les complexes et l'usage presque obligatoire des pointeurs ne facilite pas la chose, mais on s'en sort très bien. Je suis passé du FORTRAN au C très facilement, il y a longtemps remarque...
Tu devras aussi acquérir la maitrise de Dislin ou d'une autre librairie graphique.... A moins que tu n'en restes à GnuPlot!
Bref, on aura sans doute l'occasion d'en reparler!

PS: quelle est ta spécialité?

_________________
"Donne un poisson à un homme, tu le nourris pour un jour. Apprends-lui à pêcher, tu le nourris pour toujours." Lao-Tseu
avatar
domi
Admin

Nombre de messages : 1348
Age : 59
Localisation : Noyon
Date d'inscription : 22/10/2008

http://www.tangenteX.com

Revenir en haut Aller en bas

Re: Présentation de midel

Message par Antoine le Lun 17 Jan - 17:41

Bonjour Docteur,

J'ai un problème avec l'électromagnétisme et les ondes (je suis en MP), est ce grave ? Avez-vous un médicament à me prescrire ? Very Happy

Antoine

Nombre de messages : 14
Age : 26
Date d'inscription : 13/12/2010

Revenir en haut Aller en bas

Re: Présentation de midel

Message par midel le Lun 17 Jan - 18:01

Bonjour à tous,

Merci pour l'accueil !

Concernant le fait que le C ne soit pas très adapté au calcul, je fais juste référence à la guéguerre C vs. fortran. Quand j'ai voulu me lancer dans un langage plus près de la machine que matlab, j'ai voulu l'aborder par ce que je connais, c'est à dire le calcul, l'analyse numérique. Le fortran a une histoire plus "lourde" auprès des scientifiques que le C/C++. Mais pour toutes les raisons que j'ai données, c'est vers le C que je me suis tourné !

Merci pour le conseil sur ce livre que je ne connais pas du tout. Pour la librairie graphique, j'hésite entre deux possibilités. Soit gnuplot, effectivement, pour les trucs de base. Soit importer mes données dans MatLab pour en faire des graphes comme j'ai l'habitude. Ce n'est pas encore très clair dans ma tête. Comme je passe souvent de linux à windows, je pense peut être un peu plus pour la seconde solution. Mais avoir de quoi faire des affichages graphiques rapides sans passer par un autre programme sera quand même bien pratique.

En ce qui concerne ma spécialité, ça me permettra de répondre à la question d'Antoine par le même occasion... J'ai un doctorat en optique ! L'electromag et la propagation des ondes, j'ai pratiqué plus que de raison ! Et ce n'est pas grave d'avoir un problème avec ça, on ne peut pas tout aimer !

midel

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par domi le Lun 17 Jan - 18:16

stocker ses résultats dans un fichier txt pour les plotter sous matlab ou gnuplot est très classique. un collègue A. Garcia, que je cite fréquemment sur mon site emploie cette technique dans ses cours...
Je passe également souvent de Linux à Windows (une habitude de labo...) et pourtant j'emploie plutôt une librairie graphique.
Pour ce qui est de la "guerre" FORTRAN / C, j'ai résolu le pb: je pratique les deux! avec une préfèrence pour le FORTRAN, mais c'est du à mon grand âge! A l'époque de mes études, c'est le seul langage qu'on apprenait chez les physiciens!

_________________
"Donne un poisson à un homme, tu le nourris pour un jour. Apprends-lui à pêcher, tu le nourris pour toujours." Lao-Tseu
avatar
domi
Admin

Nombre de messages : 1348
Age : 59
Localisation : Noyon
Date d'inscription : 22/10/2008

http://www.tangenteX.com

Revenir en haut Aller en bas

Re: Présentation de midel

Message par midel le Mar 18 Jan - 15:04

Histoire de continuer la discussion sur les ouvrages papier, celui que tu me conseilles c'est bien :

http://www.amazon.fr/Course-Computational-Physics-Object-Oriented-Programming/dp/0521827787

Si j'en crois les quelques pages sur amazon, ils utilisent dislin et gsl, c'est donc ton livre de chevet Wink Le bouquin me tente beaucoup... J'ai failli craquer pour les Numerical Recipes, je vais peut-être finalement choisir celui-là !

Les "Numerical Recipes" et leur licence d'utilisation "bizarre" ne me tente pas trop...

midel

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par domi le Mar 18 Jan - 17:01

C'est bien celui-là!
Franchement, si tu veux écrire du code C/C++ pour faire du calcul, je doute que tu puisses te passer des Recipes... Si tu voyais l'état des miens!

_________________
"Donne un poisson à un homme, tu le nourris pour un jour. Apprends-lui à pêcher, tu le nourris pour toujours." Lao-Tseu
avatar
domi
Admin

Nombre de messages : 1348
Age : 59
Localisation : Noyon
Date d'inscription : 22/10/2008

http://www.tangenteX.com

Revenir en haut Aller en bas

Re: Présentation de midel

Message par midel le Mar 18 Jan - 17:07

Tu veux dire "te passer de lire et d'apprendre ce qu'il y a dans les Recipes" ou "te passer de leurs codes/fonctions" ?

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par domi le Mar 18 Jan - 19:36

les apprendre ! Tu es fou :-)) je veux dire te passer des codes! En particulier, en C, tu pourras utiliser avec profit la bibliothèque de gestions des vecteurs et des complexes... Pour ma part, je trouve que leur algo de FFT n'est pas terrible, je préfère celui de Garcia...

_________________
"Donne un poisson à un homme, tu le nourris pour un jour. Apprends-lui à pêcher, tu le nourris pour toujours." Lao-Tseu
avatar
domi
Admin

Nombre de messages : 1348
Age : 59
Localisation : Noyon
Date d'inscription : 22/10/2008

http://www.tangenteX.com

Revenir en haut Aller en bas

Re: Présentation de midel

Message par midel le Mar 18 Jan - 23:37

Je voulais plutôt dire "comprendre" Wink

Ok pour les Recipes, je comprends ce que tu veux dire. J'essaierai de m'en passer le plus possible quand même, je préfère utiliser GSL qui est sous licence GPL. Et d'ailleurs, dans le manuel de GSL, il y a un peu "discussion" quand même, pas uniquement des listes de fonction, contrairement à ce que je pensais au départ.

Concernant la FFT, on parle à beaucoup d'endroit de FFTW (sous licence GNU GPL aussi). Ce que tu appelles "l'algo de Garcia", c'est un truc développé par ton collègue ?

midel

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par domi le Mar 18 Jan - 23:56

Oh, c'est une adaptation au C/C++ de Butterfly qui est plus élégante que celle des Recipes.

_________________
"Donne un poisson à un homme, tu le nourris pour un jour. Apprends-lui à pêcher, tu le nourris pour toujours." Lao-Tseu
avatar
domi
Admin

Nombre de messages : 1348
Age : 59
Localisation : Noyon
Date d'inscription : 22/10/2008

http://www.tangenteX.com

Revenir en haut Aller en bas

Re: Présentation de midel

Message par midel le Mer 19 Jan - 11:21

Bon allez, je vais me lancer et commander le bouquin de Yevick, qui semble être exactement ce dont j'ai besoin. En ce qui concerne les Recipes, je verrai au fur et à mesure !

En plus, le livre sur amazon.fr est moins cher que sur amazon.co.uk ou amazon.com, ce que je n'avais jamais vu pour un livre en anglais !

Encore merci pour tes conseils Smile

midel

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par Micki28 le Sam 22 Jan - 20:45

Bienvenue Docteur !
avatar
Micki28

Nombre de messages : 90
Age : 24
Localisation : Ajaccio
Date d'inscription : 23/11/2009

Revenir en haut Aller en bas

Re: Présentation de midel

Message par midel le Sam 22 Jan - 22:55

Merci !

Bon, j'attends la livraison du bouquin avec impatience... Début de semaine prochaine si tout va bien.

Sinon j'ai installé gnuplot, je me lance à l'attaque de cette montagne légendaire !

midel

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par midel le Mer 26 Jan - 11:30

Bonjour tout le monde,

Alors, dans ma quête du savoir, je suis maintenant guidé par le bouquin de Yevick ! Je n'ai pour l'instant parcouru que les chapitres d'intro,mais là ça commence à coder c++, je m'accroche.

Je ne parviens toujours pas à utiliser dislin, petits soucis de bibliothèque libXm... Je continue de creuser !

Je suis par contre parvenu à tracer une courbe avec gnuplot depuis mon code en c ! Grande fierté pour moi cheers. J'ai essayé plusieurs solutions trouvées sur le web, et une seule a marché (trouvée ici), donc je me permets de la recopier ici. Le principe est de créer une fonction qui lancera gnuplot grâce à la commande system qui peut lancer des choses dans une ligne de commande linux. L'argument de la fonction crée sera une chaîne de caractère contenant les instructions pour gnuplot.

La fonction :

Code:
void gnuplot(const char *gnucommand)
{
  char syscommand[1024];
  sprintf(syscommand, "echo "%s" | gnuplot -persist", gnucommand);
  system(syscommand);
}

Et on l'appelle (mon code enregistre les données à tracer dans un fichier test.txt) :

Code:
gnuplot("plot 'test.txt'");

Tout ça est valable sous linux, mais je crois avoir vu qu'en indiquant le chemin vers "gnuplot" sous windows, c'était tout aussi possible.

midel

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par midel le Sam 4 Jan - 20:46

Re-coucou tout le monde,

Je ne sais pas si le forum et encore actif... ou non ? Je verrai bien Smile

Après de longs mois d'abandon du c++ et un plein épanouissement avec python/scipy, j'ai un peu de temps devant moi. Donc je me suis replongé dans le Yevick, et j'ai tout recommencé depuis le début. Et j'ai de nouveau les mêmes problèmes... Pas moyen de faire tracer quelque chose à dislin. Bon faut dire que comme je suis toujours incompétent en c++, je fais peut-être des choses très incorrectes. Gsl marche, mais dislin, échec puissance 10.

Ce qui est bien, c'est que grâce à mon dernier message, je vois que j'avais fini par trouver une solution avec gnuplot ! J'avais totalement oublié que j'étais passé par là. Bon, maintenant que j'ai mes habitudes avec matplotlib pour python, je vais peut-être faire comme ça... Mais je suis déçu quand même de ne jamais parvenir à faire un vrai tracé en c++ direct :'(

midel

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par domi le Sam 4 Jan - 21:25

Bonjour midel,

Il est toujours... assoupi! Je suis assez pris en ce moment entre le boulot et TangenteX que je vais bientôt compléter par quelques pages sur les ordinateurs quantiques et python!

Peux-tu me préciser les pb que tu as avec dislin, et même me communiquer le code qui te pose problème et son environnement de compilation (très important...) ?


_________________
"Donne un poisson à un homme, tu le nourris pour un jour. Apprends-lui à pêcher, tu le nourris pour toujours." Lao-Tseu
avatar
domi
Admin

Nombre de messages : 1348
Age : 59
Localisation : Noyon
Date d'inscription : 22/10/2008

http://www.tangenteX.com

Revenir en haut Aller en bas

Re: Présentation de midel

Message par midel le Dim 5 Jan - 13:03

Oh Dominique, merci, je n'osais même pas attendre une réponse Smile

Pour être honnête, je trouve ce que sort matplotlib tellement beau après 2 ans d'utilisation de python/scipy que je pense que je vais continuer mon histoire d'amour avec, même si ça veut dire : faire mon calcul en c++ et lancer un truc en python pour le graphe. De mon point de vue, les graphes de matplotlib sont les plus esthétiques que j'ai jamais produits (matlab, excel, origin, scilab, octave). En plus l'export en eps ou svg marche très bien. Mais c'est vrai qu'avoir un truc pour faire des visualisations rapides direct en c++ serait quand même bien pratique.

python/numpy/scipy est super pour le calcul scientifique, je pourrai peut-être te donner quelques très modestes coups de main si tu as besoin Wink Perso c'est le langage que je conseillerais à n'importe qui pour commencer (et continuer) en calcul numérique. C'est aussi facile que matlab mais avec plus de rigueur dans la programmation.

Mais le c++, c'est une histoire d'honneur, je voudrais réussir à faire quelque chose avec ! Alors, où j'en suis ? Hé bien je suis le Yevick de façon bête et méchante, et je bloque à l'utilisation de dislin, donc au chapitre 2... La classe !!

Je suis linux ubuntu 64bits (sur un macbook), je compile avec g++ (4.6 je crois). J'ai eu pas mal de problèmes difficiles à comprendre en compilant dans l'IDE que j'avais choisie : code::blocks. J'en ai essayé d'autres, jusqu'à l'une des plus simples (geany) puis finalement, je compile en ligne de commande, au moins je sais ce que je fais. Je pense qu'une grosse partie de mes soucis vient de ma mauvaise connaissance du c++ et de l'utilisation des librairies, etc... Par exemple, je ne sais pas encore bien pourquoi on doit faire des #include gsl ET compiler aussi avec l'option -lgsl. Qui fait quoi, où et pourquoi, ça reste un mystère, mais c'est parce que je me lance sans aucune notion rigoureuse du c++, ce qui n'est pas bien.

Alors, j'en suis là : j'ai installé avec succès gsl, le code Yevick2p3.cpp :

Code:
#include <iostream>
#include <gsl/gsl_sf_bessel.h>

using namespace std;

main () {cout << gsl_sf_bessel_J0(5.0) << endl ;}

fonctionne correctement je crois :
Code:
> g++ -o prog1 Yevick2p3.cpp -lm -lgsl -lgslcblas
> ./prog1
> -0.177597

Si je ne mets pas le -lgslcblas, j'ai des erreurs. Yevick ne le met pas, lui. Le -lm n'est pas indispensable.

Le problème vient avec l'exemple suivant du Yevick, sensé tester l'installation de dislin. Code Yevick2p4.cpp :

Code:
#include <iostream>
#include "dislin.h"

using namespace std;

main () {
    int numberOfPoints = 2;
    float x[2] = {0, 1};
    float y[2] = {0, 2};
    qplot(x, y, numberOfPoints);
    }

Il se compile sans erreur si je fais :
Code:
g++ Yevick2p4.cpp -o dislinTest -lm -I/usr/local/dislin -ldislin

Alors que dans le Yevick, s'il précise bien d'ajouter le dossier de dislin dans les dossiers que compilateur et linker doivent parcourir, il ne compile PAS avec l'option -ldislin. Moi si j'enlève le -ldislin, j'ai un beau :
Code:
/tmp/cceOCzsy.o: In function `main':
Yevick2p4.cpp:(.text+0x41): undefined reference to `qplot'
collect2: ld returned 1 exit status

donc la compilation avec le -ldislin est ce qui se rapproche le plus d'une compilation propre de mon point de vue, malheureusement, après :
Code:
> ./dislinTest
> ./dislinTest: error while loading shared libraries: libdislin.so.10: cannot open shared object file: No such file or directory

J'ai tenté de mettre un lien vers le libdislin.so.10 dans le dossier de l'executable, ça ne change rien, j'ai ajouté le dossier où se trouve ce libdislin.so.10 dans mon PATH, ça ne change rien... Il y a un truc qui ne va pas dans la façon dont je compile ou lie les choses, alors que dans le Yevick, tout semble facile et marcher tout seul. Malheureusement il ne décrit en détail la façon de procéder uniquement avec dev-c++ et sous windows. J'ai tenté de faire des compilations/executions dans les IDE (code::blocks, geany, kdevelop, anjuta) en espérant qu'ils pensent à ma place à des choses que j'aurais pu oublier, mais rien n'a jamais marché. Je n'ai jamais réussi à faire apparaître une fenêtre. Grande tristesse dans mon coeur :'(

midel

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par domi le Dim 5 Jan - 14:58

Salut midel,

je vais regarder ton code...

Pour répondre à ta première question : les fichiers inclus, désignés par #xxxx.h, contiennent des définitions de variables, de constantes et aussi les entêtes des fonctions et procédures utilisées dans le code source. Le code compilé de ces fonctions est stocké dans des fichiers librairies, que tu désignes au linker avec l'option -lxxxx (-lgsl dans ton cas).

_________________
"Donne un poisson à un homme, tu le nourris pour un jour. Apprends-lui à pêcher, tu le nourris pour toujours." Lao-Tseu
avatar
domi
Admin

Nombre de messages : 1348
Age : 59
Localisation : Noyon
Date d'inscription : 22/10/2008

http://www.tangenteX.com

Revenir en haut Aller en bas

Re: Présentation de midel

Message par midel le Dim 5 Jan - 21:41

Ok, merci pour la précision !

Donc pas étonnant qu'on ait des messages d'erreur si on fait un
Code:
#include "dislin.h"
sans compiler avec le -ldislin, puisque le compilateur a les entêtes mais pas les fonctions. C'est ça ?

Peut-être aussi que certaines conventions ou usages ou mises à jour on changé depuis les exemples du livre, qui ne marchent plus du premier coup... ?

midel

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par midel le Jeu 24 Avr - 12:40

Bon bon, je continue mon petit chemin et j'ai trouvé une solution qui me semble plus élégante qu'utiliser python pour mes graphes de tous les jours.

Je pense que je ne garderai python/matplotlib que pour faire de beaux tracés à exporter vu que c'est vraiment très pratique et pensé pour ça.

Pour le reste, et un peu par des chemins détournés, je suis parvenu à faire tracer de jolis graphes grace à Qt et QcustomPlot

Alors Ok, déjà que coder en c++ c'est pas simple, ça rajoute l'utilisation de Qt, ce qui n'est pas une mince affaire non plus et oblige à penser "objet". Mais toucher à Qt me donne en plus ce que je cherchais depuis longtemps : de quoi faire des interface utilisateur pour mes programmes, ce qui permet de toucher le côté "programmation appli" et pas seulement "analyse numérique" ! Donc je me suis lancé dedans avec plaisir et ça marche.

midel

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par midel le Lun 12 Mai - 14:16

Re-coucou,

Petite anecdote que je partage avec vous :

Je viens de finir le chapitre 17 du bouquin de Yevick. Je fais consciencieusement tous les exercices de fin de chapitre. Là, le dernier de la série me posait problème. La méthode ne convergeait pas, je cherchais partout, je relisais mais rien n'y faisait.

Alors j'ai pris mon courage à 2 mains et j'ai envoyé un mail à David Yevick pour lui demander s'il avait eu vent de coquilles dans les énoncés, ou s'il y avait quelque chose que je n'avais pas vu.

Hé bien dans les 10 min qui ont suivi, il m'a répondu ! M'a envoyé la correction de l'exercice, j'ai pu voir qu'effectivement le soucis venait d'une erreur dans l'énoncé et il m'a confirmé les difficultés qu'il avait eues lors de l'édition du livre pour corriger les erreurs qui apparaissaient, souvent du fait des étapes d'édition ou du tapage de ses notes par des non spécialistes.

Bref, un contact très sympa et ultra rapide ! Il m'a d'ailleurs dit que depuis ce livre, il en avait sorti un autre, meilleur d'après lui et avec moins de coquilles, et qu'un 3ème était sur le point de sortir également, qu'il considère également supérieur. Un contact et une expérience bien agréable !

midel

midel

Nombre de messages : 27
Age : 37
Localisation : Besançon
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Présentation de midel

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum