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

Integralberechnung mittels Trapez- und Simpsonformel

 

Lizzie
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 22.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2015, 21:38     Titel: Integralberechnung mittels Trapez- und Simpsonformel
  Antworten mit Zitat      
Code:

%***********************************************************
% M-Script zur Bestimmung des Integrals mittels Trapezformel
%***********************************************************
clear all
close all
clc

f = @(x)((sin(3*x)/(x+1)))*(exp(cos(x).^2));


% Eingabe
disp ('Geben Sie die beiden Grenzen des Integrals sowie die Anzahl der Stützstellen ein:')
a = input ('untere Grenze eingeben:');
b = input ('obere Grenze eingeben:');
M = input ('Anzahl der Stützstellen eingeben:');

% Rechnung
int_trap = trap(f,a,b,M);

% Ausgabe
disp ('Das Integral lautet: '), (int_trap)
 


Code:

function sum = trap(f,a,b,M)

%*****************************************************************
% Funktion trap.m
% Trapezregel zur Integration uber eine Funktion f
%*****************************************************************

% sum = trap(f,a,b,M)
% Input:
% f - Name der Funktion, uber die integriert wird (in Hochkomma oder mit @)
% a - untere Integrationsgrenze
% b - obere Integrationsgrenze
% M - Zahl der Intervalle
% 0utput
% sum - Ergebnis


h = (b-a)/M; % Intervallbreite
sum = 0; % Startwert = 0
for k = 1:(M-1)
   x = a + h*k;
   sum = sum + feval(f,x);
end
sum = h/2*(feval(f,a) + feval(f,b)) + h*sum;
 


Code:

%*************************************************************
% M-Script zur Bestimmung des Integrals mittels Simpsonformel
%*************************************************************
clear all
close all
clc

f = @(x)((sin(3*x)/(x+1)))*(exp(cos(x).^2));


% Eingabe
disp ('Geben Sie die beiden Grenzen des Integrals sowie die Anzahl der Stützstellen ein:')
a = input ('untere Grenze eingeben:');
b = input ('obere Grenze eingeben:');
M = input ('Anzahl der Stützstellen eingeben:');

% Rechnung
int_simp = simp(f,a,b,M);

% Ausgabe
disp ('Das Integral lautet: '), (int_simp)
 


Code:

function sum = simp(fun,a,b,M)
%***********************************************************************
% Funktion simp.m
% Simpson-Regel zur Integration über eine Funktion fun
%***********************************************************************

% sum = simp(fun,a,b,M)
% Input:
%   fun - Name der Funktion, über die integriert wird (in Hochkomma oder mit @)
%   a - untere Integrationsgrenze
%   b - obere Integrationsgrenze
%   M - Zahl der Intervalle
% 0utput
%   sum - Ergebnis

h =(b-a)/(2*M);   % Intervallbreite

sum1 = 0; sum2 = 0;
for k = 1:M
   x = a + h*(2*k-1);
   sum1 = sum1 + feval(fun,x);
end
for k = 1:(M-1)
   x = a + h*2*k;
   sum2 = sum2 + feval(fun,x);
end
sum = h/3*(feval(fun,a) + feval(fun,b) + 4*sum1 + 2*sum2);
 


Code:

% M-Script für den Vergleich der Trapezformel mit der von MATLAB
% gegebenen Integralfunktion quad()
%**************************************************************************

f= @(x)((sin(3*x)/(x+1)))*(exp(cos(x).^2));

%**************************************************************************
% Eingabe:
disp ('Geben Sie die beiden Grenzen des Integrals sowie die Toleranz ein:')
a = input ('untere Grenze eingeben:');
b = input ('obere Grenze eingeben:');
tol = input ('Toleranz eingeben');
%**************************************************************************

%**************************************************************************
% Rechnung und Ausgabe:
%--------------------------------------------------------------------------
% Integralberechnung mittels quad():
int_quad = quad(f, a, b, tol);
disp ('Das Integral mittels quad() lautet:'), int_quad
%--------------------------------------------------------------------------
% Stützstellen:
% M_max = maximale Anzahl der Stützstellen (unendlich) - hier verwenden wir
% aber exemplarisch 100
M_max = 100;
% M_min = 2, da mindestens zwei Stützstellen benötigt werden
M_min = 2;
% n = Anzahl der Stützstellen im Intervall
%--------------------------------------------------------------------------
% Berechnung des absoluten Fehlers in Abhängigkeit der Stützstellen
% mittels Trapezformel:
x=[]; y=[];
for o=M_min:M_max
for n=M_min:M_max
    int_trap(M_min) = trap(f, a, b, n);
    fehler_trap(M_min) = int_quad - int_trap(M_min);
    disp('Stützstellen:'), M_min
    disp ('Ergebnis der Trapezformel:'), int_trap(M_min)
    disp ('Fehler:'), fehler_trap(M_min)
    %string_fehler_trap=[M_min, int_trap(M_min), fehler_trap(M_min)];
    M_min = M_min+1;
end;
x=[o];y=[fehler_trap(o)];
disp(x)
disp(y)
semilogy(x,y)
grid on
end;
 


Integralberechnung_Trapez_Simpson.JPG
 Beschreibung:
Hallo,

ich bekomme die Aufgabe im Anhang nicht gelöst. Das Integral mittels Trapez- und Simpsonformel zu berechnen, habe ich noch hinbekommen. Nun möchte ich die Ergebnisse mit der von Matlab gegebenen Funktion zur Integralberechnung quad() vergleiche

Download
 Dateiname:  Integralberechnung_Trapez_Simpson.JPG
 Dateigröße:  97.79 KB
 Heruntergeladen:  293 mal
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.03.2015, 21:55     Titel:
  Antworten mit Zitat      
Zitat:
h bekomme die Aufgabe im Anhang nicht gelöst

das ist leider keine gute fehlerbeschreibung. da lässt sich nur schwer erraten wo der hund begraben liegt. du solltest das also genauer ausführen. sihe dazu am besten den thread aus meiner signatur.
anmerkungen:
1.
clear all macht das debuggen unmöglich und sollte darum nicht benutzt werden.
2. clc verhindert das man die alten fehlermeldungen nachverfolten kann. die sind oft recht hilfreich.
3. sum ist eine matlab funktion und sollte nicht als variablen name verwendet werden.
4.
Zitat:
Code:
disp ('Das Integral lautet: '), (int_trap)
siht mir nicht nach gültigen matlab syntax aus. jedenfalls nicht sauber
Code:
disp (['Das Integral lautet: ',num2str(int_trap)])

_________________

richtig Fragen
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.