Frage von RSDarki, 49

C# Mit Funktionen (f(x) = x...) rechnen?

Ich bin grade dabei ein Sekantenverfahren (Regula Falsi) Berechnungs Programm zu schreiben. Dafür soll der user 2 punkte P1(x1|y1), P2(x2|y2) eingeben und ein intervall und eine Funktionen und dann soll das Programm mit dem Sekantenverfahren eine Annährung berechnen. Jedoch weiß ich nicht wie ich die funktion mir nehmen lassen kann und dort die punkte dann einsetzte? Wie geht das?

Antwort
von PWolff, 37
float RegulaFalsi(PointF p1, PointF p2, IntervalF intervall, Func<double, double> callbackFunction) {
  ...
}
Kommentar von RSDarki ,

Wie wende ich das jetzt an wo kommt die funktion rein? also wenn ich zb f(x) = x^2 + x - 3 wie kann ich da einen punkt einsetzten?

Kommentar von PWolff ,

Bei einer Funktion? Da gibst du eine Koordinate vor; die andere wird von der Funktion berechnet.

Möglicherweise habe ich die Frage auch nicht ganz richtig verstanden - es könnte auch um die Regula-Falsi-Funktion als solche gehen und f wird hierin "hart codiert".

Aber warum soll man die Funktion nicht schon von Anfang an auslagern, wie man es in der Praxis sowieso machen wird?

double f1(double x) {
return x*x + x - 3;
}

double RegulaFalsi(double x1, double x2, double xMin, double xMax, Func<double, double> f) {
double y1 = f(x1); double y2 = f(x2);
for oder do {
// Schleife usw.; hierin:
ym = f(xm);
};
}



Kommentar von RSDarki ,

Meine frage sollte jetzt nicht explizit auf regula falsi gerichtet sein viel mehr das wenn der benutzter eine funktion in eine textbox schreibt wie ich dann mit der eingegebenen funktion rechnen kann

Kommentar von PWolff ,

Also in die andere Richtung, und viel komplizierter.

Bevor du anfängst, Ausdrücke zu parsen und über die Reflection Funktionen zusammenzubasteln, binde lieber einen Verweis auf Microsoft.JScript ein.

Dann kannst du mit Microsoft.JScript.Eval.JScriptEvaluate Funktionen in JavaScript-Syntax vergleichsweise leicht in Ausdrücke umwandeln.

Welchen Rückgabetyp diese Funktion hat, müsste ich selbst auch ausprobieren. Du könntest aber überlegen, die unabhängige Variable per System.String.Replace() vor dem Parsen zu ersetzen. (Erfordert aber sehr viele Parse-Vorgänge).

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten