Numerische Kurvendiskussion mit MATLAB - RWTH

Werbung
Numerische Kurvendiskussion
mit MATLAB
Robert Schwann
MATLAB-Day 1.7.2008
Lehrstuhl für Allgemeine Elektrotechnik und
Datenverarbeitungssysteme
RWTH Aachen
Übersicht
2
ƒ
Darstellung einer Funktion und ihrer Ableitungen
ƒ
Einfache Suche der Nullstellen und Extrema
ƒ
Berechnung von Zwischenwerten (Interpolation)
ƒ
Darstellung von Kurvenscharen
Darstellung einer Funktion und ihrer Ableitungen
ƒ
Beispiel aus der Signalverarbeitung:
f ( x) =
ƒ
sin x
x
Darstellung in MATLAB:
x = -15 : 0.1 : 15;
y = sin(x)./x;
figure
plot(x,y,'r')
ƒ
3
Die Funktion hat bei (x=0,y=1) eine
stetig behebbare Definitionslücke
Darstellung einer Funktion und ihrer Ableitungen
4
Darstellung einer Funktion und ihrer Ableitungen
f ( x) =
ƒ
sin x
x
Analytische Berechnung der ersten und zweiten Ableitung:
f ′( x ) =
x ⋅ cos x − sin x
x2
ys=(x.*cos(x)-sin(x))./x.^2;
− x 2 ⋅ sin x − 2 x ⋅ cos x + 2 sin x
f ′′( x ) =
x3
yss=(-x.^2.*sin(x)-2*x.*cos(x)+2*sin(x))./x.^3;
5
Darstellung einer Funktion und ihrer Ableitungen
ƒ
Numerische Berechnung der ersten und zweiten Ableitung:
xd = ( x(1:end-1) + x(2:end) )/2;
yd = diff(y)./diff(x);
hold on
plot(xd,yd,'b')
xdd = ( xd(1:end-1) + xd(2:end) )/2;
ydd = diff(yd)./diff(xd);
plot(xdd,ydd,'g')
6
Darstellung einer Funktion und ihrer Ableitungen
7
Darstellung einer Funktion und ihrer Ableitungen
ƒ
Kontrolle: absoluter Fehler der zweiten Ableitung
plot(xdd,ydd-yss(2:end-1),'k--')
8
Darstellung einer Funktion und ihrer Ableitungen
9
Übersicht
10
ƒ
Darstellung einer Funktion und ihrer Ableitungen
ƒ
Einfache Suche der Nullstellen und Extrema
ƒ
Berechnung von Zwischenwerten (Interpolation)
ƒ
Darstellung von Kurvenscharen
Einfache Suche der Nullstellen und Extrema
ƒ
Prüfung benachbarter Wertepaare: Vorzeichenvergleich
y2
Geradensteigung m
x1
x0
x2
y1
ƒ
11
!
Bestimmungsgleichung ( x0 − x1 ) ⋅ m + y1 = 0
Einfache Suche der Nullstellen und Extrema
ƒ
Funktion zur Prüfung aller benachbarten Wertepaare:
function z = Nullstellen(x,y)
z = []; % Liste der Nullstellen
s = sign(y);
for n = 2 : length(s)
if s(n-1) * s(n) < 1
dx = x(n) - x(n-1);
dy = y(n) - y(n-1);
if dy == 0
z = [z x(n-1) x(n)];
else
x0 = x(n-1) - y(n-1) * dx / dy;
z = [z x0];
end
end
end
12
Einfache Suche der Nullstellen und Extrema
ƒ
Liste der Nullstellen im betrachteten Intervall:
xn = Nullstellen(x,y);
plot(xn,0*xn,'ko')
ƒ
Liste der lokalen Extrema:
xe = Nullstellen(xd,yd);
plot(xe,sin(xe)./xe,'kx')
13
Einfache Suche der Nullstellen und Extrema
14
Übersicht
15
ƒ
Darstellung einer Funktion und ihrer Ableitungen
ƒ
Einfache Suche der Nullstellen und Extrema
ƒ
Berechnung von Zwischenwerten (Interpolation)
ƒ
Darstellung von Kurvenscharen
Interpolation
ƒ
Bisher: Verbindung der Stützstellen einer Funktion
durch gerade Linien
ƒ
Genauer: Verwendung von Funktionen höherer Ordnung
ƒ
Anschauliches Beispiel: Verbindung der Stützstellen
durch gekrümmte Teilstücke, sogenannte „Splines“
ƒ
Das sind abschnittsweise definierte, ganzrationale Polynome
der Form
s( x ) = a ⋅ x 3 + b ⋅ x 2 + c ⋅ x + d
16
Interpolation
ƒ
Darstellung einer „glatten“ Funktion
anhand weniger Stützstellen:
xw = -15 : 2 : 15;
yw = sin(xw)./xw;
figure
plot(xw,yw,'ko--')
17
Interpolation
18
Interpolation
ƒ
Originalfunktion:
x = -15 : 0.1 : 15;
y = sin(x)./x;
figure
plot(x,y,'r')
ƒ
Rekonstruktion:
yi = spline(xw,yw,x);
plot(x,yi,'b')
19
Interpolation
20
Interpolation
ƒ
absoluter Fehler:
plot(x,yi-y,'k--')
21
Interpolation
22
Übersicht
23
ƒ
Darstellung einer Funktion und ihrer Ableitungen
ƒ
Einfache Suche der Nullstellen und Extrema
ƒ
Berechnung von Zwischenwerten (Interpolation)
ƒ
Darstellung von Kurvenscharen
Darstellung von Kurvenscharen
ƒ
Beispiel: ganzrationale Funktion mit einem Scharparameter
f a ( x ) = x 2 ⋅ ( x − a ) ⋅ ( x − 2)
ƒ
Die Produktdarstellung zeigt eine doppelte Nullstelle
bei x=0 und einfache Nullstellen bei x=a und x=2.
x = -2 : 0.01 : 3;
c = 'rgbcm'; % Linienfarbe
figure
for a = -1 : 3
y = x.^2 .* (x-a) .* (x-2);
plot(x,y,c(a+2))
hold on
end
24
Darstellung von Kurvenscharen
25
Darstellung von Kurvenscharen
26
ƒ
a=0: Sattelpunkt bei x=0 (grüne Kurve)
ƒ
a=2: doppelte Nullstelle bei x=2 (Berührung der x-Achse)
Darstellung von Kurvenscharen
27
Herunterladen