Polynom n-ten gerades Lösen.



  • Hallo,
    Ich suche nach einer Möglichkeit mit einem c- Programm ein Polynom n-ten gerades zu lösen.

    gegeben ist zB. (x+4)(x-3)(x+2)

    gesucht: x^3 + 3x^2 - 10x - 24

    Ich habe leider keine Ahnung wie ich an die Sache rangehen kann, da c zum lösen solcher Probleme meines Wissens keine Funktionen zur Verfügung stellt.

    Hoffe ihr könnt mir helfen 🙂

    __________________
    greets chaos



  • Es gibt keinen allgemeinen Weg fuer n>=5, und die Formeln fuer n>=3 sind... naja, die will man nicht verwenden. Wirst Du wohl numerisch machen muessen.



  • gesucht: x^3 + 3x^2 - 10x - 24

    da gibt's nichts dran zu loesen...



  • Überleg dir in welcher Datenstruktur du ein Polynom in C darstellen könntest, z.B. ein Array. Dann solltest du vielleicht die Polynommultiplikation erstmal per Hand ausführen. Diese Schritte überträgst du dann 1:1 in C-Code.



  • hab mal was ausprobiert.
    Allerdings will das alles net so richtig klappen.

    Bei einer solchen Aufgabe gibt es ja immer Buchstaben, und die lese ich in einen string, allerdings kann man mit einem string (char) nicht rechnen.

    Was mir fehlt ist der Ansatz, wie ich an die sache rangehen kann.

    Würd mich freuen wenn mir noch jmd. helfen könnte.

    ________________
    greets chaos



  • du liest nur die koeffizienten ein, mehr nicht.



  • hi ChaosLT, wir kennen uns doch, gell?

    Erst einmal solltest du dir Gedanken darüber machen wie du den Rechen weg angehen willst, von der Lösung zum Polynom oder von dem Polynom zur Lösung, ersteres ist sicher einfacher, stellen wir uns also die Lösung for:

    x1, x2, x3 hier wie in dein Beispiel wird das ein Polynom 3ten Grades(also n = 3), da drei Lösungen gegeben sind.

    dann stellen wir es nur noch so hin:
    a0 * (x + a1) * (x + a2) * (x + a3)
    wobei du beim umstellen darauf achten musst, das du von a jeweils das Vorzeichen umkehrst(also wenn a1 = 1, dann ist es in der Klammer -1). Die a0 ist da, weil es einfach Mathematisch möglich ist.

    nun soll das Ergebnis nur noch die Form haben:

    b0 * xn + b1 * xn-1 + b2 * xn-2 + b3 * xn-3

    Jetzt schauen wir uns mal xn-3 an und sehen, dass wenn n = 3 ist, dann x^3-3 also kann das letze x schonmal weg fallen, denn x hoch null, ist null. Nun haben wir folgende Form:

    b0 * xn + b1 * xn-1 + b2 * xn-2 + b3

    wie du siehst können wir die X's ganz einfach aussrechnen, aber was ist mit b?

    b rechnest du wie folgt aus:

    b0 = a0
    b1 = a0 * (Summe von a1 bis an )
    b2 = a0 * (Summe von allen verschiedenen zweierkombinationen a1 bis an)
    bn = Summe von verschiedenen n-er Kombinationen

    und wenn du ein Polynom 4 Grades hättest, dann währe
    b3 = a0 * (Summe von verschiedenen 3-er Kombinationen) aber wir haben in diesem Beispiel ja nur ein Polynom 3ten Grades.

    Nur wie macht man daraus nun ein C Programm, mit einer Rekursiven Funktion? Oder nen Haufen verschachtelter Schleifen? Oh man, ich habe keine Ahnung... Hat jemand eine Ahnung oder einen anderen Rechenweg? Ich brauche dieses Programm nämlich auch dringend!!!



  • [quote]denn x hoch null, ist [quote]
    1.



  • SG1 schrieb:

    Es gibt keinen allgemeinen Weg fuer n>=5, und die Formeln fuer n>=3 sind... naja, die will man nicht verwenden. Wirst Du wohl numerisch machen muessen.

    lol, die Aufgabenstellung hättest Du vielleicht noch lesen sollen. Aber bei n>=5 kann man ja bei Polynomen garnix mehr machen. 🤡



  • Ach, die Aufgabenstellung war doch durch das Topic schon eindeutig beschrieben, da brauchte ich nicht weiterlesen...


Anmelden zum Antworten