Hallo Zusammen,
ich habe ein (wahrscheinlich) recht simples Problem und komme grade nicht weiter.
Ziel soll es sein, eine Formel zusammen zu stellen, die eine bestimmte Form aufweist:
Gegeben werden a, b, c, d und xi. Die Variable x soll als String in der Formel überleben.
Eine mögliche Lösung könnte z.B. sein:
Die gegeben Variablen sind in Arrays vorhanden.
Mein Problem ist, wie bekomm ich möglichst einfach eine richtige Formel zustande, die auch ein wenig "intelligent" agiert, d.h. bei *0 einen bestimmten Teil der Formel weglässt?
Mein erster Ansatz war die Nutzung von Jep Java, eine nette Gehhilfe, die mathematische Formeln parst. Nur leider bekomm ich keine Gleichung zusammen, die mein "x" als String stehen lässt.
Hier mal mein Code:
Vielen Dank schonmal für mögliche Hilfe.
EDIT:
Fehler:
com.singularsys.jep.functions.IllegalParameterException: -: lllegal parameter x(String) parameter no 0
...
ich habe ein (wahrscheinlich) recht simples Problem und komme grade nicht weiter.
Ziel soll es sein, eine Formel zusammen zu stellen, die eine bestimmte Form aufweist:
Code:
y = (a) + (b*(x - xi)) + (c*((x - xi)^2)) + (d*((x - xi)^3))
Gegeben werden a, b, c, d und xi. Die Variable x soll als String in der Formel überleben.
Eine mögliche Lösung könnte z.B. sein:
Code:
y = 4.0 + 3.5x + 4.5(x - 2)^2 - 5.0(x + 3.5)^3
Die gegeben Variablen sind in Arrays vorhanden.
Mein Problem ist, wie bekomm ich möglichst einfach eine richtige Formel zustande, die auch ein wenig "intelligent" agiert, d.h. bei *0 einen bestimmten Teil der Formel weglässt?
Mein erster Ansatz war die Nutzung von Jep Java, eine nette Gehhilfe, die mathematische Formeln parst. Nur leider bekomm ich keine Gleichung zusammen, die mein "x" als String stehen lässt.
Hier mal mein Code:
Java:
public ArrayList<Spline> erstelleFormeln() throws JepException {
arrlSplines = new ArrayList<Spline>(n);
Jep jep = new Jep();
jep.setAllowUndeclared(true);
for (int j = 0; j <= n - 1; j++) {
Spline s = new Spline();
s.setX1(arrlPunkte.get(j).getX());
s.setX2(arrlPunkte.get(j + 1).getX());
jep.addVariable("a", arrA[j]);
jep.addVariable("b", arrB[j]);
jep.addVariable("c", arrC[j]);
jep.addVariable("d", arrD[j]);
jep.addVariable("xi", arrlPunkte.get(j).getX());
jep.addVariable("x", "x");
jep.addVariable("h2", "^2");
jep.addVariable("h3", "^3");
jep.parse("(a) + (b*(x - xi)) + (c*((x - xi) + h2)) + (d*((x - xi) + h3))");
Object evaluate = jep.evaluate();
s.setFormel(String.valueOf(evaluate));
arrlSplines.add(j, s);
}
return arrlSplines;
Vielen Dank schonmal für mögliche Hilfe.
EDIT:
Fehler:
com.singularsys.jep.functions.IllegalParameterException: -: lllegal parameter x(String) parameter no 0
...
Zuletzt bearbeitet: