%% Abbruch bei Reihenentwicklung % Berechnung des Wertes der Reihe sum(1/(k*k)) --> pi*pi/6 % bis Folgenglieder relativ (bzgl. des Wertes) kleiner als epsilon sind % oder eine max. Anzahl von Summanden überschritten ist. clc; clf; clear; reihen_wert = pi*pi/6; % exakter Wert eps = 1e-3; % relative Abbruchgenauigkeit n_max = 10000; % höchstes verwendetes Folgenglied %% FOR-loop mit a priori festgelegter Anzahl der Durchlaeufe summe = 0; % Summe s_gr(n_max) = 0; % Speicher allokieren %for k=1:n_max for k=n_max:-1:1 term = 1/(k*k); % aktueller Summand (Folgenglied) summe = summe + term; % aktuelle Summe (Partialsumme) s_gr(k) = reihen_wert -summe; % Abstand zu exaktem Wert end disp(['Summe_1 = ',num2str(summe),' nach ',num2str(n_max),' Iterationen' ]); disp(['absoluter Fehler: ',num2str(reihen_wert-summe)]); semilogy(s_gr); %rate = s_gr(2:length(s_gr))./s_gr(1:length(s_gr)-1); %% WHILE-loop mit Abbruchbedingung (absoluter Fehler) summe = 0; % Summe k = 0; % Zaehler initialisieren while abs(reihen_wert -summe) > eps k = k+1; % Zaehler erhoehen term = 1/k/k; % aktueller Summand (Folgenglied) summe = summe + term; % aktuelle Summe (Partialsumme) % s_gr2(k) = reihen_wert -summe; % Abstand zu exaktem Wert end disp(['Summe_2 = ',num2str(summe),' nach ',num2str(k),' Iterationen' ]); disp(['absoluter Fehler: ',num2str(reihen_wert-summe)]); %semilogy(s_gr2); %% WHILE-loop mit Abbruchbedingung (Groesse des Folgengliedes) % (Wert der Reihe wird als unbekannt angenommen) summe = 0; % Summe k = 1; % Zaehler initialisieren term = 1/k/k; while abs(term) > eps summe = summe + term; % aktuelle Summe (Partialsumme) k = k+1; % Zaehler erhoehen term = 1/k/k; % naechster Summand (Folgenglied) % s_gr2(k) = reihen_wert -summe; % Abstand zu exaktem Wert end disp(['Summe_3 = ',num2str(summe),' nach ',num2str(k),' Iterationen' ]); disp(['absoluter Fehler: ',num2str(reihen_wert-summe)]); %semilogy(s_gr2);