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

Funktion "quad" in Matlab vs. "quad" in

 

gunther
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 06.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2013, 16:13     Titel: Funktion "quad" in Matlab vs. "quad" in
  Antworten mit Zitat      
Hallo liebe Community,

ich bin mehr oder weniger neu hier und hoffe eine Lösung oder zumindest eine Erklärung für mein Problem zu finden.

Vorneweg, ich wusste nicht in welches Forum ich es posten sollte, also ob in das Matlab oder Octave Forum, da es sich um ein Problem handelt welches sich bei der Übertragung von Octave in Matlab Code ergibt.

Im wesentlichen ist es relativ einfach, ich habe folgenden Codeausschnitt:

Code:
%


function y=f(x,T,pCO2,pH2O,pO2,pCO,pH2S,pNH3)        
y=exp(-(kCO2(T)*pCO2+kH2O(T)*pH2O+kCO(T)*pCO+kH2S(T)*pH2S+kNH3(T)*pNH3)*x)*exp(-kO2(x,pO2,T)*pO2*x);
endfunction


 a=6                  
 off=229.5              
 l=36                  

 function y=g(x)
 global a
 global off
 global l
 y=f(x,1073.15,23,85,7.8,12.7,42.9,14.8)*a^2/(x+off)^2;
 endfunction

 [v,ier,nfun,err]=quad("g",0,l)
 


Den vollständigen Code poste ich weiter unten, damit es hier etwas übersichtlicher bleibt. "quad" ruft die Funktion g(x) auf, welche darüber definiert ist und wiederum die Funktion f(x) ausführt. f(x) ist ganz oben im Code definiert. Die Funktionen die in f(x) aufgerufen werden poste ich weiter unten.

Wenn ich den Code ausführe komme ich auf das Ergebniss von v = 4.5222e-14. So weit so gut! Wenn ich jetzt aber meinen in Matlab überführten code ausführe, welcher auch die quad Funktion benutzt komme ich auf v = 2.60007e-5.
Ich habe daraufhin mehrere Integrationsmethoden sowohl in Matlab als auch in Octave getestet (quadv, quadgk, quadl, integral...) und alle kommen auf ein Ergebnis im Bereich von v = 2.55e-5 und v=2.6e-5. Der Code ist ursprünglich nicht von mir, ich überführe nur und ich habe leider keine Vergleichsmöglichkeit mit anderen Ergebnissen.
Meine Frage ist jetzt: Was macht "quad" in Octave anders als in Matlab, bzw. warum bekommt nur das Octave "quad" ein unterschiedliches Ergebnis heraus, denn wie gesagt z.b die Funktion "quadv" liefert auch in Octave ein ähnliches Ergebnis wie Matlab.

Hat jemand eine Ahnung wo das Problem liegt? Falls das jetzt zu konfus erklärt ist, gerne nachfragen, ich bin für alles sehr dankbar Smile

Ich hänge auch mal mein Matlab Skript an!

Viele Grüße
gunther

Zur Vollständigkeit hier der gesamte Code:
Code:
%

clear

global a
global off
global l

function y=k0(T)
y=5.61*exp(-3298/T);
endfunction

function y=b3(T)
y=9.9145*exp((T-1091.4)/454.7)^2;
endfunction

function y=kO2(x,pO2,T)
y=(k0(T)*b3(T)^.5)/(b3(T)+pO2*x)^.5*1e-1;
endfunction

function y=kCO2(T)
y=7.59*exp(-3617/T)*1e-1;
endfunction



function y=sigH2O(T)
y=exp(32.1627-5.7426*(T/1000)+13.9331/(T/1000)+(-16.0154+3.2252*(T/1000)-8.7988/(T/1000))*1.94)*1e-19;
endfunction

function y=kH2O(T)
y=sigH2O(T)/1.381e-23/T*1e-2;
endfunction

function y=kCO(T)
y=7.59*exp(-3617/T)*1e-3;
endfunction

function y=sigH2S(T)
y=6.3e-18;
endfunction

function y=kH2S(T)
y=sigH2S(T)/1.381e-23/T*1e-2;
endfunction

function y=kNH3(T)
y= 230*(1-exp(-1370/T))*(300/T)*9.869e-2;
endfunction


function y=f(x,T,pCO2,pH2O,pO2,pCO,pH2S,pNH3)        
y=exp(-(kCO2(T)*pCO2+kH2O(T)*pH2O+kCO(T)*pCO+kH2S(T)*pH2S+kNH3(T)*pNH3)*x)*exp(-kO2(x,pO2,T)*pO2*x);
endfunction


% Beispiel zur Berechnung des gekoppelten Geometrie-Absorptionsfaktors

 a=6                  
 off=229.5              
 l=36                  

 function y=g(x)
 global a
 global off
 global l
 y=f(x,1073.15,23,85,7.8,12.7,42.9,14.8)*a^2/(x+off)^2;
 endfunction

 [v,ier,nfun,err]=quad("g",0,l)

 


absorption_geometrie_umgesch.m
 Beschreibung:

Download
 Dateiname:  absorption_geometrie_umgesch.m
 Dateigröße:  1.6 KB
 Heruntergeladen:  385 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.