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

Integrieren von Polynomen in einem Vektor

 

Stirtz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2010, 16:45     Titel: Integrieren von Polynomen in einem Vektor
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem:
Ich habe in einer function einen Vektor erzeugt, in der in jeder Zeile ein anderes Polynom vierten Grades steht.
Code:

for i = 1:165
    T(i,1) = Parameter(i,1)*x.^4 + Parameter(i,2)*x.^3 + Parameter(i,3)*x.^2 + Parameter(i,4)*x + Parameter(i,5);   % T in K
end

Ich habe jetzt versucht jede Zeile dieses Vektors mit hilfe von quad in gewissen Grenzen zu integrieren. Funktioniert aber nicht.

Vielleicht kann mir ja jemand helfen.

Andreas


Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2010, 16:53     Titel:
  Antworten mit Zitat      
Du hast ein Polynom und willst es integrieren? Warum integrierst du es nicht einfach "per Hand" und gibst dann deine Grenzen ein? Erscheint mir sehr viel einfacher als eine Funktion zu verwenden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Stirz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2010, 07:53     Titel:
  Antworten mit Zitat      
Ich habe mich anscheinend nicht klar ausgedrückt.
Ich habe nicht ein Polynom, ich habe 165 Polynome und die möchte ich nicht alle einzeln integrieren.
Vor allem deswegen, weil diese Polynome vierten Grades im nächsten Schritt auch noch hoch 6 genommen werden und das Polynom dementsprechend noch größer wird.
Das Problem liegt hauptsächlich darin, das Matlab anscheinen nur die erste Zeile eines Vektors integriert.
Außerdem scheint der Befehl quad nicht mit der for schleife in der Funktion zurecht zu kommen. Fehlermeldung: ???Subscripted assignment dimension mismatch.

Gibt es vielleicht andere Vorschläge als mit Hand zu integrieren?
 
Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2010, 08:53     Titel:
  Antworten mit Zitat      
Mmmh, jetzt hab ich mich wohl auch schwammig ausgedrückt... Sorry.
Ich meinte: in deiner Schleife steht ja immer "Faktor1*x^4 + Faktor2*x^3...". Was ich meinte ist, dass du einfach statt dem Polynom die Stammfunktion in die Schleife schreibst, also "Faktor1*(1/5)*x^5 + Faktor2*(1/4)*x^4 ..." und dann in dieser Schleife einfach "Obere Grenze - Untere Grenze" berechnest. So musst du natürlich nicht jedes Integral wirklich berechnen, die Integration wird aber einfach durch eine Differenz ersetzt. Ich kenn deinen Code nicht, aber wenn das Polynom im ersten Fall immer einen Grad von 4 hat, dann scheint mir das eine sehr einfache Möglichkeit zu sein. Im zweiten Fall, also bei einem Grad von 6 müsste je ebenfalls nur die Stammfunktion gebildet werden.

Falls du das aber nicht willst, dann müsste es auch über einen Funktion funktionieren:

Code:


untere_grenze = 0;
obere_grenze = 2;

for i = 1:165

Fun = @(x) a(i,1)*x.^4+a(i,2)*x.^3+a(i,3)*x.^2+a(i,4)*x+a(i,5);

T(i) =  = quad(Fun,untere_grenze,obere_grenze);

end

 


mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Stirz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2010, 09:19     Titel:
  Antworten mit Zitat      
Super, das hat schon mal geholfen. Danke!

Ich habe aber noch das andere Problem. Ich habe kein Polynom sechsten Grades, sonder das Polynom vierten Grades wird komplett hoch sechs genommen, so dass ein Polynom mit Grad 24 entsteht.
Code:
V = a*T.^6 + b*T.^5 + c*T.^4 + ...

Der Grad des Polynoms ist nicht das Problem. Aber ich bekomme es nicht hin, dass mir Matlab mein Polynom V in abhängigkeit von x berechnet, so dass ich es dann anschließend integrieren kann.

Hast du vielleicht hierzu auch noch eine Idee?
 
Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2010, 09:34     Titel:
  Antworten mit Zitat      
Wird nur das Polynom vierten Grades T hoch 6 genommen, also T^6 oder wie du unten geschrieben hast T^6 + T^5...?
So oder so würde mir auf die schnelle nur einfallen das ganze wieder als eigene Funktion zu schreiben:

Code:


a = [1 2 3 4 5];
untere_grenze = 0;
obere_grenze = 2;

Fun = @(x) a(1)*x.^4+a(2)*x.^3+a(3)*x.^2+a(4)*x+a(5);
Fun2 = @(x) (a(1)*x.^4+a(2)*x.^3+a(3)*x.^2+a(4)*x+a(5)).^6;

Q = quad(Fun,0,2)
Q2 = quad(Fun2,0,2)

 


mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Stirz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2010, 11:02     Titel:
  Antworten mit Zitat      
Vielen Dank.

Hat alles geklappt.
 
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.