%% IMP: 9.12.2011 % Einfuehrung in die strukturierte Programmierung %% abweisender Zyklus [WHILE-Loop] % Ziel: Eingabe einer Zahl im Intervall [3,10] clc; clear; disp('abweisender Zyklus') k = input('Zahl aus [3,10]: '); %k = randi([-5,15],1) %while ~( 3<=k && k <=10 ) % k nicht im Intervall [3,10] while k<3 || 10 < k k = input('Zahl aus [3,10]: '); %k = randi([-5,15],1) end %% Zaehlschleife clc; clear disp('Reihe via Zaehlschleife') realval = pi^2/6; % wahrer Reihenwert sum(1) = 1; for n=1:999 % Partialsumme Folgenglied sum(n+1) = sum(n) + 1/(n+1)^2; end disp(['Differenz zu pi^2/6: ', num2str(sum(end)-realval)] ); %% Via Vektorarithmetik (und Speicherung aller Partialsummen) clc; clear disp('Reihe via Vektorarithmetik') realval = pi^2/6; % wahrer Reihenwert KK = 1./(1:1000).^2; % Folgenglieder SS = cumsum(KK); % Partialsummen disp(['Differenz zu pi^2/6: ', num2str(SS(end)-realval)] ); %% Zaehlschleife mit Abbruch clc; clear disp('Reihe via Zaehlschleife mit Abbruch (nicht in Uebung/Klausur)') realval = pi^2/6; % wahrer Reihenwert seps = 1e-5; % relative Abbruchgenauigkeit sum(1) = 1; for n=1:200000 sum(n+1) = sum(n) + 1/(n+1)^2; if abs(sum(end)-realval) < seps break; % in Uenung und Klausur verboten!! end end disp(['Differenz zu pi^2/6: ', num2str(sum(end)-realval)] ); %% Zaehlschleife in While-Loop umwandlen clc; clear disp('Zaehlschleife in While-Loop umwandlen') realval = pi^2/6; % wahrer Reihenwert sum(1) = 1; n = 1; % Laufvariable: Anfangswert setzen while n<=999 % Laufvariable: bzgl. Endwert testen sum(n+1) = sum(n) + 1/(n+1)^2; n = n+1; % Laufvariable veraendern end disp(['Differenz zu pi^2/6: ', num2str(sum(end)-realval)] ); %% Zaehlschleife in While umwandlen mit Abbruch clc; clear disp('Reihe via While-Loop') realval = pi^2/6; % wahrer Reihenwert seps = 2e-4 ; % relative Abbruchgenauigkeit sum(1) = 1; n = 1; %while n<=9999 && abs(sum(n)-pi^2/6) >= seps while abs(sum(n)-realval) >= seps % absoluter Test sum(n+1) = sum(n) + 1/(n+1)^2; n = n+1; end disp(['Differenz zu pi^2/6: ', num2str(sum(end)-realval)] ); disp(['N: ',num2str(length(sum))]); % publish('v_8.m')