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

Iteration in einer for-Schleife

 

Smitty
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 12.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2011, 14:58     Titel: Iteration in einer for-Schleife
  Antworten mit Zitat      
Hallo,
zunächst habe ich versucht mich nach diesem Thread zu richten: http://www.gomatlab.de/problem-mit-.....ner-gleichung-t16888.html
da ist mir das Prinziep der Interation schon mla klar geworden. Problem sieht wie folgt aus:
Code:
function [Tgneu] = Gemischtemperatur( TL,Tr )
xg=evalin('base','xg');
cpL=evalin('base','cpL');
cprezi=evalin('base','cprezi');
R=evalin('base','R');
for i=(1:length(xg(:,1))) %i variert von 1 bis 9
    Tg=300;
    Tgneu=301;  
    while abs(Tg-Tgneu) > 1e-4;
        Tg=Tgneu;
cpN2g=929.528+0.3096*Tg-7.988*10^(-5)*Tg^2+6.7502*10^(-9)*Tg^3;
cpO2g=812.923+0.3943*Tg-1.463*10^(-4)*Tg^2+2.0929*10^(-8)*Tg^3;
cpCO2g=636.491+0.9099*Tg-3.739*10^(-4)*Tg^2+5.2068*10^(-8)*Tg^3;
cpH2Og=1590.8+0.7737*Tg-5.2692*10^(-5)*Tg^2+1.2764*10^(-8)*Tg^3;

cpG(i,1)=xg(i,1)*cpN2g+xg(i,2)*cpO2g+xg(i,3)*cpCO2g+xg(i,4)*cpH2Og;
Tgneu(i,1)= (TL*cpL+R*cprezi(i,1)*Tr)/((1+R)*cpG(i,1)*Tg);
    end
end
end
 

mein Ziel ist es für jedes i ein Tg per Iteration zu berechnen. Matlab berechnet auch einen Vektor, aber es scheint so als fände keine Iteration statt. Als Ergebis kommt
Code:
Tgneu =
    301.0000
         0
         0
         0
         0
         0
         0
         0
    1.6382


hat jemand eine Idee, was ich heir grundlegend falsch gemacht habe?

besten Dank und Grüße
Smitty
Private Nachricht senden Benutzer-Profile anzeigen


BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 15.09.2011, 15:16     Titel:
  Antworten mit Zitat      
Hallo,

du schreibst in der for-Schleife

Code:
Tgneu=301;  


somit Überschreibst du immer deine alten Ergebnisse!
Eventuell deinen Ergebnis-Vektor umbenennen Wink

Gruß Chris
Private Nachricht senden Benutzer-Profile anzeigen
 
Smitty
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 12.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2011, 15:29     Titel:
  Antworten mit Zitat      
Hallo Chris,
da wäre ich im Leben nicht drauf gekommen,
aber ich habe noch eine Frage, wenn ich den Ergebnissvektor umbenenne, woher weiß matlab dann das es die linke seite mit der rechten vergleichen soll?


besten Dank
Smitty
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 15.09.2011, 16:37     Titel:
  Antworten mit Zitat      
Hallo Smitty,

um dir wirklich helfen zu können, wäre von Vorteil zu Wissen, was dein Ziel ist Wink willst du die Tg_neu immer mit Startwerten 300 und 301 beginnen? oder soll das nächste zb.:Tg_neu(2) auf Tg_neu(1) basieren?

Gruß Chris

Bei Bezug auf 300 und 301 könnte es so funktionieren
Code:
   Tg_start=300;
    T_start2=301;  
for i=(1:length(xg(:,1))) %i variert von 1 bis 9
    Tg = Tg_start;
    Tg_neu(i)=Tg_start2;
    while abs(Tg-Tgneu) > 1e-4;
    Tg=Tgneu(i);
    cpN2g=929.528+0.3096*Tg-7.988*10^(-5)*Tg^2+6.7502*10^(-9)*Tg^3;
    cpO2g=812.923+0.3943*Tg-1.463*10^(-4)*Tg^2+2.0929*10^(-8)*Tg^3;
    cpCO2g=636.491+0.9099*Tg-3.739*10^(-4)*Tg^2+5.2068*10^(-8)*Tg^3;
    cpH2Og=1590.8+0.7737*Tg-5.2692*10^(-5)*Tg^2+1.2764*10^(-8)*Tg^3;

    cpG(i,1)=xg(i,1)*cpN2g+xg(i,2)*cpO2g+xg(i,3)*cpCO2g+xg(i,4)*cpH2Og;
    Tgneu(i)= (TL*cpL+R*cprezi(i,1)*Tr)/((1+R)*cpG(i,1)*Tg);
    end
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Smitty
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 12.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.09.2011, 07:52     Titel:
  Antworten mit Zitat      
Guten Morgen
also ich möchte die "unterste" Gleichung iterativ lösen, und zwar für jedes i, so dass ich am Ende einen Vektor mit neun iterativ bestimmten Tg's bekomme. Die Iteration soll so ab laufen, dass sie bei 300 beginnt, bei jedem neuen Umlauf den dann alten Startwert um 1 erhöht und so zum Ziel kommt.Hab das jetzt so probiert:
Code:
function [Tgneu] = Gemischtemperatur( TL,Tr )
xg=evalin('base','xg');
cpL=evalin('base','cpL');
cprezi=evalin('base','cprezi');
R=evalin('base','R');

   Tg_start=300;
    Tg_start2=301;  
for i=(1:length(xg(:,1))) % i variert von 1 bis 9
    Tg = Tg_start;
    Tgneu(i)=Tg_start2;
    while abs(Tg-Tgneu) > 1e-4;
    Tg=Tgneu(i);
    cpN2g=929.528+0.3096*Tg-7.988*10^(-5)*Tg^2+6.7502*10^(-9)*Tg^3;
    cpO2g=812.923+0.3943*Tg-1.463*10^(-4)*Tg^2+2.0929*10^(-8)*Tg^3;
    cpCO2g=636.491+0.9099*Tg-3.739*10^(-4)*Tg^2+5.2068*10^(-8)*Tg^3;
    cpH2Og=1590.8+0.7737*Tg-5.2692*10^(-5)*Tg^2+1.2764*10^(-8)*Tg^3;

    cpG(i,1)=xg(i,1)*cpN2g+xg(i,2)*cpO2g+xg(i,3)*cpCO2g+xg(i,4)*cpH2Og;
    Tgneu(i)= (TL*cpL+R*cprezi(i,1)*Tr)/((1+R)*cpG(i,1)*Tg);
    end
end
end
das funzt aber nicht, sondern liefert:
Code:
Tg_neu =

   NaN   301   301   301   301   301   301   301   301

wirklich verstehen tu ich das (leider) nicht
Grüße
Smitty
Private Nachricht senden Benutzer-Profile anzeigen
 
Smitty
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 12.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.09.2011, 10:13     Titel:
  Antworten mit Zitat      
Hab den fehler,
besten dank noch mal
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.