Und gleich ein paar Korrekturen hintennach ...
S2001 - Aufgabe 1:
Fuer x nicht in [-
1.10554159678513328303; -
.90453403373329086793] und x nicht in [.90453403373329086793,
1.10554159678513328303]
S2001 - Aufgabe 3:
2 * I - A * X:
^ N^2 Flops
^^^^^^^^^
Das geht wahrscheinlich auch mit N Flops (bei I ist fast alles
0);
WS2000/2001 - Aufgabe 4:
Die Mittelpunkte koennen natuerlich voellig voneinander Abweichen, obwohl die Kreise eigentlich konzentrisch sein muessten. Die Abweichnung "koennte" man auch noch beruecksichtigen.
>
>
> ########## ########## ##########
########## ########## ##########
> ########## # SS 2000 ##########
>
>
> Aufgabe 1)
> ---
>
> % 1.a)
>
> t = [ ... ]; % siehe Angabe
> r = [ ... ]; % siehe Angabe
>
> % radius:
> function R = radius(T);
>
> global t, r;
>
> R = spline(t, r, T);
>
> % Hauptprogramm
>
> tt = linspace(- .5 * pi, .5 * pi, 1001);
> rr = radius(tt);
>
> x = r * cos(t);
> y = r * sin(t);
> xx = rr * cos(tt);
> yy = rr * sin(tt);
>
> plot (
> x, y, 'b.',
> xx, yy, 'r-', -xx, yy, 'r-',
> [0 5], [0 5], 'b.-',
> [0 5], [0 -5], 'b.-'
> );
>
> % 1.b)
>
> M = size(max(t));
> m = 1:M;
> q = linspace(1, M, 1001);
> X = spline(m, [0 x 0], q);
> Y = spline(m, [0 y 0], q);
>
> hold on;
> plot(X, Y, 'b-');
>
>
> % 1.a)
>
> t = [ ... ]; % siehe Angabe
> r = [ ... ]; % siehe Angabe
>
> % radius:
> function R = radius(T);
>
> global t, r;
>
> R = spline(t, r, T);
>
> % Hauptprogramm
>
> tt = linspace(- .5 * pi, .5 * pi, 1001);
> rr = radius(tt);
>
> x = r * cos(t);
> y = r * sin(t);
> xx = rr * cos(tt);
> yy = rr * sin(tt);
>
> plot (
> x, y, 'b.',
> xx, yy, 'r-', -xx, yy, 'r-',
> [0 5], [0 5], 'b.-',
> [0 5], [0 -5], 'b.-'
> );
>
> % 1.b)
>
> M = size(max(t));
> m = 1:M;
> q = linspace(1, M, 1001);
> x = spline(m, [0 x 0], q);
> Y = spline(m, [0 y 0], q);
>
> hold on;
> plot(X, Y, 'b-');
>
>
> Aufgabe 2)
> ---
>
> % 2.a)
>
> % Herzhaelfte schliessen
> X = [X X(1)];
> Y = [Y Y(1)];
>
> a = 2 * trapz(X, Y);
>
> % 2.b)
>
> 6 Punkte -> 5 kubische Kurven mit jeweils 3 Unbekannten (nicht vier,
> wegen y_m).
>
> 5 * 3 = 15 Unbekannte;
>
> ( 5 + 2 * 4 = 13 Unbekannte durch die Punktekoordinaten und 1. sowie
> 2. Ableitungen an den Punkten bestimmt, zwei weitere durch
> Randbedingungen)
>
> Tridiagonales System, Lösung mit Progonki:
> O(Progonki) = 8 * (N - 1) (bitte nachrechnen)
>
> also in diesen Fall: 8 * (6 - 1) = 40 (?);
>
> Flops zählen durch passendes Einfügen von
> % f1=flops(); f2=flops(); f=f2-f1
> oder ähnlich ...
>
>
> Aufgabe 3)
> ---
>
> % 3.a)
>
> % sinfak.m
> function y = sinfak(x);
>
> y = sin(pi .* gamma(x + 1));
>
> % Hauptprogramm
> x = linspace(0, 3, 1001);
> y = sinfak(x);
>
> plot(x, y);
>
> I = quad8(sinfak, 0, 3)
>
>
> % 3.b)
>
> f = inline('sinfak(x) - 3');
> u = fzero(f, 3);
> f = inline('sinfak(x) - 4');
> v = fzero(f, 3);
> f = inline('sinfak(x) - 5');
> w = fzero(f, 3);
>
> % Benutzt wird ein Mischmasch aus Bisektion, goldener Schnitte und %
> parabolischer Näherung (?). %
>
> Aufgabe 4)
> ---
>
> % 4.a)
> x = [...];
> y = [...];
>
> A = [x' .^ 4, x' .^ 2, 1];
> b = y';
>
> c = A \ b;
> c = [c(3) 0 c(2) 0 c(1)];
>
> xx = linspace(min(x), max(x), 1001);
> yy = polyval(c, xx);
>
> hold on
> plot(x, y, 'r.', xx, yy, 'g-');
>
> % 4.b)
> %
> % Ellipsengleichung anpassen:
> % b^2 * x^2 + a^2 * y^2 = 1;
> %
> % Überbestimmtes LGS lösen:
> %
>
> B = [x' .^ 2; y' .^ 2];
> d = ones(size(x, 2));
>
> ab = B \ d;
>
> a = sqrt(ab(1));
> b = sqrt(ab(1));
>
>
> Aufgabe 5)
> ---
>
> 5.a)
>
> Verlust von mehr als einer Dezimalziffer, wenn
>
> | sqrt(x^2 + 3) + sqrt(pi) |
> | --- | >= 10^1
> | sqrt(x^2 + 3) - sqrt(pi) |
>
> Betrachtung nur für x >= Null, da symmetrisch (Funktion gerade).
>
> 1. Fall:
> sqrt(x^2 + 3) - sqrt(pi) >= 0
> ==> sqrt(x^2 + 3) >= sqrt(pi)
> ==> x^2 + 3 >= pi
> ==> x^2 >= pi - 3
> ==> x >= sqrt(pi - 3)
> ==> x >= .37628799288549354197
>
> dann gilt:
> sqrt(x^2 + 3) + sqrt(pi) >= 10 * sqrt(x^2 + 3) - 10 * sqrt(pi); ==> 9
> * sqrt(x^2 + 3) <= 11 * sqrt(pi)
> 11
> ==> x^2 + 3 <= -- * sqrt(pi)
> 9
> 121
> ==> x^2 <= --- * pi - 3
> 81
> ==> x^2 <= 1.69299643314030841793
> ==> x <= 1.30115196389211526176
> ==> Immer erfüllt
>
> 2. Fall:
> x <= .37628799288549354197
>
> dann gilt:
> sqrt(x^2 + 3) + sqrt(pi) >= - 10 * sqrt(x^2 + 3) + 10 *
sqrt(pi);
> ==> 11 * sqrt(x^2 + 3) >= 9 * sqrt(pi)
> 81
> ==> x^2 <= --- * pi - 3
> 121
> ==> x^2 <= -.89695037239030369989
>
>
> Für x aus [-1.30115196389211526176;
1.30115196389211526176]; Wobei ich
> mir sicher bin, dass ich mich verrechnet habe ... (!)
>
> % 5.b)
> Ich mach' jetzt nicht dasselbe Spielchen noch zwei mal ...
>
>
> ########## ########## ##########
########## ########## ##########
> ############# # WS 2000/01
#############
>
>
> Aufgabe 1)
> ---
>
> Eine Dezimalstelle Verlust:
> pi t^2
> -- + ---
> 4 pi
> --- >= 10^1
> pi t^2
> -- - ---
> 4 pi
>
>
> 1. Fall:
>
> pi t^2
> -- - --- >= 0
> 4 pi
>
> t^2 pi
> => --- <= --
> pi 4
> pi^2
> => t^2 <= ---- (t > 0)
> 4
> pi
> => t <= --
> 2
>
> dann gilt:
>
> pi / 4 + t^2 / pi >= 10 * pi / 4 - 10
* t / pi
> ==> 11 * t^2 / pi >= 9 * pi / 4
> ==> 11 * t^2 >= (9 / 4) * pi^2
> 9
> ==> t^2 >= -- * pi^2
> 44
> ==> t >= .45226701686664543396 * pi
>
> 2.Fall:
> pi / 4 + t^2 / pi >= - 10 * pi / 4 + 10 * t / pi
> ==> 9 * t^2 / pi <= 11 * pi / 4
> ==> 9 * t^2 <= (11 / 4) * pi^2
> 11
> ==> t^2 <= -- * pi^2
> 36
> ==> t <= .30555555555555555555
>
> ==>
> Für t in [.30555555555555555555 * pi;
.45226701686664543396 * pi];
> ==> t in [.95993108859688126728;
1.42083873764922440461];
(!)
>
> 1.b)
> Wieder mal Progonki:
>
> Für die Lösung eines LGS mit N Gleichungen: 8 * (N - 1)
> Für die Lösung von N LGS mit N Gleichungen: 8 * (N - 1) * N = 8
* N^2
> (?)
>
>
> Aufgabe 2)
> ---
>
> % 2.a)
>
> f = inline('exp(x) - ln(x + 1) - tan(x)');
> x = fzero(f, 1);
>
> % Benutzt wird ein Mischmasch aus Bisektion, goldener Schnitte und %
> parabolischer Näherung. %
>
> % 2.b)
>
> % Erst mal einen zweiten Punkt raten:
> % f(1) = 2.71828182845905 -
0.693147180559945 - 1.5574077246549 =
> .467726923244205 > 9 % f(0) = 1 - 0 - 0 = 1
> % f(2) = 8.47548367352406
> % f(0.5) = 0.696953672748173
> % f(1.5) = -10.5360216087078
> % Ufffff!
> %
> % Bisektion: Suchen zwischen 1 und 1.5 ...
>
> x1 = 1; y1 = f(x1);
> x2 = 1.5; y2 = f(x2);
> while (abs(x2 - x1) > eps),
> x3 = (x1 + x2) / 2; y3 = f(c3);
>
> if (y1 * y3 > 0),
> x1 = x3; y1 = y3;
> else
> x2 = x3; y2 = y3;
> end;
> end;
>
> % Gibt bei jeder Iteration eine Binärstelle
> % (Halbierung des Intervalls)
> % Also etwa (3 / 10) Dezimalstelle
> %
> % Notwendig: 4 * (10 / 3) = 40 / 12 = 13.3, also 14 Binärstellen %
> Anfangsgenauigkeit: 1 Binärstelle %
==> 13 Iterationen (!)
>
>
> Aufgabe 3)
> ---
>
> % 3.a)
>
> for n = 1:N,
>
> % Endpunkt nicht vergessen!
> m = 1:M + 1;
> xs = spline(m, [X(:,n) X(1,n)]);
> ys = spline(m, [Y(:,n) Y(1,n)]);
>
> t = linspace(1, M, 11);
> x(:,n) = ppval(xs, t);
> y(:,n) = ppval(ys, t);
>
> a(n) = trapz(x, y);
> end
>
> % Differenzen bilden
> a = a(2:end) - a(1:end - 1);
>
> % 3.b)
>
> hold on
> for n = 1:N,
> plot(x(:,n),y(.,n))
> end;
>
>
> Aufgabe 4)
> ---
>
> % 4.a)
>
> % Es gilt (siehe Übung 5):
> % (x - x0) ^ 2 + (y - y0) ^ 2 = r^2
> % ==> x^2 - 2 * x * x0 + x0^2 + y^2 - 2 * y * y0 + y0 ^ 2 = r^2 % Sei
> z = r^2 - x0^2 + y0^2 % ==> x0 * 2 * x + y0 * 2 * y + z = x^2 + y^2
>
> for n = 1:N,
> B = [2 * X(:,n), 2 * Y(:,n), 1];
> b = [- x .^ 2 - y .^ 2];
> c = B \ b;
>
> x0 = c(1);
> y0 = c(2);
> r(n) = sqrt(x0^2 + y0^2 + c(3);
> end;
>
> a = a ./ mean(r);
>
> % 4.b)
>
> % Triviales Durchprobieren:
>
> T = max(size(A));
>
> % Für alle Baumringe, nicht nur für 8... (!)
> max_d = Inf;
> index = 0;
> for t = 1:T - N,
> d = sum(abs(a - T(t:t + N)));
> if (d > max_d),
> max_d = d;
> index = t;
> end;
> end
> index
>
>
> Aufgabe 5)
> ---
>
> % 5.a)
>
> A = [...];
> B = [...];
> C = [...];
> T = [...];
>
> Z = [1 ./ A, 2 ./ B, C];
>
> r = Z \ T';
>
> x = r(1)
> y = r(2)
> z = r(3)
>
> % 5.b)
>
> System hat keine speziellen Eigenschaften
> ==> LU-Faktorisierung
>
> A = B' * B
> - Transponieren: keine Flops
> - Für jedes Element in A: 5 + 4 = 9 Flops
> (4 mal Addieren, 5 mal Multiplizieren)
> - 9 Elemente a 9 flops = 81 flops
>
> b = B' * c
> - Für jedes Element in b: 5 + 4 = 9 Flops
> - 3 Element a 9 flops = 27 Flops
>
> x = B \ b
> - Aufstellen von L und U: (2 / 3) * N^3 - (1 / 2) * N^2 - (1 / 6) * N
> = 18 + 9 / 2 + 1 / 2 = 23
> - Lösen: N^2 = 9
>
> 81 + 27 + 23 + 9 = 140 (?)
>
>
> ########## ########## ##########
########## ########## ##########
> ########## # SS 2001 ##########
>
>
> Aufgabe 1)
> ---
>
> x != 0!
> Symmetrisch, also nur für x > 0.
>
> |x^2 + x^4|
> |---| <= 10
> |x^2 - x^4|
>
> % Man könnte auch
> % 1 + x^2 + x^4
> % ---
> % 1 + x^2 - x^4
> % das wäre exakter,
> % aber Faulheit siegt ...
>
> 1.Fall:
> x^2 - x^4 >= 0
> ==> 1 - x^2 >= 0
> ==> x^2 <= 1
> ==> x <= 1
>
> Dann gilt:
> x^2 + x^4 >= 10 * x^2 - 10 * x^4
> ==> 1 + x^2 >= 10 - 10 * x^2
> ==> 11 * x ^ 2 >= 9
> 9
> ==> x^2 >= --
> 11
> ==> x >= .90453403373329086793
>
> 2. Fall:
> x > 1
>
> Dann gilt:
> x^2 + x^4 >= - 10 * x^2 + 10 * x^4
> ==> 1 + x^2 >= - 10 + 10 * x^2
> ==> 9 * x^2 <= 11
> 11
> ==> x^2 <= --
> 9
> ==> x <= 1.10554159678513328303
>
> Für x nicht in [- 1.10554159678513328303;
.90453403373329086793] und x
> nicht in [.90453403373329086793;
1.10554159678513328303]; ist der
> Genauigkeitsverlust kleiner als eine Dezimalstelle (!).
>
>
> Aufgabe 2)
> ---
>
> A = sparse(7,7);
>
> A(1,4) = 1; A(1,7) = 1;
> A(2,7) = 1;
> A(3,4) = 1;
> A(4,1) = 1; A(4,3) = 1; A(4,5) = 1;
A(4,7) = 1;
> A(5,4) = 1; A(5,6) = 1;
> A(6,5) = 1; A(6,7) = 1;
> A(7,1) = 1; A(7,2) = 1; A(7,4) = 1;
A(7,6) = 1;
>
> spy(A);
>
> 16 Einträge mit 2 + 2 + 4 Bytes = 128 Bytes
> Vollständige Matrix: 49 * 4 Bytes = 196 Bytes
> 128
> 1 - --- = .34693877551020408164 ~= 35%
(?)
> 196
>
>
> Aufgabe 3)
> ---
>
> X = (2 * I - A * X) * X
>
> 2 * I:
> ^
> Keine Flops
>
> A * X:
> ^
> N^2 * (N - 1) Flops
>
> 2 * I - A * X:
> ^
> N^2 Flops
>
> (2 * I - A * X) * X
> ^
> N^2 * (N - 1) Flops
>
> Insgesamt:
> 2 * N^2 * (N - 1) + N^2 ~= 2 * N^3 + N^2 Flops (?)
>
>
> Aufgabe 4)
> ---
>
> Jahr = [...];
> Zahl = [...];
>
> y = log(Zahl)';
>
> N = max(size(Zahl));
> A = [ ones(N, 1), Jahr', Jahr' .^ 2];
>
> x = A \ y;
>
> u = x(1);
> v = x(2);
> w = x(3);
>
> tt = linspace(1.6, 2.1, 1001);
> yy = exp(u + v * tt + w * tt .^ 2);
>
> plot(Jahr, Zahl, 'n.', tt, yy, 'b-');
>
>
> Aufgabe 5)
> ---
>
> T = [0 50 200 2000 2214];
> % Mittlere Tiefen:
> T = (T(2:end) - T(1:end - 1)) / 2;
>
> % 4 Splines:
> T0 = [T0 T0(1)];
> N = max(size(T0)) + 1;
> n = linspace(1, N, 1001);
> x = spline(1:N, T0(:,1), n);
> y = spline(1:N, T0(:,2), n);
> a(1) = trapz(x, y);
>
> T1 = [T1 T1(1)];
> N = max(size(T1)) + 1;
> n = linspace(1, N, 1001);
> x = spline(1:N, T1(:,1), n);
> y = spline(1:N, T1(:,2), n);
> a(2) = trapz(x, y);
>
> T2 = [T2 T2(1)];
> N = max(size(T2)) + 1;
> n = linspace(1, N, 1001);
> x = spline(1:N, T2(:,1), n);
> y = spline(1:N, T2(:,2), n);
> a(3) = trapz(x, y);
>
> T4 = [T4 T4(1)];
> N = max(size(T4)) + 1;
> n = linspace(1, N, 1001);
> x = spline(1:N, T4(:,1), n);
> y = spline(1:N, T4(:,2), n);
> a(4) = trapz(x, y);
>
> a(5) = 0;
>
> % Flächen subtrahieren
> a = a(2:end) - a(1:end - 1);
>
> % Volumen (näherungsweise)
> V = a .* T (?)
>
>
> Aufgabe 6)
> ---
>
> x = [ ... ];
> t = [ 0 50 200 2000 2000 2000 2000 200 50 0 ];
>
> p = polyfit(x, t, 9);
>
> tt = linspace(min(t), max(t), 1001);
> xx = polyval(p, tt);
>
> plot([min(t) max(t)], [0, 0], 'b-'
> xx, tt, 'b-'
> );
>
>
> Aufgabe 7)
> ---
>
> f = inline('abs(norm([580 173] - x)) + abs(norm([383 53] - x)) +
> abs(norm([276 247] - x))', 'x'); % Quadratisch von x und y abhängig,
> also nur ein (1, solo uno) Extremum %
==> Startpunkt ist egal x =
> fminsearch(f, [580 173])
>
> Aufgabe 8)
> ---
>
> A = [1 0 0; 0 1 0; 0 0 1; 2 2 2];
> y = [8; 6; 5; 25];
>
> x = A \ y;
>
> a = x(1)
> b = x(2)
> c = x(3)
>