Hallo Mathe-Genies, ich suche eine bestimmte „quadratische“ Funktion: Es gibt zwei Parameter a und b. Sagen wir a=20000.
Fall 1: Wenn b<a gilt, dann soll ein Wert zurückgegeben werden, der sich relativ zur Entfernung von b und a schneller vergrößert. Beispiel: b=19950 => zurückgegebener Wert: 19950x1.0001 = 19952.
Fall 2: Wenn b>a gilt, dann soll ein Wert zurückgegeben werden, der mit 1.00005 multipliziert wurde. Beispiel: b=20050 => zurückgegebener Wert: 20050x1.00005 = 20051.
Wie ist der zweite „Multiplikator“ in Fall 1? Wie bestimmt man den?
public static double f(double a, double b) {
double d = (a - b) / 2.0 * 1.1;
if (d < 1.1) {
return b + 1.1;
}
return b + d;
}
for (int i = 190; i <= 200; i++) {
System.out.println(i + " " + f(200, i) + " Delta: " + (f(200, i) - i));
}
Ich hab’s… Die Lösung ist eigentlich denkbar einfach:
public static double f(double a, double b) {
if (a < b) {
return b + (b - a + 8.0) / 8.0;
}
return b + (a - b + 8.0) / 8.0;
}
for (int i = (int) (20000 * (1.0 - 0.0015)); i <= 20030; i++) {
System.out.println(i + " " + f(20000, i) + " Delta: " + (f(20000, i) - i));
}
Ich weiss nicht, wie da jemand etwas zu sagen soll. Die ganze Beschreibung ist mehr verwirrend als sonst irgendwas …
So suchst Du z.B. nach einer quadratischen Funktion? Nur da ist ja nichts quadratisch sondern da wird etwas linear ausgedrückt.
Die Methode selbst kannst Du aber auch einfach ohne if abbilden und einfach Math.abs(a-b) nehmen.
Und ich sehe daher auch nicht, dass sich der Wert bei größerem Abstand schneller verändert:
Wenn die Werte gleich sind, wird ein Delta von 1 ausgeben.
Abstand 8 → Delta von 2
Abstand 16 → Delta von 3
Abstand 24 → Delta von 4
Also klar erkennbar ist dies eine lineare Methode - mit Steigung von 8 bzw 1/8 je nachdem, was auf x und y Achse eingetragen wird.
Es kann sehr gut sein, dass dies die Methode ist, die Du haben willst / brauchst … aber ich denke, dass uns einfach zu viele Informationen fehlen um da etwas beitragen zu können.
Ich verstehe deine Antwort leider nicht genau, kannst du das nochmal auf Nicht-Chinesisch ausdrücken?
Ja ich suche eine quadratische Funktion, je nach Entfernung der beiden Parameter sollen sich beide unterschiedlich schnell annähern. Ich weiß nicht, was daran missverständlich sein könnte?
Falls du es nicht kannst, ist es auch nicht schlimm, nicht zu antworten…
Also in ganz einfachen Worten, die Du (Tobias nehme ich an, oder? Die Art und Weise kommt mir so bekannt vor…) vielleicht verstehen kannst:
Wenn Du eine quadratische Funktion suchst, dann ist Deine Lösung so schlicht falsch, da Du eine rein lineare Methode hast.
Zur Erläuterung:
Da siehst Du, wie eine quadratische Funktion aussieht (graphisch, kann man gut erkennen. Steigung bei x=0 ist 0 und die Steigung wird immer größer je größer der absolute Wert von x wird.
Und bei Deinem Link siehst Du sehr gut, dass die Funktion, die Du dort verwendest, eine lineare Funktion ist: Die graphische Darstellung entspricht zwei Linien, die von einem Punkt aus nach Rechts oben bzw. Links oben gehen.
Und da Du zu wenig Informationen gibst, was Du genau für eine Funktion für was genau suchst, kann ich Da leider nicht sagen, was Du suchst.
Wenn der Abstand quadratisch steigen soll, dann kann es ein einfaches f(a,b) = (a-b)^2 sein. Aber eine Quadratische Gleichung hat die Form ax^2 + bx + c und wenn Du x durch deine Differenz bzw. den absoluten Wert deiner Differenz ersetzt, dann kannst Du noch beliebige Werte für a, b und c annehmen.
Du hast eine Frage, ich verschwende meine Zeit um Dir zu helfen (ja, darauf läuft es derzeit hinaus) und dann kommen vor allem Angriffe von Dir. Das meinte ich mit Art und Weise.
Und ja, quadratische Funktion meint ein Polynom zweiten Grades oder eine ganzrationale Funktion zweiten Grades.
Und wenn du jetzt nach ‚Die Kurve soll anfangs quadratisch wachsen, dann linear verlaufen (langsam, stetig wachsen). Außerdem soll kein Sprung oder Knick enthalten sein.‘ suchst, dann suchst du nicht:
das, was du derzeit als Lösung hast (da kein quadratisches Wachstum und Funktion ist nicht stetig (hat ein ‚Knick‘ wie du gesagt hast)
ist nicht eine ‚Quadratische Funktion‘, denn die erfüllt ja nicht den zweiten Teil.
Aber da Alternativen zu bringen erspare ich mir, denn die Anforderungen sind noch viel zu schwammig. Diese Anforderung könnte man z.B umsetzen mit einer Methode, wie f(x)=x*x für x<= c
Und für x>c hat man dann eine Gerade welche die Steigung hat wie das x*x an dieser Stelle und f(c) ergibt bei beiden Berechnungen den gleichen Wert.
→ eine Funktion die erst quadratisch ist und ab einem Wert linear und die durchgehend definiert und stetig ist (= keine Sprünge und Knicke)
Das kann man gerne fachlich vertiefen, aber bitte konzentriere Dich dann auf die Aufgabe. Ansonsten können wir es einfach sein lassen.
Du setzt d ja immer wieder auf den berechneten Wert.
Beim ersten Durchgang ist die Differenz i - d = 19970 - 19965 = 5
Beim zweiten Durchgang ist i - d = 19971 - 19972.99556240… = -1.99556240… und damit wird von den 19971 sogar etwas abgezogen und es kommt 19970.029… raus.
Und natürlich kommt noch der Faktor hinzu, dass die Schrittweite bei i (die ist 1) geringer ist, als die Veränderung durch die Gleichung.
Und ja, jetzt hast Du eine Quadratische Gleichung - wenn Du deine Formel etwas ausklammerst, dann erhältst Du unter anderem ein i^2.
Den Off Topic Kram lasse ich ansonsten unbeantwortet da nicht zielführend.
Was ich jetzt mal annehme was er will:
Falls b<a, also Fall 1, dann soll die Konstante abhängig von der Differenz von a und b sein.
Also wenn abs(a-b) größer ist, ist auch das größer womit a multipliziert wird.
Vermute ich mal, keine Ahnung.
Die Erklärung war zu verwirrend ansonsten.