|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
[C++] Informazioni softcoded per proprietà matematiche
Salve, sto cercando di realizzare una sorta di Computer Algebra System (CAS) per maneggiare in forma simbolica entità matematiche quali operandi ed operatori. Praticamente vorrei realizzare quante più possibile delle funzionalià di un CAS qualsiasi come risoluzione di espressioni con costanti simboliche, ricerca delle soluzioni di un'equazione almeno lineare, derivate, primitive, ed altre cose di questo tipo. Quello che vorrei sapere è come codificare in maniera esterna al programma le informazioni delle proprietà matematiche e come devo interpretare queste informazioni nel programma?
Nello specifico intendo voglio codificare informazioni su, ad esempio, come ricondurmi ad una forma canonica: (x+y)^2 => x^2+2xy+y^2 log_x(y) => log(y)/log(x) sqrt(x) => x^(1/2) oppure come ricavare le derivate degli operatori (d/dx)e^f(x) => (d/dx)f(x)*e^f(x) (d/dx)log(f(x)) => (d/dx)f(x)/f(x) ecc La struttura di un'espressione è un albero con elementi di tipo operatore (padre) ed operando (foglia). Queste informazioni devo ovviamente usarle durante il run-time per poter effettivamente svolgere le operazioni richieste. La domanda è, che tipo di codifica devo usare, che librerie, cosa posso cercare per trovare maggiori informazioni...? Mi andrebbe anche bene codificare queste informazioni in qualche modo che non sia il C++ per poter poi generare le funzioni in C++ che le svolgono nei dettagli in modo automatico, come una sorta di metaprogrammazione più potente, elegante e semplice dei template e macro. Quindi va bene sia compile-time che run-time. Ultima modifica di biowep : 25-11-2014 alle 19:42. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Qualche anno fa avevo scritto una libreria che, data una stringa contenente una espressione, la derivava in base alla variabile assegnata.
L'avevo scritta in java e messa a disposizione sotto sourceforge, magari puo' essere un inizio, no? L'ho chiamata SottoventoDerive: http://sourceforge.net/projects/derive/ Sono anni che non controllo il progetto, andrebbe ripreso e migliorato. Se vuoi, e' tuo ![]()
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
Il nome è un tocco di classe
![]() Grazie mille, ci guardo per confrontarmi e vedere se sto prendendo la direzione corretta e se i tuoi algoritmi sono migliori di quelli a cui ho pensato. |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
![]() Comunque ti accorgerai che si tratta semplicemente di un parser che crea un albero. Poi la derivazione simbolica e' solo un gioco a nascondino tra gli alberi...
__________________
In God we trust; all others bring data |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:35.