Il fatto è che anche una stringa è una struttura dati adatta rappresentare una espressione matematica...

Dici che non ti serve un parser, ma se vuoi qualcosa di più complesso di una String, mi sembra che invece sia necessario.

Ad esempio, sinx è una variabile o una funzione sin della variabile x? Se devi discriminare una cosa simile ti serve qualcosa che assomiglia molto a un parser...

Riguardo alla struttura dati adatta, credo che sia una cosa altrettanto complicata quanto studiata.. hai provato a fare qualche ricerca con google?

...

A quanto vedo Wikipedia concorda con me: http://it.wikipedia.org/wiki/Parsing

Riguardo alla struttura dati, potrebbe tornarti utile un albero. Ad ogni nodo è associata un operatore e i suoi figli (che possono essere 1 o 2) sono ancora due espressioni oppure 2 variabili. Credo.. ok.. questa era la parte banale.. la parte difficile è il parsing.. io ti posso solo augurare di trovare qualcosa di utile in wikipedia o da google.

...

Forse può tornarti utile anche questo articolo per php: espressioni matematiche in php la pratica