Seite 1 von 1

Polynomkoeffizienten berechnen mit solve()

Verfasst: Donnerstag 25. Juli 2024, 00:30
von BrickBardo
Hallo zusammen,

ich habe folgendes Programm zu Berechnung der Koeffizieten eines Polynoms achten Grades aus markanten Punkten geschrieben:

Code: Alles auswählen

import sympy as sp

# Extrempunkte: (-6, 5), (-2, -1), (6, 5)
# Sattelpunkt: (2, 3)
# Wendepunkte: (-4, 2), (0, 1), (4, 4)
# Flachpunkt: (8, 4)

# Variablen definieren
x = sp.symbols('x')
a8, a7, a6, a5, a4, a3, a2, a1, a0 = sp.symbols('a8 a7 a6 a5 a4 a3 a2 a1 a0')

# Polynom definieren
f = a8*x**8 + a7*x**7 + a6*x**6 + a5*x**5 + a4*x**4 + a3*x**3 + a2*x**2 + a1*x + a0

# Bedingungen aufstellen
equations = [
    f.subs(x, -6) - 5,
    f.subs(x, -2) + 1,
    f.subs(x, 6) - 5,
    f.subs(x, 2) - 3,
    f.subs(x, -4) - 2,
    f.subs(x, 0) - 1,
    f.subs(x, 4) - 4,
    f.subs(x, 8) - 4,
    sp.diff(f, x, 1).subs(x, -6),
    sp.diff(f, x, 1).subs(x, -2),
    sp.diff(f, x, 1).subs(x, 6),
    sp.diff(f, x, 1).subs(x, 2),
    sp.diff(f, x, 1).subs(x, 8),
    sp.diff(f, x, 2).subs(x, 2),
    sp.diff(f, x, 2).subs(x, -4),
    sp.diff(f, x, 2).subs(x, 0),
    sp.diff(f, x, 2).subs(x, 4),
    sp.diff(f, x, 2).subs(x, 8),
    sp.diff(f, x, 3).subs(x, 8)
]

# Gleichungssystem lösen
solution = sp.solve(equations, (a8, a7, a6, a5, a4, a3, a2, a1, a0))
print(solution)
Allerdings bekomme ich nur zwei leere Klammern als Ausgabe, ein empty set. Ich verstehe leider nicht, wo dass Problem liegt. Wenn ich die f.subs weg lasse, wird eine Lösung berechnet. Ebenso, wenn ich die sp.diff weg lasse.

Re: Polynomkoeffizienten berechnen mit solve()

Verfasst: Donnerstag 25. Juli 2024, 08:23
von Sirius3
Du hast 19 Bedingungen an 9 Variablen. Warum glaubst Du, dass es dafür eine Lösung gibt?

Re: Polynomkoeffizienten berechnen mit solve()

Verfasst: Donnerstag 25. Juli 2024, 14:27
von BrickBardo
Du meinst 19 Gleichungen für 9 Unbekannte sind nicht ausreichend? Normalerweise reicht doch eine Gleichung pro Unbenannte, um eine eindeutige Lösung zu erhalten. Wenn ich nur die Ableitungen in das Gleichungssystem einfließen lasse, also 11 Gleichungen für 9 Unbekannte, so gibt solve() eine Lösung aus.

Re: Polynomkoeffizienten berechnen mit solve()

Verfasst: Donnerstag 25. Juli 2024, 16:10
von __blackjack__
@BrickBardo: Die Bedingungen können ja so sein, dass sich welche davon nicht gleichzeitig erfüllen lassen.