2008-09-26 6 views
6

Mit sortierten Matrix Math, ich habe resultierende für ein Polynom vom Grad in Koeffizienten ein Gleichungssystem gelöst ‚n‘Wie kann ein Polynom in ein anderes Koordinatensystem transformiert werden?

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

ich dann das Polynom über einen gegebenen x-Bereich evaulate, ich bin Rendering im Wesentlichen der Polynomkurve. Jetzt ist hier der Haken. Ich habe diese Arbeit in einem Koordinatensystem getan, das wir "Datenraum" nennen. Jetzt muss ich die gleiche Kurve in einem anderen Koordinatenraum präsentieren. Es ist leicht, Eingabe/Ausgabe in und aus den Koordinatenräumen zu transformieren, aber der Endbenutzer interessiert sich nur für die Koeffizienten [A, B, ..., Z], da sie das Polynom selbst rekonstruieren können. Wie kann ich einen zweiten Satz von Koeffizienten [A ', B', ..., Z '] darstellen, die die gleiche Kurve in einem anderen Koordinatensystem darstellen?

Wenn es hilft, arbeite ich in 2D-Raum. Plain alte x's und y's. Ich denke auch, dass dies die Multiplikation der Koeffizienten mit einer Transformationsmatrix beinhalten könnte? Würde es den Maßstab/Übersetzungsfaktor zwischen den Koordinatensystemen enthalten? Wäre es das Gegenteil dieser Matrix? Ich fühle mich wie ich bin in die richtige Richtung ...

Update: Koordinatensysteme sind linear verwandt. Wäre nützlich gewesen, wie?

+0

Sind die eingegebenen Koordinatenräume linear miteinander verknüpft? – Jamie

+0

Koordinatensysteme sind linear verwandt – basszero

Antwort

4

Die Problemstellung ist etwas unklar, so zuerst werde ich meine eigene Interpretation davon klären:

Sie haben eine Polynomfunktion

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

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

Dann Sie hat eine Transformation wie:   z = ax + b  , die Sie verwenden möchten, finden Koeffizienten für das gleiche Polynom, aber in Bezug auf z:

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

Dieser ziemlich leicht mit einigen der linearen Algebra getan werden kann.Insbesondere kann man eine (n + 1) × (n + 1) -Matrix T definieren, die uns die Matrixmultiplikation

  d = T * c, zu tun erlaubt

wo d ein Spaltenvektor mit Topeinwurf ist D, zum letzten Eintrag D n, Spaltenvektor c für die C i Koeffizienten ähnlich ist, und die Matrix T hat (i, j) -te [i th Reihe, j-ten column] Eintrag t ij gegeben durch

  t ij = (j wählen i) ein ib j-i.

Wo (ji wählen) ist der Binomialkoeffizient und = 0, wenn i>j. Im Gegensatz zu Standardmatrizen denke ich, dass i, j jeweils von 0 bis n reichen (normalerweise beginnt man bei 1).

Dies ist im Grunde eine gute Möglichkeit, die Erweiterung und die erneute Komprimierung des Polynoms zu schreiben, wenn Sie z = ax + b von Hand einstecken und die binomial theorem verwenden.

+1

Siehe meine Antwort für eine schnelle Art der Berechnung dieser Matrix T. – Camille

+0

Hallo Tyler. Ich habe deine Formel nicht zur Arbeit gebracht, also habe ich sie von Grund auf neu abgeleitet. Ich bekomme ** _ t ij = (j wähle i) a^(- j) * (-b)^(j-i) _ **. Ich habe sowohl Ihre als auch meine mit einer einfachen linearen Gleichung getestet. Vielleicht könnten Sie Ihre Antwort zum Wohle anderer aktualisieren? Oder habe ich vielleicht etwas verpasst? ... Entschuldigung, der Mini-Markdown ist ein bisschen hässlich. – Floris

+0

Hallo Tyler. Gerade getestet mit quadratischem Polynom. Die gleiche Geschichte. – Floris

0

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, sind Transformationsfunktionen f (x) = x 'und g (y) = y' (oder h (x ') = x und j (y') = y). Im ersten Fall müssen Sie nach x auflösen und nach y auflösen. Sobald Sie x und y haben, können Sie diese Ergebnisse in Ihre ursprüngliche Gleichung einsetzen und nach y 'auflösen.

Ob dies trivial ist oder nicht, hängt von der Komplexität der Funktionen ab, die zur Transformation von einem Raum in einen anderen verwendet werden. Zum Beispiel der 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 
-1

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

ax^3 + bx^2 + cx + 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^2 + cx + 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 + 3a'pq^2x + a'q^3 + b' p^2x^2 + 2b'pqx + b'q^2 + c'px + c'q + d '

daher

a = A'p^3

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

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

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

, die als ein Matrixproblem neu geschrieben werden kann und s olved.

+0

Kein Kommentar? Ist das nicht korrekt? – Jamie

2

Wenn ich Ihre Frage richtig verstanden habe, gibt es keine Garantie, dass die Funktion nach dem Ändern der Koordinaten ein Polynom bleibt. Zum Beispiel sei y = x^2 und das neue Koordinatensystem x '= y, y' = x. Jetzt wird die Gleichung y '= sqrt (x'), was kein Polynom ist.

3

Tylers Antwort ist die richtige Antwort, wenn Sie diese Änderung der Variablen z = ax + b viele Male berechnen müssen (ich meine für viele verschiedene Polynome). Auf der anderen Seite, wenn Sie es nur einmal tun müssen, ist es viel schneller, die Berechnung der Koeffizienten der Matrix mit der endgültigen Auswertung zu kombinieren. Der beste Weg, es zu tun ist, um symbolisch Ihr Polynom an einem Punkt (ax + b) durch Horner-Methode zu bewerten:

  • Sie speichern die Polynomkoeffizienten in einem Vektor V (am Anfang, alle Koeffizienten Null sind), und Für i = n bis 0 multiplizierst du es mit (ax + b) und fügst C i hinzu.
  • Zugabe von C i Mittel es dem konstanten Term Zugabe
  • Multiplikation von (ax + b) bedeutet, Multiplizieren aller Koeffizienten durch b in einen Vektor K , alle Koeffizienten, die durch eine Multiplikation und Verschiebung um sie von den entfernt konstanter Term in einen Vektor K , und setzen K + K zurück in V.

Dies wird einfacher zu programmieren und schneller zu berechnen sein.

Beachten Sie, dass das Ändern von y in w = cy + d wirklich einfach ist. Schließlich, wie Mattiast hervorhebt, wird eine allgemeine Änderung der Koordinaten Ihnen kein Polynom geben.

Technische Anmerkung: 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 = bt i, j-1 + bei i-1, j-1

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