Question

Je suis extrêmement intéressé par les mathématiques et la programmation et je prévois de commencer mathématiques symboliques projet de zéro.

  1. Est-ce une bonne idée de projet ?

  2. Où commencer?

  3. Comment s'approcher de ce projet?

  4. Des bonnes ressources ?

Merci d'avance.

Était-ce utile?

La solution

  1. Il est un bon projet pour la pratique des compétences en programmation. Mais si vous voulez créer une véritable bibliothèque que d'autres personnes veulent utiliser est un projet que vous ne voulez pas commencer allone et à partir de zéro ...

  2. Où commencer: Avoir un regard sur les solutions qui sont déjà là-bas et penser à ce qu'il est que vous voulez faire différents. Comment votre projet différent des autres?

  3. Ressource: sympy est une bibliothèque Python pour les mathématiques symboliques

Autres conseils

1.Is cette bonne idée de projet?

Oui; Je pense qu'elle doit fournir une source inépuisable de travail intéressant qui va, très rapidement, de tester et d'étendre vos pouvoirs de programmation.

2.Lorsqu'un commencer?

I deuxième les autres suggestions que vous devriez regarder les travaux existants. SAGE est très impressionnant et si vous aviez demandé mon avis, je suggère que vous écrivez d'abord un système de base pour effectuer des opérations arithmétiques avec des nombres et des symboles; puis jeter un oeil à SAGE et écrire un module pour étendre le système, autrement dit devenir un contributeur à quelque chose de plus plutôt que d'essayer de le faire tout seul. Regardez aussi Mathematica et Maple, Macsyma et Axiom. Ces derniers sont libres 2 (je crois), mais ils sont tous bien documentés en ligne et une grande source d'idées et de défis.

3.How doit-on aborder ce projet?

Comme on pouvait s'y approcher de manger un éléphant. Une bouchée à la fois. Plus sérieusement, je pense qu'il ya des questions fondamentales, telles que la représentation des expressions, et certaines fonctionnalités de base (calcul sur les polynômes) que vous pouvez réduire vos dents.

4.Toute bonnes ressources?

Beaucoup et beaucoup. google pour « algèbre informatique », « ré-écriture à long terme ». Jetez un coup d'œil à ce qui est disponible sur Amazon. Et, si vous avez accès, consultez la bibliothèque numérique ACM

Bonne chance.

Symbolic Math est un projet amusant. Si oui ou non quelqu'un utilise, il ne semble pas avoir d'importance dans votre question, donc plonger.

J'ai écrit deux de ces au fil des ans. Le plus cool était un pour SQL où les clauses - il ne quelques manipulations symboliques triviales sur le SQL à plier dans certains et des conditions supplémentaires. Pas complet « solveur » ou « optimiseur » ou quoi que ce soit, à seulement quelques manipulations symboliques de toute clause SQL where possible. L'un de moins frais était pour un débogueur; il a fait des mathématiques complexes à travailler (symboliquement) empiler des décalages pour les variables.

Vous commencez par définir des classes pour les éléments d'une expression mathématique -. Opérandes, opérateurs, fonctions, etc

Vous devez décider quelles manipulations ces objets doivent participer. Obtenir une valeur concrète d'une expression est facile et évident. Commencez par le cas où toutes les variables ont une liaison.

gérer ensuite le cas où certaines variables demeurent non liés, et vous ne pouvez évaluer les parties de l'expression.

gérer ensuite réarranger une expression dans une forme canonique. À savoir, vous avez fait une évaluation partielle et ont Add( Variable(x), Add( Variable(x), Lit(3) ) ). Vous devez écrire des règles pour le transformer en Add( Multiply( Lit(2), Variable(x) ), Lit(3) ).

Un exercice très cool optimise la parenthèse de sorte que la sortie imprimée a le plus petit nombre entre parenthèses nécessaires pour saisir le sens.

Il y a beaucoup, beaucoup d'autres règles de transformation « d'expression » que nous apprenions tous à l'école pour faire des manipulations algébriques. Beaucoup d'entre eux.

En particulier, réarranger une équation pour isoler une variable peut être vraiment difficile dans certains cas.

Faire la transformation dérivée est facile, mais l'intégration symbolique est vraiment, vraiment dur avec une tonne de cas particuliers.

Les bases sont amusants. Selon jusqu'où vous voulez aller, il devient progressivement plus difficile.

@Resources: Vous pouvez jeter un oeil à pythonica - ce fut une tentative de mettre en œuvre un Mathematica programme de type en Python (code source est disponible en téléchargement).

pySym Blog pourrait aussi vous intéresser pour obtenir des idées et commencer, et apprendre ce que les autres font avec python et mathématiques symbolique.

Plus de la manière des ressources: SympyCore :

  

Le but du projet SympyCore est de rechercher de nouvelles solutions de haute performance pour représenter et manipuler des expressions symboliques dans le langage de programmation Python, et d'essayer de nouveaux modèles symboliques pour achive fondamentalement cohérente et modèle symbolique suffisamment général qui serait facile à étendre à un système de calcul formel (CAS).

Je pense que c'est un excellent projet pour un programmeur de tout niveau de compétence.Il est assez simple d’implémenter une calculatrice symbolique juste assez puissante pour être utile.Si vous continuez à travailler sur la largeur, il y a tellement de fonctionnalités amusantes à ajouter que vous pouvez vous en occuper pendant longtemps.Si vous choisissez d'aller en profondeur, vous constaterez que les choses deviennent vite très dur.Vous pouvez vous mettre au défi indéfiniment, si c'est ce que vous aimez.

Il existe de nombreuses ressources intéressantes.Je recommande le livre "Modern Computer Algebra" de zur Gathen et Gerhard, bien qu'il s'intéresse en réalité plus à l'arithmétique sous des formes spéciales (polynômes, entiers, matrices) qu'à la manipulation symbolique générale.Lorsque vous débutez, vous serez peut-être mieux aidé en consultant un didacticiel Lisp ou Scheme, car les mathématiques symboliques sont conceptuellement très simples à faire en Lisp, et pour construire un moteur symbolique en Python, vous devrez plus ou moins implémentez un mini-Lisp comme base.

Comme d'autres l'ont souligné, vous pouvez consulter SymPy et sympycore pour vous inspirer ou trouver des algorithmes concrets.Le code source de l'un ou l'autre projet est un peu complexe (mais certainement pas trop difficile à apprendre).

(Si je peux me permettre de brancher un peu, je a écrit un petit moteur symbolique il y a quelque temps (en tant que projet de week-end -- c'est très petit et je n'y ai pas travaillé depuis).Il implémente un moteur symbolique générique dans environ 200 lignes de code, puis il y a 300 lignes de code implémentant l'arithmétique symbolique et l'algèbre booléenne symbolique, avec une simplification très rudimentaire.Peut-être plus facile à creuser que SymPy.Mais tout ce qu'il contient contient des choses que vous pourriez facilement découvrir par vous-même et que vous pourriez avoir plus de plaisir à le faire.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top