Come convertire un'equazione in formule per singole variabili?

.net c# expression-trees logic math

Domanda

Come convertire un'equazione in formule per singole variabili? Sto pensando ad equazioni matematiche come:

c^2 = a^2 + b^2

Mi piacerebbe avere una funzione che possa elaborare qualsiasi formula e darmi le singole formule variabili. L'equazione di cui sopra produrrebbe quanto segue:

a = (c^2 - b^2)^0.5
b = (c^2 - a^2)^0.5
c = (a^2 + b^2)^0.5

Vorrei anche iniziare con:

a = (c^2 - b^2)^0.5

e uscita:

b = (c^2 - a^2)^0.5
c = (a^2 + b^2)^0.5

Ho esaminato gli alberi di espressione, ma ho difficoltà a visualizzare come funzionerà. Vorrei una soluzione .NET (C #, VB.NET o F #). Qualche idea?

Qualcosa di simile a:

public string[] GetFormulas(string equation)
{
   ...
}

Grazie.

Risposta accettata

La risoluzione dell'equazione simbolica è un problema complesso e non esiste una soluzione chiusa per molte equazioni. Scrivere il tuo computer Algebra System non è banale, ma potresti essere in grado di scrivere un programma per equazioni semplici.

Dovrai costruire un albero di espressioni della stringa di input e definire le regole di trasformazione per manipolare l'albero delle espressioni. Per risolvere una variabile, è possibile eseguire una ricerca (guidata da una buona euristica per mantenere accettabile il tempo di esecuzione) nello spazio dell'albero delle espressioni che può essere derivato dall'albero originale da più aplicazioni delle regole di trasformazione.


Risposta popolare

Questo è un problema non banale che stai cercando di risolvere ... Non penso che avrai molta fortuna nel cercare di risolverlo da solo. È meglio trovare qualche tipo di app o libreria di terze parti che lo faccia. Esistono numerosi programmi che possono eseguire l'operazione di cui stai parlando, come Matlab e Maple. Inoltre, un calcolatore grafico TI-89 può farlo. Potresti essere in grado di ottenere gli algoritmi necessari da Octave , che è essenzialmente un'implementazione open source di Matlab.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché