Anzufertigen sind die MATLAB-Funktionen reihe und eulernum. Die Funktion reihe löst die Reihenentwicklung einiger Funktionen, und die Funktion eulernum berechnet die Eulerschen Zahlen, die für eine spezielle Reihe notwendig sind.
Darüber hinaus benötigt man ein MATLAB-Skript uebreihe, welches die Funktionen testet und die Ergebnisse in einfachen Plots darstellt. Exemplarische Plots sind nach der Beschreibung der Übung eingefügt.
(12.7) | ||
(12.8) |
In allen numerischen Programmiersprachen kann man solche unendlichen Reihen natürlich nur näherungsweise auswerten, da die Summation von unendlich vielen Termen unendlich lange dauern würde. Daher gibt man sich mit der endlichen Teilsumme
Summen dieser Art kann man in MATLAB sehr gut ohne die Verwendung von for-Schleifen programmieren. Nützlich sind dabei folgende Informationen:
x = [-2:2]; k = [0:5]; [xx,kk] = meshgrid(x,k);erzeugen
A=xx.^(2*kk+1)
kann man nun z.B. für alle
Werte von und gleichzeitig ausrechnen. Die Summe über alle
-Werte kann man dann mit Hilfe des sum(A,1)-Befehles
erhalten.
f*A
) für alle
Werte von gleichzeitig den jeweiligen Wert der Teilsumme erhalten.
Der Aufruf der MATLAB-Funktion reihe soll folgendermaßen aussehen
[r,u,a] = reihe(typ,x,n)wobei typ eine Schaltvariable (switch), x ein Array von -Werten und n der Maximalwert für die -Werte ist. Ausgegeben werden sollen die Teilsummen r, die Werte der Funktion u (hier z.B. ) und eine eventuelle analytische Lösung a für die endlichen Teilsummen der Reihe.
Alle Outputwerte müssen die gleiche Größe wie haben. Dazu merkt man sich am Anfang des Programms die Größe von (size), macht aus dem Array einen Vektor (colon). Am Ende des Programms kann man dann mit reshape sicherstellen, dass die richtige Größe zurückgegeben wird.
typ='sin'
). Für geben Sie lauter NaN zurück.
Stellen Sie mit Hilfe des Skripts uebreihe einen Vergleich zwischen der Teilsumme der Reihe und der Funktion für verschiedene Werte von dar.
'geom'
den Wert r der
geometrischen Reihe 12.13, in a den analytischen
Wert aus 12.13 und in u den Wert der unendlichen
Reihe 12.14. Die Fallunterscheidungen können Sie mit
Hilfe der logischen Indizierung durchführen.
Probieren Sie in uebreihe das Konvergenzverhalten aus und stellen Sie die Ergebnisse für r, a und u gemeinsam als Funktion von x dar.
'sechasymp'
.
Geben Sie in r die Werte der Teilsumme, in u die Werte der Funktion sech und in a einen Vektor mit NaN zurück.
(12.16) | ||
(12.17) |
typ='sech'
). Außerhalb
des Konvergenzintervalls geben Sie NaN zurück.
Die Eulerschen Zahlen sind durch folgende Reihe definiert
e = eulernum(k,lmax)berechnet werden sollen. Hier wird nun über summiert und der -Vektor spielt die Rolle, die vorher gespielt hat, d.h. für jeden Wert von bekommt man einen Wert von . Als Defaultwert für lmax kann man 10 verwenden. Da alle Eulerzahlen ganzzahlig sind, empfiehlt es sich, am Ende der Funktion den Befehl round zu verwenden. Damit werden leichte numerische Ungenauigkeiten ausgeglichen, und man muss lmax nicht größer wählen. Zur Kontrolle hier die Werte von bis , die sich als 1, -1, 5, -61, 1385, -50521, 2702765 ergeben. Diese sollten Sie beim Aufruf von
eulernum([0:6])
erhalten.
Vergleichen Sie im Skript uebreihe die Ergebnisse der beiden Reihenentwicklungen und stellen Sie sie graphisch dar.
Winfried Kernbichler 2005-04-26