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

polyfit mit 3 Werten und einer Steigung

 

Samil
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 20.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2013, 13:34     Titel: polyfit mit 3 Werten und einer Steigung
  Antworten mit Zitat      
Hallo,

ich möchte eine Polynomfunktion 3. Grades durch drei Punkte und der Steigung = 0 im letzten Punkt erstellen.

Mit dem polyfit-Befehl weis ich wie ich eine Funktion durch gegebene Punkte erstellen kann, jedoch nicht wenn ich noch eine steigung habe.

Code:

s = [40,48,54];
u = [27.7,33.3,30.7];
%
% hold on;
plot (s,u,'ok')

% Bestimmung der Koeffizienten des Polynoms der 6. Ordnung
p = polyfit(s,u,3);
k = 1;

for t = 1:1:150
    v_fit(1,k)= p(1,1)*t^3 + p(1,2)*t^2 + p(1,3)*t+p(1,4);
    k=k+1;
end

for i=1:1:150
        t(i)=i;
end

plot(t,v_fit,'-')
 


Oder gibt es eine andere möglichkeit, wie ich dies machen kann?

Vielen Dank im Voraus Wink

Grüße
Samil
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.08.2013, 13:38     Titel:
  Antworten mit Zitat      
Hallo,

du hast da im Grunde ein lineares Gleichungssystem in den Koeffizienten, das du auch selbst aufstellen und mit \ lösen kannst.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 20.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2013, 14:15     Titel:
  Antworten mit Zitat      
Hallo Harald,

also das mit der Aufstellung eines LGS habe ich verstanden. Jedoch Wie mache ich es denn mit der Steigung (Ableitung). Ich habe ja bei der Ableitung eine Variable weniger. Dann stimmt ja die Dimension nicht mehr oder?

Ich bin noch ein Matlab-Neuling Very Happy

Code:

L = [40,40,40;48,48,48;54,54,54];

N = [27.7;33.3;30.7];

solve = L/N;

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Samil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 20.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2013, 15:39     Titel:
  Antworten mit Zitat      
es heist ja allg: y = a*x^3+b*x^2+c*x+d

in meinem fall setze ich für y= u und x=s ein

und ja L = [40^3,40^2,40;48^3,48^2,48;54^3,54^2,54]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.08.2013, 17:54     Titel:
  Antworten mit Zitat      
Hallo,

den konstanten Term nicht vergessen!
Du kannst das Polynom ja ableiten und bekommst dann
y' = 3 a x^2 + 2 b x + c + 0*d
Wenn du y'(54) = 0 möchtest, hast du also

Code:
A = [40^3,40^2,40, 1;
 48^3,48^2,48, 1;
 54^3,54^2,54, 1;
 3*54^2, 2*54, 1, 0]
b = [27.7;33.3;30.7;0]; % <-- die 0 fehlte
 

und mit
Code:


Hat mehr mit Mathematik zu tun als mit MATLAB ;)

Grüße,
Harald

Zuletzt bearbeitet von Harald am 25.08.2013, 18:54, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Samil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 20.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2013, 18:45     Titel:
  Antworten mit Zitat      
hi harald,

klar natürlich muss ich die Konstanten mitnehmen. Lange her, dass ich mit vektoren gearbeitet habe.

Hab noch ein kleines Problemchen in der Mathematik.
Wenn ich A mit b multipliziere erhalte ich p.
Die Dimension stimmt überein und verstehe alles soweit.

Jedoch bei der Division stimmt was nicht. also wenn ich p=A/b mache.
Ich habe es auch versucht mit der Inverse zu machen, also p=A^-1*b. geht auch nicht. Irgendwas stimmt mit der Dimension nicht.

Muss ich bei Matlab dies anders ausdrücken.

Danke Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.08.2013, 18:54     Titel:
  Antworten mit Zitat      
Hallo,

ich habe in meinem vorherigen Beitrag die 0 bei der letzten Gleichung vergessen und das ausgebessert.

Ich hatte absichtlich A\b geschrieben:
A*x = b mit Spaltenvektoren x und b--> x = A\b
x*A = b mit Zeilenvektoren x und b --> x = A/b

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.