WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Frage zum Befehl unmkpp (und Splineinterpolation)

 

JayvH
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 19.03.11
Wohnort: Hannover
Version: ---
     Beitrag Verfasst am: 11.09.2011, 20:33     Titel: Frage zum Befehl unmkpp (und Splineinterpolation)
  Antworten mit Zitat      
Hallo,

ich habe da mal zwei Verständnisfragen zum Befehl unmkpp. Wenn ich die MATLAB-Hilfe richtig verstehe, dann würde ich dort zunächst ein Polynom 2. Grades in der Form - \frac{1}{4} \cdot x^{2} + xaufbauen und mir dann durch unmkpp dieses wieder ausgeben lassen.
Code:
pp = mkpp([-8 -4],[-1/4 1 0]);
[breaks,coefs,l,k,d] = unmkpp(pp)

breaks =
    -8    -4

coefs =
   -0.2500    1.0000         0

l =
     1

k =
     3

d =
     1

k wäre die order des Polynoms. Ist das mit dem Grad eines Polynoms gleichzusetzen? Denn schließlich ist eine Funktion, deren höchste Potenz ² ist doch 2. Grades während wir hier k=3 haben.

Zudem habe ich mir mal die Funktionf(x) = 3 \cdot x^{2} +2 \cdot x^{2} +1 per mkpp aufgebaut und dann eine kubische Splineinterpolation über die y-Werte für die x-Werte 1, 2 und 3 gemacht. Hier erhielt dann als Ergebnis von unmkpp
Code:
>> pp = spline([1 2 3],[6 17 34]);
>> [breaks,coefs,l,k,d] = unmkpp(pp)

breaks =

     1     3


coefs =

     3     8     6


l =

     1


k =

     3


d =

     1

Das Ergebnis ist doch jetzt kein Polynom in der Form f(x) = 3\cdot x^{2}+ 8 \cdot x + 6, oder? Das läge ja komplett daneben und der Spline interpoliert ja kubisch, aber wie sind die Koeffizienten dann zu verstehen
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.09.2011, 20:48     Titel:
  Antworten mit Zitat      
Hallo,

aus der Doc von mkpp:
The order of a polynomial tells you the number of coefficients used in its description.
Das ist also nicht der Grad des Polynoms. Grad wäre degree.

Die Koeffizienten sind auf Potenzen von (x - x0), hier x0 = 1, bezogen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JayvH
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 19.03.11
Wohnort: Hannover
Version: ---
     Beitrag Verfasst am: 11.09.2011, 20:56     Titel:
  Antworten mit Zitat      
OK, damit hätte sich das ja schon einmal geklärt, vielen Dank.

Jetzt müßte sich das nur mit dem Spline klären.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.09.2011, 21:01     Titel:
  Antworten mit Zitat      
Hallo,

zwei Fragen, zwei Antworten. Wo gibts da noch was, das sich klären müsste?

Wenn die Daten von einem quadratischen Polynom stammen, bringt es nichts, (echt) kubisch zu interpolieren. Da ist der kubische Term eben 0.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JayvH
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 19.03.11
Wohnort: Hannover
Version: ---
     Beitrag Verfasst am: 11.09.2011, 21:06     Titel:
  Antworten mit Zitat      
Das ist schon klar, aber der Befehl unmkpp gibt ja als Koeffizienten 3, 8 und 6 zurück. Die Funktion, die aber die y-Werte zu meiner Splineinterpolation führte hatte 3, 2 und 1. Wie passt das zusammen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.09.2011, 21:26     Titel:
  Antworten mit Zitat      
Hallo,

siehe meine erste Antwort. Du beziehst die Koeffizienten auf x^n, der Befehl gibt sie aber bezogen auf (x - x0)^n mit x = 1 zurück. Hier also:
f(x) = 3\cdot (x-1)^{2}+ 8 \cdot (x-1) + 6

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JayvH
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 19.03.11
Wohnort: Hannover
Version: ---
     Beitrag Verfasst am: 11.09.2011, 21:41     Titel:
  Antworten mit Zitat      
Tut mir Leid, da habe ich den Satz Deines ersten Postings falsch interpretiert. Ist das x_0 denn immer 1 oder ist das in d oder l versteckt?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.09.2011, 21:50     Titel:
  Antworten mit Zitat      
Hallo,

x0 ist der linke Endpunkt des jeweiligen Spline-Teils und kann aus break herausgelesen werden. Schau dir vielleicht ein anderes Beispiel an, das kein Polynom ist, damit du siehst, wie das mit mehreren Spline-Teilen aussieht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.