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 mit mean und trapz (Freemat)

 

yukterez
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 19.11.11
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 15.01.2013, 19:22     Titel: Integrieren mit mean und trapz (Freemat)
  Antworten mit Zitat      
Werte Damen und Herren,

ich bekomme es um die Burg nicht hin, ein Integral



mit Freemat zu erstellen. Ich habe es mit trapz und cumtrapz versucht, aber ich erhalte immer ein falsches Ergebnis.

Das richtige Ergebnis erhalte ich mit Matlab:

Code:
% Matlab Integral

syms x
a   =       10;
X   = @(x)  cos(x)+2;
y   =       vpa(integral(X, 0,a)./a)

%   y       = 1.9456'

und Mupad:

Code:
// Mupad Integral

a  :=      10;
X  :=      cos(x)+2;
y  :=      float(hold(int)(X, x=0..a))/a;

// y       = 1.9456'

Versuche ich es aber mit Freemat, scheitere ich erbärmlich, trotz befolgens der Anweisungen im Tutorial:

Code:
%  Freemat Integral (mit Fehler)

a   =       10;
x   =       linspace(0,a);
X   =       cos(x)+2;
y   =       trapz(X, x)./a

%   y       = -0.7847'

Was mache ich falsch?

_

Edit 1: Bild hinzugefügt
Edit 2: "mean" zum Titel hinzugefügt

Zuletzt bearbeitet von yukterez am 15.01.2013, 20:12, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


yukterez
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 19.11.11
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 15.01.2013, 19:35     Titel:
  Antworten mit Zitat      
Per Try und Error komme ich auf

Code:
--> %  Freemat Integral
a   =       10;
x   =       linspace(0,a);
X   =       cos(x)+2;
y   =       mean(X)/a

% y =    0.1947

Aber ein Doppelintegral, welches in Matlab so aussieht:

Code:
syms x y
a = 10;
fun = @(x,y) sqrt(x.^2+y.^2);
d = vpa(integral2(fun,-a/2,a/2,-a/2,a/2)/a^2)
 
% d = 3.826

bekomme ich immer noch nicht hin.
Private Nachricht senden Benutzer-Profile anzeigen
 
yukterez
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 19.11.11
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 15.01.2013, 20:11     Titel:
  Antworten mit Zitat      
Ok Doppelintegral sieht so aus:

Code:
% Freemat Doppelintegral
a = 10;
x   =       linspace(-a/2,a/2);
y   =       linspace(-a/2,a/2);
X   =       sqrt(x.^2+y.^2);
d =         mean(mean(X))

Der Thread kann also gelöscht, oder als abschreckendes Beispiel behalten werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
yukterez
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 19.11.11
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 15.01.2013, 22:21     Titel:
  Antworten mit Zitat      
Ich habe, damit sowas niemandem mehr passieren muss, die Syntax auch für ein Dreifachintegral notiert:

Code:
% Freemat Dreifachintegral

a   =   10;
x   =   linspace(-a/2,a/2); % alternativ: x = -a/2:0.001:a/2;
y   =   linspace(-a/2,a/2); % alternativ: y = -a/2:0.001:a/2;
z   =   linspace(-a/2,a/2); % alternativ: z = -a/2:0.001:a/2;
X   =   sqrt(x.^2+y.^2+z.^2);
d   =   mean(mean(mean(X)))


Hier im Vergleich zu Matlab, Mupad, Maple und Mathematica: Integrale mit Freemat
Private Nachricht senden Benutzer-Profile anzeigen
 
yukterez
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 19.11.11
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 16.01.2013, 17:04     Titel: Ungenauigkeit dieser Methode
  Antworten mit Zitat      
Die Genauigkeit meiner Methode lässt allerdings zu wünschen übrig. Während ich mit Matlab noch 1.2358e+06 herausbekomme, liefert Freemat satte 1.9947e+06, also 60% mehr:

Code:
% Matlab

syms R v r kg m sek positive

kg = 1; m = 1; sek = 1;

Msol   = 2e30*kg;
MX     = 40*Msol;                                               % Variable
rSol   = 6.96e8*m;
AU     = 149597870691*m;
exc    = 0.0167;
rA     = 10*rSol;                                               % Variable
rB     = 10*(1+exc/2)*AU;                                       % Variable
v0     = 100*m/sek;                                             % Variable
G      = 6.67384e-11*m^3/kg/sek^2;

v1     = vpa(sqrt(int(2*MX*G/r^2+v0^2/(rA-rB), r,rA,rB)), 32)

% ->  1.2358e6
Code:

    % Freemat

    kg = 1; m = 1; sek = 1;

    Msol   = 2e30*kg;
    MX     = 40*Msol;                                               % Variable
    rSol   = 6.96e8*m;
    AU     = 149597870691*m;
    exc    = 0.0167;
    rA     = 10*rSol;                                               % Variable
    rB     = 10*(1+exc/2)*AU;                                       % Variable
    v0     = 100*m/sek;                                             % Variable
    G      = 6.67384e-11*m^3/kg/sek^2;

    r      = linspace(rA,rB);

    v1     = sqrt((mean(2.*MX.*G./r.^2+v0.^2./(rA-rB)))*(rB-rA))

    % ->  1.9947e6

Kriegt man das noch besser hin?
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 - 2024 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.