Java: è disponibile uno strumento che mi consente di inserire, archiviare e valutare le formule matematiche?

StackOverflow https://stackoverflow.com/questions/402833

  •  03-07-2019
  •  | 
  •  

Domanda

Anche qualcosa di molto rudimentale va bene. Come inserire e valutare qualcosa come x + 1, dove x è una variabile che posso specificare.

Stavo pensando di scrivere il mio usando le stringhe per ogni formula, la regex per analizzarle, ecc., ma supponiamo che il mio obiettivo sia quello di essere il più pigro possibile e che se c'è un'altra opzione (specialmente formale), preferirei piuttosto usarlo prima,

C'è qualcosa là fuori che fa qualcosa del genere?

È stato utile?

Soluzione

Puoi pensare di utilizzare scripting da Java 6. Il riferimento JDK viene fornito con un'implementazione JavaScript e puoi collegare anche altre lingue.

Altri suggerimenti

Conosco le seguenti librerie:

Ho usato JEP con successo un paio di anni fa e sembra ancora essere sviluppato attivamente. Credo che a quei tempi avessero una licenza più permissiva, ma probabilmente è più economico che codificarla da soli (a seconda delle tue esigenze e abilità esatte).

Ho creato una libreria Java per fare esattamente questo come esempio di apprendimento per Lex / YACC, per me stesso. È stato incorporato in un progetto più ampio, dove sembra funzionare bene. Se dovessi riavviare il progetto più grande, seguirò i consigli sopra e userò il motore di scripting Java.

Potresti provare LibFormula , una libreria basata su formule basata sullo standard OpenFormula di OpenDocument.

OpenFormula è stato scritto per applicazioni con fogli di calcolo e utilizza una sintassi vicina alle formule di Excel. Ulteriori informazioni sono disponibili nel Pentaho-Wiki

Esempio:

=[x]+1

puoi controllare exp4j che ho rilasciato sotto la Licenza Apache 2.0 . implementa l'algoritmo di shunt yard di dijkstra e funziona bene con funzioni multivariabili come f(x,foo)=log(foo^(x^-1))

Alcuni potrebbero essere interessati a un nuovo strumento chiamato formula4j .

È commerciale, quindi non è per tutti.

Forse MathML ?

  

MathML è una specifica di basso livello per la descrizione della matematica come base per la comunicazione da macchina a macchina che fornisce una base molto necessaria per l'inclusione delle espressioni matematiche nelle pagine Web. È anche importante nella pubblicazione di flussi di lavoro per la scienza e la tecnologia e ovunque la matematica debba essere gestita da software. La nuova versione offre, ad esempio, miglioramenti per l'accessibilità della matematica e per le formule nelle lingue scritte da destra a sinistra. Il markup di base rimane lo stesso, poiché la community ha sette anni di esperienza con esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top