IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

C++ et calcul mathématique (python ? Scilab ?)


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2013
    Messages : 30
    Points : 26
    Points
    26
    Par défaut C++ et calcul mathématique (python ? Scilab ?)
    Bonjour,

    La question a du être traitée des dizaines de fois mais...je me fais un noeud au cerveau depuis jeudi.


    Situation initiale :
    - soft en C++
    - données sous forme de double* et de tempscustom* (i.e. vecteurs values/times) de même dimension stockées dans une classe A, instanciée autant de fois qu'il y a de "courbe" à tracer. Je ne peux pas changer cette classe.
    - Le soft est sous C::B et tourne via wxWidgets

    Problématique :
    - Faire des opérations complexes sur ces courbes (matlab-like)

    Solution envisagée :
    - Envoyer les données à Scilab (via Call_SciLab) pour calculs et rappatrier les résultats
    - Idem Python (via ???)

    Pour SciLab, j'ai vu Call_SciLab qui pourrait répondre à la problématique. Je n'ai pas tester mais ça semble faisable et coté mathématique, c'est un must.
    Par contre, niveau ouverture, Python est bien. Je n'ai pas de recul quant à la façon de faire par contre. Des infos que j'ai pu lire, Boost encapsule un objet C++ pour qu'il soit traité dans un soft en Python. De mon coté, je cherche plutot l'inverse : embarquer python dans mon soft C++. L'idéal serait d'avoir un shell python au passage...

    Avez vous des sujets/topics/tuto pertinents (ou simplement des conseils) la dessus ?

    Je continue à googler...
    Merci d'avance

    edit : quelques liens interessants
    http://www.developpez.net/forums/d76...pp/cpp-python/
    http://www.codeproject.com/Articles/...-C-Application
    https://www.coveros.com/calling-python-code-from-c/
    http://weihuang.blogs.rice.edu/tips-...ion-in-c-code/

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Salut,

    si tu veux embarquer Python https://docs.python.org/2/extending/embedding.html
    Boost le permet plus facilement.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2013
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    Merci pour ta réponse rapide,

    J'avais vu cet article, je me demandais s'il y avait plus efficace/simple.
    Bon, donc j'ai ma réponse : ça ou boost, c'est ce qui vient à l'esprit et qui fonctionne.

    Je teste :-)

  4. #4
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Pourquoi pas une solution en C++ comme Gnu Octave ? Ça me paraîtrait bizarre que tu n’y trouves pas les fonctionnalités que tu cherches.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2013
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    Je reprends un soft existant, du genre déjà déployé.

    L'idée c'est que le soft manipule de gros volumes de données, que ces données sont parfois exotiques (et que ce n'est pas représentable sauf sur une appli custom), et qu'il ne s'adresse a deux trois collègues qui ne sont ni automaticien, ni mathématicien. Donc, Matlab/SciLab/Octave, ils n'en veulent pas. Enfin, pas en tant que base logicielle.

    Donc je dois porter sur une base C++/wxWidgets quelques fonctionnalités dont : la possibilité de faire des opérations entre les données, voir de faire quelques opérations custom via scripts conçu par le prochain collègue qui aura envie de jouer.

    Je pars peut etre dans le mur, mais j'avais en tête SciLab/Octave (et pad'sous pad'Matlab) ou Python (qui a l'air tres open).
    Le problème d'Octave, c'est qu'il n'inspire pas confiance (perenité/aspect IHM) donc je suis parti sur SciLab/Python.


    A l'heure actuelle, je deblaie le coté SciLab en attendant d'avoir digéré un peu C++/Boost/Python.
    D'ailleurs, si quelqu'un sait comment lire la console SciLab, je suis preneur.



    A ce propos, si quelqu'un a la mauvaise idée d'utiliser C::B/Mingw32-gcc pour SciLab :
    - faire attention à la version de SciLab (32 bits = 32 bits)
    - les BOOL, on est ifndef MSC_VER mais il faut traiter ça comme si on l'était pas (passiver le "typedef enum bool" ainsi que le else dans bool.h des includes SciLab 5.5.2)
    - Le SendScilabJob prends des char*, donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    wxString maclasse::Execute(wxString myCmd)
    {
        SendScilabJob(myCmd.char_str());
        myRep = wxT("Sent [") + myCmd + wxT("]");
        return myRep;
    }

    Mais l'idée étant d'avoir l'env. maths géré par .dll, je vais sans doute regarder.
    Quelques pages interessantes ici :
    https://www.gnu.org/software/octave/...-Programs.html
    http://jordi.platinum.linux.pl/octav...-is-octave.pdf (46 et suivantes)
    http://octave.sourceforge.net/docs.html
    http://octave.sourceforge.net/coda/coda.pdf

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2013
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    Au final,

    SciLab fait le job mais Call_Scilab est pas évident à implémenter (il existe une amélioration de l'API...pour java);
    Octave aurait sans doute etait plus efficace, cause proche du C++. Mais dans mon cas, le GNU n'est pas synonyme de perenités et d'améliorations (puis pas d'équivalent à Simulink si un jour quelqu'un a la folie des grandeurs).

    Python aurait pu être cool mais j'ai été refroidi par Boost.Python + NumPy.
    Mais ça aurait sans doute été la solution la plus efficace sur le long terme.

    Bref, plus de question,
    Je tag en resolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. calcul mathématique en C#
    Par belmansour tidjani dans le forum C#
    Réponses: 7
    Dernier message: 04/09/2007, 17h34
  2. Calcul mathématique en C
    Par _SamSoft_ dans le forum C
    Réponses: 3
    Dernier message: 26/04/2007, 18h18
  3. logiciel de calculs mathématiques avancés
    Par jlassiramzy dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 21/03/2007, 20h26
  4. [PHP-JS] calculs mathématiques avancés en php
    Par jejerome dans le forum Langage
    Réponses: 8
    Dernier message: 12/07/2006, 13h05
  5. calculs mathématiques avec des "racines)
    Par emmanuel4945 dans le forum Access
    Réponses: 1
    Dernier message: 30/01/2006, 21h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo