Blatt 1 - Abgabe - SoSe18 Lösungen der Programmierung in Matlab PDF

Title Blatt 1 - Abgabe - SoSe18 Lösungen der Programmierung in Matlab
Author Sandra Krummenauer
Course Praktikum zur Grundlagen der Numerik
Institution Johannes Gutenberg-Universität Mainz
Pages 4
File Size 151.1 KB
File Type PDF
Total Downloads 107
Total Views 143

Summary

SoSe18
Lösungen der Programmierung in Matlab...


Description

Numerik Praktikum

Blatt 1

Sandra Krummenauer, Florian Volk

Aufgabe 3 Reihe.m: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% Num - Prak, Blatt 1 , A3 %%%%% Sandra Krummenauer, Florian Volk %%%%% %%%%% Die Funktion Reihe(n) wertet berechnet die Summe von k = 1 bis n %%%%% ueber 1/(k^4) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function f = Reihe(n) f=0; for i=1:n f=f+1/(i^4); end end

% f startet bei 0 und wird in % for-Schleife jeweils % um 1/(i^4) erhoeht

Reihe2.m: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% Num - Prak, Blatt 1 , A3 %%%%% Sandra Krummenauer, Florian Volk %%%%% %%%%% Die Funktion Reihe2(n) wertet berechnet die Summe von k = 1 bis n %%%%% ueber 1/(k^4), analog zu Reihe1(n) jedoch in umgekehrter Reihenfolge %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function f = Reihe2(n) f=0; for i=1:n f=f+1/((n-i+1)^4); end end

Aufgabe3.m: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% Num - Prak, Blatt 1 , A3 %%%%% Sandra Krummenauer, Florian Volk %%%%% %%%%% Dieses Script berechnet die Werte der Reihe ueber 1/k^4 von 1 bis n %%%%% wobei n= 10^1,10^2,...,10^6 und speichert das Ergebnis sowie %%%%% sowie Abweichung vom tatsächlichen Grenzwert pi^4/90 in Matrix A. %%%%% %%%%% Da die angegebene Funktion sum keinen Sinn zu machen scheint haben %%%%% wir symsum verwendet. %%%%% %%%%% A hat das Format ( n berechnete Summe Abweichung ). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% A = zeros(6,3); Grenzwert = pi^4/90;

% Matrix A

display('-------------') display('Reihe vorwaerts:')

wird erstellt mit Nulleinträgen

% Text-Ausgabe in Command Window

Numerik Praktikum tic for i=1:6

Blatt 1

Sandra Krummenauer, Florian Volk

% For- Schleife zur jeweiligen Berechnung % mit den 6 Eingabezahlen 10^i , i=1,..,6

%Eingabe wir in 1. Spalte eingetragen A(i,1)=(10^i); A(i,2)=Reihe(A(i,1));% Reihe wird berechnet und in 2.Spalte eingetragen A(i,3)= A(i,2)- Grenzwert; % Abweichung vom Grenzwert in 3. Spalte end toc A %Ausgabe der Matrix A %Reihe for rückwärts display('-------------') display('Reihe rueckwaerts:') tic for i=1:6 %Berechnung analog zu Reihe vorwaerts, aber mit Reihe2(n) A(i,1)=(10^i); A(i,2)=Reihe2(A(i,1)); A(i,3)= A(i,2)- Grenzwert; end toc A % Ausgabe der neuen Matrix A %Reihe symsum vorwärts display('-------------') display('symsum vorwaerts:') tic for i=1:6 %Berechnung analog, allerdings mit symsum statt Reihe(n) A(i,1)=(A(i,1)); % Mithilfe der symsum Fkt von Matlab syms k A(i,2)=symsum(1/(k^4),k,1,A(i,1)); % wird die Reihe berechnet % symsum(Folge, Parameter, Anf, End) A(i,3)= A(i,2)- Grenzwert; end toc %Ausgabe Matrix A A %Reihe symsum vorwärts display('-------------') display('symsum rueckwaerts:') tic for i=1:6 %Berechnung analog symsum vorwärts, mit angepasster Folge A(i,1)=(10^i); syms k A(i,2)=symsum(1/((A(i,1)-k+1)^4),k, 1, A(i,1)); % durch ersetzen von k % mit n-k+1 läuft die % Reihe rueckwaerts A(i,3)= A(i,2)- Grenzwert; end toc A % Ausgabe Matrix A display('------------------------------------------') %%% %%% %%% %%% %%% %%% %%%

Es faellt auf, dass bei der Berechnung durch Reihe2 (rueckwaerts), symsum (vor und rueckwaerts) die gleiche Matrix herauskommt, im Gegensatz zur Funktion Reihe (vorwaerts). Es laesst sich somit vermuten, dass symsum die Reihe immer Rueckwarts berechnet, bzw. die kleinsten Summanden zuerst addiert. Aufgrund der Rundungsfehler und der Fehlerfortpflanzung erscheint dies auch das bessere (stabilere) Vorgehen.

Numerik Praktikum

Blatt 1

Sandra Krummenauer, Florian Volk

Aufgabe 4 a)

naive.m

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% Num - Prak, Blatt 1 , A4 a) %%%%% Sandra Krummenauer, Florian Volk %%%%% %%%%% Die Funktion naive(x,[a_0,...,a_n]) wertet das %%%%% Polynom a_n x^n + ... + a_0 x^0 an der Stelle x "naiv" aus. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function y = naive (x,a) % rechnet ein Polynom an der Stelle x naiv aus y = 0; n = length(a); for i=1:n y = y + a(i)*x.^(i-1); end y

% setzt die Funktion auf 0 % speichert die anzahl der Koeffizienten % Schleife ueber alle Koeffizienten % summiert die einzelnen Terme auf % gibt y zurueck

end

b) horner.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% Num - Prak, Blatt 1 , A4 b) %%%%% Sandra Krummenauer, Florian Volk %%%%% %%%%% Die Funktion horner(x,[a_0,...,a_n]) wertet das %%%%% Polynom a_n x^n + ... + a_0 x^0 an der Stelle x mithilfe %%%%% des Hornerschemas aus. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function y = horner(x,a) % rechnet ein Polymom an der Stelle x mit dem Hornerschema aus n = length(a); y = a(n); for i=1:n-1 y = y.* x + a(n-i); end y end

% % % % %

speichert die Anzahl der Koeffizienten setzt die Funktion auf den letzten Koeffizienten Schleife ueber alle Koeffizienten summiert die einzelnen Terme auf

% gibt y zurueck

Numerik Praktikum

Blatt 1

Sandra Krummenauer, Florian Volk

c) Aufgabe4.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% Num - Prak, Blatt 1 , A4 c) %%%%% Sandra Krummenauer, Florian Volk %%%%% %%%%% Dieses Script plottet mithilfe der Funktionen naive und horner %%%%% ausgewerteten Polynome a auf dem Intervall x %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Eingabe der Parameter a = [-512,2304,-4608,5376,-4032,2016,-672,144,-18,1]; %gegebenes Polynom x = linspace(-1.92,-2.08) %Wertebereich x fuer Plot disp('-------------') disp('plot:');

%Ausgabe Text in Command Window

tic figure plot(x,horner(x,a),x,naive(x,a)); % Erstellung des Plots mit geg Funktion title(' Plot Aufgabe 4 c) ' ) toc %%%%%%% % Die beiden Graphen unterscheiden sich um die Nullstelle zwischen den % y-Werten von -0.5 *10^(-10) bis 0.5 * 10^(-10). Dies geht vermutlich bei % bei diesen niedrigen Werten auf Rundungsfehler zurück, die sich durch d % die Algorithmen unterschiedlich fortpflanzen. Betrachtet den restlichen % Plot, so stimmen die beiden Graphen überein...


Similar Free PDFs