Michael G.: Berechnung von Variablen

Hallo,

Ich bräuchte eine Ratschlag, wie man am elegantesten in Javascript Berechnungsformeln hinterlegt. Der Sachverhalt ist wie folgt:

Es gibt eine Anzahl an Variablen, die untereinander mathematische Beziehungen aufweisen. Als Input liegen aber nicht die Werte für aller Variablen vor. Eine Funktion soll nun versuchen, so viele wie möglich Variablen durch hinterlegte Berechnungsformeln zu berechnen. Problem dabei, dass nicht immer die gleichen Variablen einen Inputwert aufweisen. Kleines Beispiel:

InputArray:
[a,b,c,d,e,f,g,h,i]
Berechnungsformeln:
a = b + c
a = d - g
b = e - h
c = f - i
d = e + f
g = h + i

Wie sollte man nun in Javascript eine Funktion schreiben, die iterativ die Berechnungen durchläuft bis alle berechenbaren Werte ermittelt wurden. Je nach Input verbleiben einige Variablen unbekannt. Zum Beispiel:

function ermittleWerte(InputArray){
  /*
  ?
  */
  return OutputArr
}

var OutputArray = ermittleWert([null,2,3,null,8,null,null,null,null]);

OutputArray sollte dann entsprechen: [5,2,3,null,8,null,null,6,null]

Wie schreibt man einen solchen Berechnungscode, wenn man davon ausgeht, dass nicht immer die gleichen Variablen einen Inputwert haben und die Berechnung auch iterativ sein muss und erst dann endet, wenn alle berechenbaren Werte berechnet wurden?

Sehr dankbar fuer Hinweise,
Michael K.

  1. Wenn man weiß, wie das Problem heißt, kann man danach suchen.

    https://encrypted.google.com/search?q=symbolic+math+javascript

  2. hi,

    relativ einfach gesprochen.
    1. bau eine schleife die solange läuft wie eine variable true ist.
    2. in der schleife setze die variable erst mal false
    3. prüfe für jede zu errechnende Variable ob alle sie nicht bereits gesetzt ist und ob alle benötigten Werte vorhanden sind
    4. wenn 3. passt dann errechne die variable und setze die variable der schleife wieder auf true (z.b. $operation)

    Am Ende bleiben dann die Variablen leer, die eben nicht berechnet werden konnten, da irgendwas gefehlt hat.

    Mit Funktionen und OOP geht das sicher auch relativ schlank =P

    Gruß Niklas

    --
    Man muss nicht alles wissen, man sollte aber wissen, wo das nicht gewusste zu finden ist.