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

probleme beim integrieren mit trapz

 

daddels
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.03.11
Wohnort: Lüneburg
Version: ---
     Beitrag Verfasst am: 01.01.2012, 14:22     Titel: probleme beim integrieren mit trapz
  Antworten mit Zitat      
Hallo und ein frohes neues Jahr an alle Nutzer

habe da ein problem ich möchte gerne ein p-V Diagramm plotten und die eingeschlossene Fläche inegrieren. Soweit sogut aber irgendwie passt mein Ergebnis nicht, hat jemand mal Zeit und kann da mal drüber schauen...
hier mein Programm


Code:
clear all
clc
hold on
p1=1.013;      % in bar
v1=675;     % in cm^3
v2=75;    % in cm^3
p2=21.96;   % in bar
p3=114.05;   % in bar
p4=5.262;   % in bar
 k=1.4;
V12=[675:-15:75];
p12=[];
 for i=1:length(V12)
    p12(i)=p1/((V12(i)/v1)^k);
 end
V34=[75:15:675];
p34=[];
 for i=1:length(V34)
    p34(i)=p3/((V34(i)/v2)^k);
 end
V23=[75 75];
p23=[p2 p3];
V41=[675 675];
p41=[p1 p4];
plot(V12,p12,V23,p23,V34,p34,V41,p41);
foben=trapz(V34,p34);
funten=trapz(V12,p12);
Nutzen=abs(foben-funten)/10  %Hinweis Nutzen /10 wegen Einheitenrechn.
Aufwand=abs(funten)
 


bin für jede hilfe dankbar...

Bitte Code-Umgebung benutzen - Danke! Jan S
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.01.2012, 16:50     Titel: Re: probleme beim integrieren mit trapz
  Antworten mit Zitat      
Hallo daddels,

Bitte beschreibe das Problem detailiert. "irgendwie passt mein Ergebnis nicht" erlaubt es nicht zu verstehen, welches Problem überhaupt auftritt. Das macht eine Analyse der Ursache unnötig schwer.

Ein paar Kommentare zum Code:
"clear all": Das löscht u.a. alle geladenen Funktionen aus dem Speicher. Das erneute Lesen der Funktionen bremst Matlab erheblich aus. Ein "clear" ohne "all" löscht zumindest nur die Variablen. Das mag helfen grobe Fehler aufzudecken, die Benutzung einer Funktionwäre aber deutlich effizienter.

"V12=[675:-15:75];": Die eckigen Klammern sind hier unnötig, weil "a:b:c" bereits ein Vektor ist.

Wahrscheinlich ist Dir die Laufzeit des Programms egal, aber man sollte sich gleich zu Beginn angewöhnen, Matlab effizient zu benutzen.
Code:
p12=[];
 for i=1:length(V12)
    p12(i)=p1/((V12(i)/v1)^k);
 end

Den Vektor p12 in jeder Iteration wachsen zu lassen ist seh ineffizient, da dann jedes mal ein neuer Vektor alloziert werden muss und die alten Werte kopiert werden müssen. Besser wäre eine Pre-allocierung:
Code:
p12= zeros(1, length(V12));
 for i=1:length(V12)
    p12(i)=p1/((V12(i)/v1)^k);
 end

Matlab kann das allerdings noch hübscher, weil es direkt mit Vektoren arbeiten kann:
Code:
p12 = p1 ./ ((V12./v1) .^ k);


Es ist merkwürdig, dass Du einen Wert durch 10 teilst, den anderen aber nicht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
daddels
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.03.11
Wohnort: Lüneburg
Version: ---
     Beitrag Verfasst am: 01.01.2012, 18:09     Titel:
  Antworten mit Zitat      
danke für die schnelle antwort

Bin schon froh wenn ich überhaupt was sinnvolles rausbekomme auch wenn es nicht immer ganz effizient ist...
Ich habe nur den einen WERT durch 10 geteilt da nur dieser mir von nutzen ist.
Mir ist nur wichtig ob ich es von der Sache her richtig integriert hab also wirklich die eingeschlossene Fläche und nicht igendwas anderes.

schöne grüße Daddels
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.01.2012, 19:17     Titel:
  Antworten mit Zitat      
Hallo daddels,

Bitte beschreibe noch, warum Du findest, dass das Ergebnis nicht "passt".

Eine Standard-Methode zum Testen von Integralen ist die Änderung der Schrittweite. Wenn Du die doppelte Anzahl von Schritten nimmst, sollte das gleiche Ergebnis herauskommen - abgesehen von der besseren Ganauigkeit.

Die zweite Methode wäre natürlich ein Vergleich mit der analytischen Lösung.

Gruß, Jan
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.