% 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)
%*****************************************************************
% 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;
% 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)
functionsum = 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);
% M-Script für den Vergleich der Trapezformel mit der von MATLAB % gegebenen Integralfunktion quad()
%**************************************************************************
%**************************************************************************
% 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;
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
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.
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
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.