Quadratische Gleichung in JAVASCRIPT ?

  • abend,
    ich versuche mich gerade damit einen rechner (nurfür) quadratische gleichungen in javascript zu schreiben, in Csharp hab ich das schon hingekriegt, in javascript komm ich aber nicht weiter,
    die idee an sich ist simpel:
    drei eingabefelder (für a b und c)
    und zwei felder in denen das ergebnis angezeigt wird nachdem man den button geklickt hat
    dazu kommt noch das es eine fehlermeldung bei einer negativen zahl unter der wurzeln braucht, und eine zweite wenn es nur ein ergebnis gibt

    würde mich über hilfe freuen

    ...nein eigentlich ist es doch anders.
    ____________________________
    Hier Könnte Ihre Werbung Stehen!

  • jup war es aber ich glaube ich habe mich ein bisschen missverständlich formuliert, also soweit das das ich geschrieben habe... allerdings stimmt was nicht weil es nicht funktioniert, das problem mit der hochzahl hab ich einfacher gelöst das werdet ihr eh sehen:

    ...nein eigentlich ist es doch anders.
    ____________________________
    Hier Könnte Ihre Werbung Stehen!

  • Salut,

    die Zeilen

    Code
    var a = a.rupert.value;
                     var b = b.rupert.value;
                     var c = c.rupert.value;


    erscheinen mir merkwürdig, das haut doch mit der DOM-Struktur vorne und hinten nicht hin. Du solltest zwei unterschiedliche Variablen nicht gleich benennen. Das Alphabet ist doch so groß und du kannst auch Wörter bilden. Versehe die Textfelder mit IDs und verwende dann GetElementByID.

    Zweitens

    Code
    document.hans.ausgabe.value ==((b/2)*(b/2)+ 4 *a *c / 2*a);


    Was du da durchführst ist ein Vergleich, keine Zuweisung (in C# würde das auch nicht so funktionieren).

    Drittens

    Code
    ((b/2)*(b/2)+ 4 *a *c / 2*a)


    Was soll dir das berechnen? Schau die Mitternachtsformel noch einmal in der Wikipedia nach. Außerdem fehlt die zweite Lösung.

    Viertens
    Du musst vorher abfragen, ob die Diskriminante negativ wird.

    Also

    Code
    <input type="Text" id="WertA" maxlength="10"> x² +
    <input type="Text" id="WertB" maxlength="10"> x
    <input type="Text" id="WertC" maxlength="10"> = 0 
    
    
    
    
    <input type="Text" id="ausgabe" maxLength="10">


    und

    Code
    var a = document.getElementById("WertA").value;
                     var b = document.getElementById("WertB").value;
                     var c = document.getElementById("WertC").value; 
                     document.getElementById("Ausgabe").value = Hausaufgabe;

    Stefan

  • ah.ha ah.ha... mitternachtsformel? *lol* diesen namen hab ich ja noch nie gehört...
    ähm ja, frage: wieso machst du das hier mit der ID anstatt mit name? wo liegt da der unterschied?
    des weiterne muss ich sagen das ich hier noch immer nicht durchblicke ehrlich gesagt, also tatsache ist das meine programmierkenntnise mehr als, ähm, begrenzt sind also blick ich noch immer nicht durch. nähere erklärung möglich?

    ...nein eigentlich ist es doch anders.
    ____________________________
    Hier Könnte Ihre Werbung Stehen!

  • ja... sry für doppelpost,
    ähm anschreibungsart für die formel ist mir schleierhaft, d.h. wo kireg ich den ausdruck für die wurzel her? und sowieso wie kann ich diese formel richtig darstellen?

    ...nein eigentlich ist es doch anders.
    ____________________________
    Hier Könnte Ihre Werbung Stehen!

  • Salut,

    ist ja nicht so, dass ich dir den Link bei Wikipedia verlinkt hätte...

    Vielleicht kennst du das auch als a-b-c Formel. Alternativ kannst du die p-q Formel verwenden.
    Mitternachtsformel heißt das übrigens, weil du die auswendig aufsagen können sollst, wenn der Mathe-Lehrer dich nachts um 12 anruft...

    Aber eine Referenz für Javascript hast du schon, oder programmierst du einfach wild drauf los? SelfHTML könnte dir da weiterhelfen, besonders der Abschnitt zum Math object.

    Code
    var Diskr = b*b - 4*a*c;
    if(Diskr >= 0)
    {
      var x1 = (-b + Math.sqrt(Diskr)) / (2*a);
      var x2 = (-b - Math.sqrt(Diskr)) / (2*a);
    }
    else
    {
      // Fehler
    }


    (habe ich jetzt nicht getestet, Tippfehler passieren auch mir)

    Du kannst auch name statt id verwenden, bloß solltest du dann richtig auf die Elemente über die DOM-Struktur zugreifen...


    Stefan

  • okay ich werde mich bessern (die mitternachtsformel werd ich meiner mathe lehrerin erzählen das wird sie sicherlich amüsieren :lol: )
    ähm nun ja ehrlich gesagt sind meine javascrpit interssen eher inrichtung mailto formulare und gästebuch formluare mit php und solche "kommunikativen" sachen, leider MUSS ich auch sowas können und najahh deshalb dachte ich ich poste besser hier... danke ich werd mir die formel zu gemüte füren,....

  • also in C# sieht das ganze so aus (und funktioniert auch):


    Jetz muss man (oder ich) halt noch die ´geschichte mit dem parse ändern aber das ist in einem vorigen post schon angegeben gewesen, die formel an sich bleibt ja gleich und das if und else bleibt gleich, bloss was mache ich mit dem ToString befehl der gehört doch in java script anders?

    ...nein eigentlich ist es doch anders.
    ____________________________
    Hier Könnte Ihre Werbung Stehen!

  • so, ich hab nun das ganze soweit umformuliert das es in java script funktionieren sollte phase5.3 sagt mir allerdings immerdas in zeile15 eine klammer fehlt, also in der zeile in der function.ka() steht, was mir auch noch nicht ganz logisch erscheint ist der befehl document.getElementByName("hans").value = Hausaufgabe;
    ich versteh nicht ganz was damit geholt wird sondern habe es nur dankbar von VBtricks übernommen, was ich auch noch nicht weiß: gibt es die try and catch funktion auch in javascript?
    danke für eure hilfe

    ...nein eigentlich ist es doch anders.
    ____________________________
    Hier Könnte Ihre Werbung Stehen!

  • Salut,

    Compilier- und Laufzeitfehler bekommst du bei deiner C# Version nicht, aber die Zeile

    Code
    double x1 = -b + (Math.Sqrt(Math.Pow(b, 2) - 4 * a * c)) / (2 * a);


    ist falsch, richtig wäre

    Code
    double x1 = (-b + Math.Sqrt(Math.Pow(b, 2) - 4 * a * c)) / (2 * a);


    (die anderen Zeilen natürlich analog).

    Aber nun zur JS-Version:
    Du hast anscheinend keinen Blick in die verlinkte SelfHTML-Hilfe geworfen, sonst hättest du gesehen, dass es getElementByName nicht gibt, und schon gar nicht als Methode einer Forms-Variable.

    Und was machst du in dieser Zeile? "+=", willst du das wirklich anhängen?

    Code
    document.hans.x1.value += x1;

    Noch schlimmer ist dann noch die zweite Zeile hierin:

    Code
    document.hans.x1.value += x1;
                    document.hans.x2.Text("keine zweite Lösung");


    oben setzt du den Inhalt, indem du die value-Eigenschaft setzt, darunter möchtest du dann eine Text-Methode aufrufen?

    Naja, ich habe dir das jetzt entsprechend modifiziert:


    Dabei habe ich sogar alle Fälle behandelt, die auftreten können.

    Für nächste Postings rate ich dir aber an, dich vorher eingehender mit der Materie zu beschäftigen und den Beantwortenden deiner Frage mit einem gewissen Lerneffekt zu erfreuen, schließlich will man ja das Gefühl haben, jemandem geholfen zu haben und nicht nur die Hausaufgabe fertig schön geschrieben zu haben...

    Hilfreich für weiter JS-Versuche könnte auch die FireBug-Erweiterung für den Firefox sein.


    Stefan

  • ah sehr gut, nun ja von wegen in-die-materie-vertiefen, nun ja java script ist in diesem bereich nicht so meines (ich bin in "mathematischem" nicht gerade eine eins) das problem ist ähm nun ja, nächsten montag habe ich abitur, und ja, die quadratische gleichung in JS könnte da ein beispiel sein daher mein plötzliches interesse!
    muss das ganze natürlich noch besprechen aber vielen dank für deine hilfe, danke.

    ...nein eigentlich ist es doch anders.
    ____________________________
    Hier Könnte Ihre Werbung Stehen!

  • Informatik Abitur das ist schon was ähm, spezielles xD und in Österreich...

    ...nein eigentlich ist es doch anders.
    ____________________________
    Hier Könnte Ihre Werbung Stehen!

  • hey
    ich schreibe nächste woche eine Arbeit über quadratische Funktionen und parabeln und so etwas - jetzt komm ich bei einer aufgabe nicht weiter... kann mir vllt jemand helfen?


    y=x²+2x-3
    Berechne die Nullstellen, den Schnittpunt des
    Graphen mit der y-achse und den scheitelpunkt der Parabel.

    Wie berechene ich diese 3 Punkte?

    Gruß Joana

  • Salut,

    was hat das mit programmieren zu tun?

    Für sowas haben wir eigentlich ein Hausaufgabenforum...

    Aber sei's drum:
    1. Nullstellen: 0 = x^2 + 2x - 3
    Das kannst du durch raten (einsetzen zum Beweis), mit der Mitternachtsformel oder der p-q-Formel lösen. Verdächtige Lösungen sind immer 1, -1, 0, 2 oder -2. (Das hilft später auch bei Polynomdivision, aber das kommt vermutlich noch).

    2. Schnittpunkte mit der y-Achse.
    Durch was zeichnen sich die Punkte auf der y-Achse aus? Ihre x-Koordinate ist immer 0. Also haben wir in obiger Gleichung schon den x-Wert, bietet sich also an, den verbleibenden y-Wert auszurechnen, -3 in diesem Fall.

    3. Scheitelpunkt
    Da bietet sich quadratische Ergänzung an, also Zerlegung in die Linearfaktoren y=x^2+2x-3 = (x-1)(x+3) (da hab ich dir auch schon die beiden Lösungen für 1 verraten...). Folglich sollte der Sattelpunkt zwischen den beiden Nullstellen liegen, x-Koordinate also 1. y-Koordinate kannst du selbst ausrechnen.

    Eigentlich hätte ich ja zumindest einen Ansatz von dir erwartet, schließlich werdet ihr ja keine Arbeit über ein Thema schreiben, dass ihr nie behandelt habt?


    Stefan