Frage

sortierte Matrix Math benutzen, habe ich ein System von Gleichungen in Koeffizienten für ein Polynom vom Grad ergeben, gelöst ‚n‘

Ax^(n-1) + Bx^(n-2) + ... + Z

I evaulate dann das Polynom über einen x-Bereich gegeben, im Wesentlichen die Polynomkennlinie ich mache. Hier ist der Haken. Ich habe diese Arbeit in einem getan System koordiniert wir „Datenraum“ nennen. Jetzt muss ich die gleiche Kurve in einem anderen Koordinatenraum präsentieren. Es ist leicht, Eingabe / Ausgabe zu und von den Koordinatenräume, aber der Endbenutzer interessiert sich nur für den Koeffizienten [A, B, ...., Z] zu transformieren, da sie das Polynom auf ihre eigenen rekonstruieren können. Wie kann ich darstellen, einen zweiten Satz von Koeffizienten, [A ‚B‘, ...., Z '], die die gleichen förmige Kurve in einem anderen Koordinatensystem dar.

Wenn es hilft, ich arbeite im 2D-Raum. Plain Old x und y ist. Ich fühle mich auch so die Koeffizienten durch eine Transformationsmatrix multipliziert beinhalten kann? Wäre es die Skala / Translationsfaktor zwischen den Koordinatensystemen einige integrieren? Wäre es das Inverse dieser Matrix sein? Ich fühle mich wie ich in der richtigen Richtung bin ...

Update: Koordinatensysteme sind linear aufeinander bezogen. Hätte man nützliche Informationen wie?

War es hilfreich?

Lösung

Die Problemstellung ist etwas unklar, so zuerst werde ich meine eigene Interpretation davon verdeutlichen:

Sie haben eine Polynomfunktion

f (x) = C n x n + C n-1 x n-1 + ... + C 0

[I geändert A, B, ... Z in C n , C n-1 , ..., C 0 um leichter unten mit der linearen Algebra zu arbeiten.]

Dann haben Sie auch eine Transformation wie zum Beispiel: z = ax + b , die Sie verwenden möchten Koeffizienten zu finden für die gleichen Polynom, aber in Bezug auf z :

f (z) = D n z n + D n-1 z n-1 + ... + D 0

Das kann ziemlich leicht mit einigen der linearen Algebra durchgeführt werden. Insbesondere können Sie eine (n + 1) x (n + 1) Matrix T definieren, die uns die Matrixmultiplikation

tun können

d = T * c ,

, wobei d ist ein Spaltenvektor mit Topeinwurf D 0 , zum letzten Eintrag D n , Spaltenvektor c für den C i Koeffizienten und Matrix T hat ( i, j) -te [i th Reihe, j th Spalte] Eintrag t ij gegeben durch

t ij = ( j wählen i ) a i b ji .

Wo ( j wählen i ) der Binomialkoeffizient ist, und = 0, wenn i > j . Auch im Gegensatz zu Standard-Matrizen, ich denke, dass ich, j jeden Bereich von 0 bis n (in der Regel beginnen Sie bei 1).

Dies ist im Grunde eine schöne Möglichkeit, den Ausbau und die erneute Komprimierung des Polynoms zu schreiben, wenn Sie in z = ax + b mit der Hand stecken und verwenden Sie das Binomialsatz .

Andere Tipps

Tyler Antwort ist die richtige Antwort, wenn Sie diese Änderung der Variablen z = ax berechnen haben + b oft (ich meine für viele verschiedene Polynome). Auf der anderen Seite, wenn Sie es nur einmal zu tun haben, ist es viel schneller, um die Berechnung der Koeffizienten der Matrix mit der abschließenden Bewertung zu kombinieren. Der beste Weg, es zu tun ist, um symbolisch Ihr Polynom an einem Punkt zu bewerten (ax + b) durch Horner-Schema:

  • Speichern Sie die Polynomkoeffizienten in einem Vektor V (am Anfang, alle Koeffizienten Null sind), und für i = n 0, Sie multiplizieren sie mit (ax + b) und C add i .
  • Hinzufügen von C i bedeutet es zum konstanten Term Hinzufügen
  • durch Multiplikation (ax + b) bedeutet, dass alle Koeffizienten durch b in einen Vektor Multiplikation K 1 , werden alle Koeffizienten durch eine Multiplikation und sie weg von dem konstanten Term in einen Vektor K Verschiebung 2 und setzen K 1 + K 2 zurück in V.

Das wird einfacher zu programmieren, und schneller zu berechnen.

Beachten Sie, dass y in w = cy + d zu ändern ist wirklich einfach. Schließlich wird, wie mattiast weist darauf hin, eine allgemeine Veränderung der Koordinaten werden Sie nicht ein Polynom geben.

Technischer Hinweis : Wenn Sie noch Matrix wollen T berechnen (wie durch Tyler definiert ist), können Sie es durch die Verwendung einer gewichteten Version des Pascalschen Regel berechnen sollte (das ist, was die Hörner Berechnung tut implizit) :

t i, j = b t i, j-1 + a t i-1, j-1

Auf diese Weise Sie berechnen es einfach, Spalte für Spalte von links nach rechts.

Wenn ich Ihre Frage richtig verstanden hat, gibt es keine Garantie, dass die Funktion Polynom bleiben wird, nachdem Sie Koordinaten ändern. Beispielsweise y = x ^ 2, und das neue Koordinatensystem x '= y, y' = x lassen. Nun wird die Gleichung y '= sqrt (x'), die nicht Polynom ist.

Sie haben die Gleichung:

y = Ax^(n-1) + Bx^(n-2) + ... + Z

In xy Raum, und Sie wollen es in einigen x'y‘Raum. Was Sie brauchen, ist Transformationsfunktionen f (x) = x 'und g (y) = y' (oder h (x) = x und j (y ') = y). Im ersten Fall müssen Sie für x lösen und für y zu lösen. Sobald Sie x und y haben, können Sie diese Ergebnisse in die ursprüngliche Gleichung und lösen für y‘.

Ob dies ist trivial, hängt von der Komplexität der Funktionen von einem Raum zum anderen zu transformieren. Zum Beispiel Gleichungen wie:

5x = x' and 10y = y'

sind extrem einfach für das Ergebnis zu lösen

y' = 2Ax'^(n-1) + 2Bx'^(n-2) + ... + 10Z

Wenn die Eingangsräume sind linear aufeinander bezogen, dann ja, sollte eine Matrix der Lage sein, einen Satz von Koeffizienten in einen anderen zu transformieren. Zum Beispiel, wenn Sie Ihr Polynom in Ihrem "Original" x-Raum haben:

ax ^ 3 + bx + cx ^ 2 + d

und man wollte in einen anderen w-Raum zu transformieren, wobei w = px + q

dann wollen Sie ein 'b', c 'zu finden, und d', so dass

ax ^ 3 + bx + cx ^ 2 + d = a'w ^ 3 + b'w ^ 2 + c'w + d '

und mit etwas Algebra,

a'w ^ 3 + b'w ^ 2 + c'w + d‘= A'p ^ 3x ^ 3 + 3a'p 2qx ^ ^ 2 + 2x + ^ 3a'pq a'q ^ 3 + b'p ^ 2x ^ 2 + 2b'pqx + b'q ^ 2 + c'px + c'q + d '

also

a = A'p ^ 3

b = 3a'p ^ 2Q + b'p ^ 2

c = 3a'pq ^ 2 + 2b'pq + C'P

= d ^ 3 + a'q b'q ^ 2 + c'q + d '

, die als Matrix Problem und gelöst neu geschrieben werden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top