Hilfe Nullstellen
-
Ist das ganze überhaupt ein mathematisches oder ein programmiertechnisches Problem?
Ich weiß auch nicht, was der algorithmus da oben jetzt soll, wenn man das ganze einfach in eine Formel einsetzen kann.
Ich habe gerade mal die allgemeine Form einer Ganzrationalen Funktion 2. Grades (ax^2+bx+c) nach x umgeformt und dann hast du doch deine gewünschte Lösung.Ich habs mit Quadratischer Ergänzung gemacht, ich weiß nicht warum, aber ich finde die Methode besser (bzw habe ich mich wohl eher daran gewöhnt) und ich bekomme eine Formel für x:
x=-(b/2*a) +- sqrt((b^2 + 4*a*c) / 4*a^2)
Tut mir leid, ich weiß nicht, wie ich das besser aussehen lassen kann. Das +- meint natürlich, dass du für Nullstelle eins ein Pluszeichen eingesetzt und für Nullstelle 2 ein Minuszeichen eingesetzt werden muss.
Um vorher zu prüfen, ob sich die Gleichung überhaupt lösen lässt, würde ich folgenden Ausdruck prüfen:
(b^2 + 4*a*c) / 4*a^2
Ist der Ausdruck negativ, gibt es keine Nullstellen.
Ist der Ausdruck gleich 0 gibt es genau eine Nullstelle.
Ist der Ausdruck größer 0, gibt es zwei Nullstellen.Achja: Gesetzt dem Fall, es gibt nur eine Nullstelle ist diese:
x = - b / (2*a)
Lg,
SALOMON
-
also, was eine pq formel ist weiß ich nur was das mitternachts dabei sollte nicht.
es geht mir nicht darum den algorithmus zu optimieren, sondern den fehler zu finden.
weil es war halt strikt so vorgegeben. die nullstelle sollte halt anhand dem vorzeichen wechsel erkannt werden. das in dem programm die dritte komponente der funktion fehlt ist mir auch bewusst. dass heisst die ist gleich null.die theorie hinter dem vorzeichen wechsel ist halt der dass halt wenn x1 und x2 beide positiv ist, ist keine nullstelle gewesen. wenn wenn beide negativ auch nicht. wenn jedoch der wechselt war eine nullstelle. von daher multiplizieren denn ++ = + und -- = + und beim wechsel +*- = - !!! also strikt mit wertetabelle.
fragt mich nicht nach warums ausgerechnet so sein soll...
ich sag mal ich als wirtschaftsinformatiker bekomme auch einen zu viel wenn ich höre dass der professor meiner freundin unter linux seine compilierten programme alle .exe benennt und hinterher einen chmod macht um sich selbst die vorhandenen rechte erneut zu geben... naja ich hoffe uns kann jemand weiter helfen.
-
ibaxx schrieb:
also, was eine pq formel ist weiß ich nur was das mitternachts dabei sollte nicht.
Mitternachtsformel ist ein anderer Name für die gleiche / eine ähnliche Formel.
es geht mir nicht darum den algorithmus zu optimieren, sondern den fehler zu finden.
Deine Fehler hab ich im ersten Absatz meiner ersten Antwort aufgezählt.
-
Servus,
ein frohes neues Jahr
Es hat nichts mit der Lösung deines Problem zu tun, aber auf welche UNI geht deine Freundin denn. Ich kann mir nicht vorstellen, dass Leute auf einer Hochschule keine Nullstellen von Polynome berechnen können.
Aber vielleicht ist das außerhalbs Bayern soDer Grund für die Namensgebung "Mitternachtsformel" ist, dass man diese Formel zu jeder Tages- und Nachtzeit aufschreiben können muss
Aber das sollte man als Informatiker wissen.
Zudem bezweifle ich die Idee mit der Wertetabelle und dem Vorzeichen. Man kann nämlich nicht feststellen, ob eine, zwei, ... Nullstelle(n) vorliegen. Außerdem glaub ich kaum das sich der Prof. mit quadratischen Polynomen zufrieden zu stellen ist. Es wird eher in Richtung x^n gehen
So, wie schreibe ich jetzt ein Programm hierfür? Am besten du redest noch einmal mit deiner Freundin und lasst dir die Aufgabenstellung noch mal genauer erklären und gehst Punkt für Punkt mit ihr durch. Danach kannst du dich noch mal melden
Ansonsten drückst du deiner Freundin einen Bleistift in die Hand und schreibst mit ihr die Lösung in Schriftform (wie bei eine MatheTest, ach die gute Schulzeit seufz) auf. Danach könnt ihr denn Rechner einschalten und die schriftliche Lösung 1:1 in Codeform übertragen. Viel SpaßGruß,
Thomas
-
Am besten du redest noch einmal mit deiner Freundin und lasst dir die Aufgabenstellung noch mal genauer erklären und gehst Punkt für Punkt mit ihr durch. Danach kannst du dich noch mal melden
Ansonsten drückst du deiner Freundin einen Bleistift in die Hand und schreibst mit ihr die Lösung in Schriftform (wie bei eine MatheTest, ach die gute Schulzeit seufz) auf. Danach könnt ihr denn Rechner einschalten und die schriftliche Lösung 1:1 in Codeform übertragen.also nochmal:
sie hat den weg so vorgeschrieben bekommen.
Deine Fehler hab ich im ersten Absatz meiner ersten Antwort aufgezählt.
na wenn du den fehler in der formel gefunden hast, warum sagst du mir nicht was da falsch ist?
-
Servus,
also, nehmen wir mal das Polyn. für eine quadratische Gleichung:
f(x) = a * x^2 + b * x + cNullstellen ermitteln: f(x) = 0
Deswegen heißen sie auch Nullstellen. Bei a=1, b=0 und c=0 besitzt die Funktion z.B. eine doppelte Nullstelle ohne dass sich das Vorzeichen geändert hatHast du alle Nullstellen ermittelt musst du noch angeben, ob es sich um eine einfache oder doppelte Nullstelle handelt.
Tipp: Eine Vorzeichenänderung kann an den Punkten von f'(x) = 0 vorkommen, aber dies ist keine muss Bedingung.
Nachdem kannst du ja noch eine Wertetabelle anfertigen und ausgeben lassen. Damit dürfte der Prof. zufrieden sein. Denn die Nullstellenermitllung auf rein numerischen Wegen ist nicht so einfach, besonders wenn man mit Fließkommazahlen arbeiten muss. Hierzu ein kleines Beispiel:
Nehmen wir mal an wir die Funktion f(x) hat eine Nullstelle bei x=4,84734. Wie ermittle ich diese mit einen Alg. der nur eine Schrittweite von deltaX=0,1 kennt? Ich brauche also eine Alg. der eine erste Schrittweite von deltaXone= fSchritt(a, b, c). Nun benötigen wir eine guten Startpunkt x0=0. Jetzt können wir von diesem nach links und rechts gehen bis wir eine Nullstelle an der Stelle x1 vermuten. Diese Grenzen wir durch die Verkleinerung der Schrittweite weiter ein. Hier musst du darauf achten, dass du mit der Schrittweite nicht die Genauigkeitsgrenze von float unterschreitest. Achja, eine Anpassung der Zahlen wäre nach x Rechenschritten auch nicht schlecht. ...Und so weiter. Aber bevor du das Rad neu erfindest solltest du dir vielleicht mal die numerischen Lösungswegen von den großen Köpfen betrachten. Stichwörter wären hierzu das Tangentenverfahren von Isaac Newton oder die Regula Falis.
ibaxx schrieb:
na wenn du den fehler in der formel gefunden hast, warum sagst du mir nicht was da falsch ist?
Das hat er doch schon längst.
- Bei deinem Beispiel ließt du nur a und b ein. Wo ist c geblieben ?
- Die Berechnung ist absolute Schwachsinig und zeugt von keiner großartigen Erfahrung. z.B.float f = 1.0 if(f == 1) { // dumm, dümmer, ... ;) }
Gruß,
Thomas
-
Siassei schrieb:
- Bei deinem Beispiel ließt du nur a und b ein. Wo ist c geblieben ?
wenn kein c angegeben ist c = 0
also formel a*x*x+b*x+0
da ist doch kein problem
-
ibaxx schrieb:
also formel a*x*x+b*x+0
Dann solltest Du das auch so ausrechnen.
-
Eine Vorzeichenänderung kann an den Punkten von f'(x) = 0
So wie beim Sinus.
Oder bei x*x+1.
Es gibt ganz allgeimein überabzählbar viele völlig sinnlose
"Nicht-Muss-Bestimmungen".
Ich würde eher sagen:Eine Vorzeichenänderung kann an Punkten vorkommen, wo f(x) = 0.
-
flamer schrieb:
Es gibt ganz allgeimein überabzählbar viele völlig sinnlose "Nicht-Muss-Bestimmungen".
ist dazu notwendig, daß du unendlich lange "Nicht-Muss-Bestimmungen" zuläßt?
-
ist dazu notwendig, daß du unendlich lange "Nicht-Muss-Bestimmungen" zuläßt?
Gute Frage...
Bin am Grübeln.
-
ibaxx schrieb:
Siassei schrieb:
- Bei deinem Beispiel ließt du nur a und b ein. Wo ist c geblieben ?
wenn kein c angegeben ist c = 0
also formel a*x*x+b*x+0
da ist doch kein problem
Natürlich nicht. Man sollte es zumindestens Dokumentieren. Da ich in deiner Abfrage auch eine 0 eingeben kann
flamer schrieb:
Eine Vorzeichenänderung kann an Punkten vorkommen, wo f(x) = 0.
Natürlich. Ich wollte mit meiner Aussage (die mehr als schlecht ist) auf die Steigung hinweisen und Ibaxx einen neuen denkanstos geben. Mir erscheint, dass ibaxx an keiner Hilfestellung interessiert ist. Er möchte wahrscheinlich, dass wir die Lösung hier veröffentlichen.
-
was mich irritiert:
habe mit ihr zusammen einen algorithmus entwickelt
ich dachte, der wäre vorgegeben?
du versuchst hier übrigens sowas wie das bisektionsverfahren zu machen. das ist aber für mehr als eine nullstelle im zu untersuchenden bereich ungeeignet.
http://de.wikipedia.org/wiki/Bisektion#Kontinuierlicher_Fall
-
volkard schrieb:
ist dazu notwendig, daß du unendlich lange "Nicht-Muss-Bestimmungen" zuläßt?
Ich befürchte schon.
-
Einen hab ich noch:
Tipp: Eine Vorzeichenänderung kann an den Punkten von f'(x) + C = 0 vorkommen, dies ist eine muss Bedingung.