% Wähle maximale Anzahl Stützstellen als Zweierpotenz zum besseren Vergleich % mit der Extrapolation clear %löscht den Workspace format long; f='FUNKTION'; l=9; % Hier 2^l k = menu('Integration mittels Quadraturformel',... 'Trapezregel',... 'Mittelpunktregel',... 'Simpsonregel',... 'Vergleich aller',... 'Ende'); while k<5 N = input('==> Anzahl N der äquidistanten Teilintervalle: '); a = input('==> untere Grenze des Gesamtintervalls:'); b = input('==> obere Grenze des Gesamtintervalls: '); genauigkeit = input('==> Anzahl der Nachkommastellen: '); % N = 2; % a = -5; % b = 5; % genauigkeit = 8; % Zur Berechnung eines Referenzwertes: orginalwert = 1; alt = 0; intervalle = 2; while abs(orginalwert-alt)> 10^-genauigkeit alt = orginalwert; orginalwert = SIMPSON(f,a,b,intervalle); intervalle = intervalle * 2; end % while werte = zeros(3,l+1); fehler = zeros(3,l+1); teilint = zeros(1,l+1); for i=1:l+1 % stückweise Trapezregel zur geg. Funktion f auf [a,b] if k==1 | k==4 werte(1,i) = TRAPEZ(f,a,b,N); end % if % stückweise Mittelpunktregel zur Funktion f auf [a,b] if k==2 | k==4 werte(2,i) = MITTELP(f,a,b,N); end % if % stückweise Simpsonregelregel zur Funktion f auf [a,b] % N=1 nicht möglich für summierte Simpson-Regel if (k==3 | k==4) & N>1 werte(3,i) = SIMPSON(f,a,b,N); end % if teilint(i)=N; N=N*2; end; %Fehlerberechnung: fehler = (abs(werte - orginalwert)./orginalwert)*100; % Ausgabe der Ergebnisse und der Fehler:(als Werte) if k<4 werte(k,:) fehler(k,:) else werte fehler end %if % Ausgabe der Ergebnisse und der Fehler:(als Grafik) orginalwerte = zeros(1,l+1); orginalwerte(1,:) = orginalwert; clf; subplot(2,1,1); plot((1:l+1),orginalwerte(1,:),'k'); hold on; subplot(2,1,2); hold on; if k==1 | k==4 subplot(2,1,1); plot((1:l+1),werte(1,:),'b'); title(['Der exakte Integralwert lautet: ',num2str(orginalwert)]) ylabel('Integralwert') subplot(2,1,2); plot((1:l+1),fehler(1,:),'b'); title('Der Fehler der Trapezregel, Fehlerquote nimmt nach rechts ab') xlabel('Durchgänge') ylabel('Fehler in Prozent') end %if if k==2 | k==4 subplot(2,1,1); plot((1:l+1),werte(2,:),'g'); title(['Der exakte Integralwert lautet: ',num2str(orginalwert)]) ylabel('Integralwert') subplot(2,1,2); plot((1:l+1),fehler(2,:),'g'); title('Der Fehler der Mittelpunktregel, Fehlerquote nimmt nach rechts ab') xlabel('Durchgänge') ylabel('Fehler in Prozent') end %if if (k==3 | k==4) & N>1 subplot(2,1,1); plot((1:l+1),werte(3,:),'r'); title(['Der exakte Integralwert lautet: ',num2str(orginalwert)]) ylabel('Integralwert') subplot(2,1,2); plot((1:l+1),fehler(3,:),'r'); title('Der Fehler der Simpsonregelregel, Fehlerquote nimmt nach rechts ab') xlabel('Durchgänge') ylabel('Fehler in Prozent') end %if if k==4 subplot(2,1,1); title('Die unterschiedlichen Integralwerte, Genauigkeit nimmt nach rechts zu') ylabel('Integralwert') legend(['eigentl. Ergebnis: ',num2str(orginalwert)],... 'Ergebnis nach Trapezregel',... 'Ergebnis nach Mittelpunktregel',... 'Ergebnis nach Simpsonregel'); subplot(2,1,2); title('Der Fehler der verschiedenen Quadraturen, Fehlerquote nimmt nach rechts ab') xlabel('Durchgänge') ylabel('Fehler in Prozent') legend('Fehler bei Trapezregel',... 'Fehler bei Mittelpunktregel',... 'Fehler bei Simpsonregel'); end %if k = menu('Integration mittels Quadraturformel',... 'Trapezregel',... 'Mittelpunktregel',... 'Simpsonregel',... 'Vergleich aller',... 'Ende'); end %while close