AuK/Hilfsmittel Mathematik 1 WS13-14
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
'''<b>Autoren:</b>'''
Andre Krause s3ankrau@stud.hszg.de
Roman Stange s3rostan@stud.hszg.de
<language>Scheme</language>
<language>Scheme</language>
==Approximation von Funktionen==
[[Bild:S3ankrau_Plot_neu.JPG|right|thumb|300px|Palindrom Vergleichsalgorithmus]]
'''Motivation:'''
Die Erfahrungen und Beobachtungen haben bereits gezeigt, dass bei grafischen Auswertungen der Effizienz (Verhältnis der untersuchten Größe zur Zeit), mit Hilfe der Darstellung in einem karthesischen Koordinatensystem nur selten glatte Funktionsgraphen auftreten (s. Übung 1 - Palindrom-Vergleichsalgorithmus). Die vielen gesammelten Messpunkte passen mehr oder weniger gut zu einer theoretischen Funktion, die fehlinterpretiert werden kann. Aus diesem Grund wird die optimale Funktion gesucht, die sich den gegebenen Wertepaaren am genauesten annähert. Diese mathematische Annäherung wird als Approximation bezeichnet. Dafür wendet man mathematische Regeln (z.B. Methode der kleinsten Fehlerquadrate) an, aber auch geeignete Software (z.B. CAS), um die optimale Approximationsfunktion zu ermitteln.
===Exponentialfunktionen===
<div style="color:black; background-color:greenyellow; border:1px dotted midnightblue;">
Funktionen der Form <math>y = T(n) = a \cdot b^n</math>, mit <math>b\ge 1</math> können in einem Koordinatensystem mit logarithmischen Maßstab für die Ordinantenachse als Gerade <math>z = f(n) = n \cdot \alpha + \beta</math>, mit <math>z= \log y</math>, <math>\alpha = \log b</math> (Anstieg der Geraden) und <math>\beta = \log a</math> (Schnittpunkt mit der <math>y</math>-Achse) dargestellt werden, was sich aus folgender Umformung ergibt:
<math> \log y = f(n) = log(a \cdot b^n) = n \cdot \log b + \log a</math>
</div>
Beispiel:
<math>y = a \cdot e^{bx}</math>
<br>
Bei physikalischen Experimenten etwa, werden meist Werte für <math>x</math> vorgegeben und solche für <math>y</math> gemessen. In Wertetabellen sammelt man die Ergebnisse. Trägt man <math>y</math> gegen <math>x</math> auf, so kann man die Konstante <math>a</math> prinzipiell leicht bestimmen, indem man eine Kurve durch die Messpunkte zeichnet und ihren Schnittpunkt mit der y-Achse bei <math>x=0</math> abliest. In der Praxis erfordert das allerdings schon einiges zeichnerisches Geschick.<br>
Für <math>x=0</math> ist <math>y = a \cdot e^0 = a</math>.<br><br>
In der Praxis erfordert das allerdings schon einiges zeichnerisches Geschick. Den Wert der Konstanten <math>b</math> aber wird man höchstens grob abschätzen können.<br>
{|class="wikitable" style="border: 2px solid lightgray; margin:10px 10px 1em 1em; padding-right: 10px;"
! colspan="3" style="background-color:thistle;"|Wertetabelle für <math> y = 2 \cdot e^x </math>
|-
| width="100pt" |'''<math>x</math>'''
| width="100pt" |'''<math>y</math>'''
| width="100pt" |'''<math>\ln (y)</math>'''
|-
|0
|2.0
|0.69
|-
|1
|5.4
|1.69
|-
|2
|14.8
|2.69
|-
|3
|40.2
|3.69
|-
|4
|109.2
|4.69
|}<br>
Einfacher und genauer sind <math>a</math> und <math>b</math> zu bestimmen, wenn nicht <math>y</math>, sondern der Logarithmus <math>\ln(y)</math> gegen <math>x</math> aufgetragen wird. Aus der Gleichung <math>y = a \cdot e^{bx}</math> wird durch Logarithmieren nämlich<br><br>
<math>\ln(y) = \ln(a \cdot e^{bx})</math><br>
<math>\ln(y) = \ln(a) + bx \cdot \ln(e)</math><br>
<math> \ln(y) = \ln(a) + bx</math><br><br>
Man erhält eine Geradengleichung. Im Diagramm ergibt sich eine Gerade mit der Steigung <math>b</math>, welche die Ordinate für <math>x=0</math> im Punkt <math>\ln(a)</math> schneidet. Die Gerade ist einfacher zu zeichnen, und ihre Steigung durch ein Steigungsdreieck leicht zu bestimmen.<br><br>
<math>b = \frac {\Delta \ln y}{\Delta x}</math>
{|
|[[Bild:Visvitalis_Graph_exp_01a.png|thumb|none|250px|Expotentialfunktion ohne logarithmierter y-Achse]]
|[[Bild:Visvitalis_Graph_exp_01b.png|thumb|none|250px|Expotentialfunktion mit logarithmierter y-Achse]]
|[[Bild:Visvitalis_Graph_exp_01_anstieg.png|thumb|none|250px|Expotentialfunktion mit Anstieg <math>b</math>]]
|}
====Lineare Regression====
Im vorigen Abschnitt wurde die Ermittlung der gesuchten Gerade durch Einsetzen von Wertepaaren in ein Koordinatensystem mit logarithmischer y-Achse behandelt. Diese Methode ist jedoch nicht hundertprozentig genau. Deshalb ist es notwendig, die approximierte Gerade durch die so genannte lineare Regression näher zu bestimmen.
Die zugehörige Geradengleichung lautet:
<math>y = f(n) = a \cdot n + b</math>
(a steht für die Steigung der Geraden, b für den Schnittpunkt mit der y-Achse)
Damit sich die Gerade möglichst nah an den verstreuten Messpunkten befindet, muss der maximale Abstand zu den Wertepunkten minimal sein.
<math>\max\mid T(n) - (a\cdot n+b)\mid \rightarrow minimal</math>
Sollte es jedoch den Fall geben, dass es ein oder mehrere Wertepaare gibt, die sich relativ weit von den übrigen befinden, wird die gesuchte Regressionsgerade sehr ungenau. Daher wird die gegebene Gleichung folgendermaßen angepasst.
<math>\sum_{n} \mid T(n) - (a\cdot n+b)\mid \rightarrow minimal</math>
Das bedeutet, dass nun die Summe aller Abstände minimal sein soll. Dadurch verlieren die größeren Abstände, die vorher ein Problem hätten darstellen können, an Gewichtung. Hieraus entsteht aber ein neues Problem: Zur Ermittlung des Minimums ist die 1. Ableitung der Summe nötig. Die Betragsfunktion an der Stelle <math>x=0</math> ist jedoch nicht differenzierbar.
Zur Eliminierung dieses Problems wird die Methode der kleinsten Fehlerquadrate nach Gauss genutzt. Dadurch wird der Umstand der Differenzierbarkeit gelöst, das Minimum aber nicht beeinflusst.
<math>\sum_{n} (T(n) - (a\cdot n+b))^2 \rightarrow minimal</math>
Um nun das Minimum zu erhalten, ist es notwendig, die erste Ableitung gleich 0 zu setzen.
Nach a abgeleitet:
<math>\frac{\partial}{\partial a} = 2\codt\sum_{n=1}^{r} (T(n) - (a\cdot n+b))\cdot(-n) \stackrel{!}{=} 0</math>
Nach b abgeleitet:
<math>\frac{\partial}{\partial b} = 2\codt\sum_{n=1}^{r} (T(n) - (a\cdot n+b))\cdot(-1) \stackrel{!}{=} 0</math>
Durch Umformung erhält man anschließend die sogenannten Normalgleichungen.
<math>= a \sum_{n=1}^{r}n^2 + b \sum_{n=1}^{r}n = \sum_{n=1}^{r}n \cdot T(n)</math><br><br>
<math>= a \sum_{n=1}^{r}n + r \cdot b = \sum_{n=1}^{r}T(n)</math><br><br>
Für die Geradengleichung wird nun nach <math>a</math> bzw. nach <math>b</math> umgestellt.<br><br>
<math>= a \sum_{n=1}^{r}n + r \cdot b = \sum_{n=1}^{r}T(n)</math><br><br>
<math>= r \cdot b = \sum_{n=1}^{r}T(n) - a \sum_{n=1}^{r}n</math><br><br>
<math>= b = \frac{\sum \limits _{n=1}^{r}T(n) - a \sum \limits _{n=1}^{r}n}{r}</math><br><br>
<math>= a \sum_{n=1}^{r}n^2 + \left(\frac{\sum \limits _{n=1}^{r}T(n) - a \sum \limits _{n=1}^{r}n}{r}\right) \cdot \sum_{n=1}^{r}n = \sum_{n=1}^{r}n \cdot T(n)</math><br><br>
<math>= \frac{r \cdot a \sum \limits _{n=1}^{r}n^2 + \sum \limits _{n=1}^{r}n \cdot \left(\sum \limits _{n=1}^{r}T(n) - a \sum \limits _{n=1}^{r}n\right)}{r} = \sum_{n=1}^{r}n \cdot T(n)</math><br><br>
<math>= r \cdot a \sum \limits _{n=1}^{r}n^2 + \sum \limits _{n=1}^{r}n \cdot \left(\sum \limits _{n=1}^{r}T(n) - a \sum \limits _{n=1}^{r}n\right) = r \cdot \sum_{n=1}^{r}n \cdot T(n)</math><br><br>
<math>= r \cdot a \sum \limits _{n=1}^{r}n^2 + \sum \limits _{n=1}^{r}n \cdot \sum \limits _{n=1}^{r}T(n) - a {\left(\sum \limits _{n=1}^{r}n\right)}^2 = r \cdot \sum_{n=1}^{r}n \cdot T(n)</math><br><br>
<math>= r \cdot a \sum \limits _{n=1}^{r}n^2 - a {\left(\sum \limits _{n=1}^{r}n\right)}^2 = r \cdot \sum_{n=1}^{r}n \cdot T(n) - \sum \limits _{n=1}^{r}n \cdot \sum \limits _{n=1}^{r}T(n)</math><br><br>
<math>= a \cdot \left(r \cdot \sum \limits _{n=1}^{r}n^2 - {\left(\sum \limits _{n=1}^{r}n\right)}^2\right) = r \cdot \sum_{n=1}^{r}n \cdot T(n) - \sum \limits _{n=1}^{r}n \cdot \sum \limits _{n=1}^{r}T(n)</math><br><br>
Daraus ergeben sich die Formeln für <math>a</math> und <math>b</math>. Mit den gegebenen Messwerten kann anschließend die Regressionsgerade berechnet werden.<br><br>
<div style="color:black; background-color:greenyellow; border:1px dotted midnightblue;">
<math>a = \frac{r \cdot \left(\sum \limits _{n=1}^{r}n \cdot T(n)\right) - \sum \limits _{n=1}^{r}n \cdot \sum \limits _{n=1}^{r}T(n)}{r \cdot \sum \limits _{n=1}^{r}n^2 - {\left(\sum \limits _{n=1}^{r}n\right)}^2}</math>
</div><br>
<div style="color:black; background-color:greenyellow; border:1px dotted midnightblue;">
<math>b = \frac{\left(\sum \limits _{n=1}^{r}n^2\right) \cdot \left(\sum \limits _{n=1}^{r}T(n)\right) - \left(\sum \limits _{n=1}^{r}n \cdot T(n)\right)\cdot \sum \limits _{n=1}^{r}n}{r \cdot \sum \limits _{n=1}^{r}n^2 - {\left(\sum \limits _{n=1}^{r}n\right)}^2}</math>
</div>
====Beispiel====
Mit gegebenen Wertepaaren kann nun die Regressionsgerade durch Einsetzen in die im vorigen Abschnitt hergeleiteten Formeln berechnet werden.
Für dieses Beispiel werden folgende Wertepaare angenommen:
{|class="wikitable" style="border: 2px solid lightgray; margin:10px 10px 1em 1em; padding-right: 10px;"
! colspan="2" style="background-color:thistle;"|Wertepaare
|-
| width="100pt" |'''<math>n</math>'''
| width="100pt" |'''<math>T(n)</math>'''
|-
|0
|0
|-
|1
|1
|-
|2
|3
|-
|3
|2.5
|-
|4
|4
|-
|5
|8
|-
|6
|6
|}
Nun werden die einzelnen Summen berechnet, um die Werte später besser in die Gleichung einsetzen zu können.
<math>r</math> ist in diesem Beispiel die Anzahl der Wertepaare, also 7.
<math>\sum_{n=1}^r n \cdot T(n) = (1\cdot1) + (2\cdot3) + (3\cdot2.5) + (4\cdot4) + (5\cdot8) + (6\cdot6) = 106.5</math><br><br>
<math>\sum_{n=1}^r n = 1 + 2 + 3 + 4 + 5 + 6 = 21</math><br><br>
<math>\sum_{n=1}^r n^2 = 1^2 + 2^2 + 3^2 + 4^2 + 5^2 + 6^2 = 91</math><br><br>
<math>\sum_{n=1}^r T(n) = 1 + 3 + 2.5 + 4 + 8 + 6 = 24.5</math><br><br>
Die berechneten Summen werden nun in die Gleichungen für <math>a</math> und <math>b</math> eingesetzt.
<math>a = \frac{7\cdot106.5 - 21\cdot24.5}{7\cdot91 - 21^2} = 1.18</math><br><br>
<math>b = \frac{91\cdot24.5 - 106.5\cdot21}{7\cdot91 - 21^2} = -0.04</math><br><br>
Daraus ergibt sich folgende Regressionsgerade:<br><br>
<math>f(n) = 1.18\codt n - 0.04</math><br><br>
Der Plot der errechneten Regressionsgerade ergibt folgendes Bild:
[[Bild:S3ankrau_Plot_fertige_regressionsgerade.JPG|800px]]
An der grafischen Darstellung kann man erkennen, dass die Funktionsgerade nicht durch den Nullpunkt des Koordinatensystems geht. Bei linearen Aufwandsfunktionen ist dies aber von Relevanz, da bei der Problemgröße = 0 kein Rechenaufwand vorliegt. Verläuft die Gerade nicht durch den Koordinatenursprung, kann es zu Falschinterpretationen kommen.
Dieses Problem kann durch die Überlegung, dass bei einer Geraden, die durch den Ursprung führt, <math>b=0</math> ist, beseitigt werden. Die veränderte Gleichung lautet:
Die Methode der kleinsten Fehlerquadrate angewandt auf die Geradengleichung: <math> f(n)=a \cdot n</math>
<math>\sum_{n} (T(n) - (a\cdot n))^2 \rightarrow minimal</math>
Abgeleitet nach <math>a</math>:<br>
<math>\frac{\partial}{\partial a} = 2\codt\sum_{n=1}^{r} (T(n) - (a\cdot n))\cdot(-n) \stackrel{!}{=} 0</math><br><br>
Anschließend wird diese Gleichung vereinfacht und nach <math>a</math> umgestellt:<br>
<math>= a \sum_{n=1}^{r}n^2 = \sum_{n=1}^{r}n \cdot T(n)</math><br><br>
<math>= a = \frac{\sum \limits_{n=1}^{r}n \cdot T(n)}{\sum \limits_{n=1}^{r}n^2}</math><br><br>
Nun werden die obigen Wertepaare wieder eingesetzt um das <math>a</math> zu ermitteln:<br><br>
<math>a=\frac{106.5}{91} = 1.17</math><br><br>
Die dazu gehörige Geradengleichung lautet: <math> f(n) = 1.17 \cdot n </math>
[[Bild:S3ankrau_Plot_funktion_null.JPG|800px]]
===Polynomfunktionen===
Im Abschnitt über die Approximation von Exponentialfunktionen wurde bereits festgestellt, dass man ein sehr gutes Ergebnis erreicht, wenn die y-Achse logarithmiert wird. Es wäre also eine Überlegung wert, dies auch auf Polynomfunktionen anzuwenden. Im folgenden wird die Funktion <math>f(x) = 3\cdot x^2</math> mit einer logarithmierten y-Achse geplottet.
[[Bild:S3ankrau_Plot_polynom1.JPG|800px]]
Wie man an dieser Abbildung erkennen kann, führt allein die Logarithmierung der y-Achse nicht zu einer Geraden.
[[Bild:S3ankrau_Plot_polynom2.JPG|800px]]
Erst durch logarithmieren der y- und der x-Achse entsteht eine Gerade. Dies wird deutlich, wenn man sich folgende Rechnung anschaut:
<math>T(x) = 3\cdot x^2</math> wird logarithmiert zu
<math>z = f(\log x) = a \cdot \log x + b</math>, mit <math> z = \log y, a = 2</math> und <math>b = \log 3</math>, d.h.<br>
<math>\log y = f(x) = \log(3\cdot x^2)</math><br><br>
<math>= \log 3 + \log(x^2)</math><br><br>
<math>= 2 \cdot \log x + \log 3</math><br><br>
Geht man wie bei den Exponentialfunktionen genauso davon aus, dass durch Einsetzen der Wertepaare eine Gerade entsteht, ergibt der Schnittpunkt mit der y-Achse für <math> n = 1</math> durch <math> \log 1 = 0</math> den konstanten Faktor <math>c</math> an. Aus dem Anstieg ist der Exponent <math>k</math> ablesbar. Das gilt jedoch nicht für alle Polynomfunktionen, wie folgendes Beispiel zeigt:
[[Bild:S3ankrau_Plot_polynom3.JPG|800px]]
Es darf also nicht immer davon ausgegangen werden, dass auch tatsächlich eine Gerade entsteht. Das ist auf die Summen in der Funktion <math>f(x) = 3x^5 + 5x^4 + 12x^3 + 25x^2</math> zurückzuführen, die durch Logarithmierung nicht in einen linearen Ausdruck umgewandelt werden können.
====Approximation von Polynomfunktionen====
Bei dieser Betrachtung wird die allgemeine Form der Polynomfunktionen folgender Gestalt genutzt:
<math>geg: (x_1, y_1), (x_2, y_2), (x_3, y_3), ..., (x_n, y_n)|ges: c_o, c_1, ..., c_m</math><br><br>
<math>f(c_0, c_1,...,c_m,x) = \sum_{i=0}^{m} c_i g_i(x)</math>, mit Basisfunktionen <math>g_i : x \mapsto x^i</math><br><br>
Genau wie bei den Exponentialfunktionen ist es auch hier sinnvoll, die Methode der kleinsten Fehlerquadrate anzuwenden. Damit können die gesuchten Koeffizienten <math>c_i</math> für <math>i = 0, 1,..., m</math> ermittelt werden.
<math>F(c_o, c_1,..,c_m) = \sum_{k=1}^{n} \left(\sum_{i=0}^{m} c_i g_i(x_k) - y_k\right)^2 \rightarrow min</math><br><br>
Genau wie bei den Exponentialfunktionen wird also die Summe der Abstände zwischen den Wertepaaren und der gesuchten Regressionsgerade minimiert. Dafür muss folgendes gelten:
<math> \frac{\partial F}{\partial c_i} = 2\sum_{k=1}^{n} \left(\sum_{i=0}^{m} c_i g_i(x_k) - y_k\right)g_i(x_k) \stackrel{!}{=}0</math><br><br>
Das heißt, die partiellen Ableitungen für alle <math>c_i</math> müssen gleich 0 sein.
<math>= 2 \cdot g_j(x_k) \sum_{k=1}^{n}\left(c_og_0(x_k) + c_1g_1(x_k) + ... + c_ig_i(x_k) - y_k\right) \stackrel{!}{=} 0</math><br><br>
<math>{= 2 \cdot \sum_{k=1}^{n}\left(c_og_0(x_k)g_j(x_k) + c_1g_1(x_k)g_j(x_k) + ... + c_ig_i(x_k)g_j(x_k)\right) - 2 \cdot \sum_{k=1}^{n}y_kg_j(x_k) \stackrel{!}{=} 0}</math><br><br>
<math>= \sum_{k=1}^{n}\left(c_og_0(x_k)g_j(x_k) + c_1g_1(x_k)g_j(x_k) + ... + c_ig_i(x_k)g_j(x_k)\right) = \sum_{k=1}^{n}y_kg_j(x_k)</math><br><br>
Nach Umformung lautet die Normalengleichung für <math> 0 \leq j \leq m</math>:
<math>= \sum_{i=0}^{m}\left(\sum_{k=1}^{n}\left(g_i(x_k) g_j(x_k) \right)\right) c_i = \sum_{k=1}^{n}y_k\cdot g_j(x_k)</math><br><br>
Diese Gleichung kann auch in folgender Form dargestellt werden:
<math>
\vec{y} =
\begin{pmatrix}
y_1\\ y_2\\ \vdots \\ y_n
\end{pmatrix}</math><br><br>
<math>
\vec{c} =
\begin{pmatrix}
c_0\\ c_1\\ \vdots \\ c_m
\end{pmatrix}</math><br><br>
A =
<math>
\begin{pmatrix}
g_0(x_1) & g_1(x_1) & \cdots & g_m(x_1) \\
g_0(x_1) & g_1(x_1) & \cdots & g_m(x_1) \\
\vdots & \vdots & \ddots & \vdots \\
g_0(x_n) & g_1(x_n) & \cdots & g_m(x_n)
\end{pmatrix}</math><br><br>
<div style="color:black; background-color:lawngreen; border:1px dotted midnightblue;">
<math>A^T\cdot A\cdot\vec{c} = A^T\cdot \vec{y}</math>
</div>
Der Vektor <math>\vec{c}</math> enthält die gesuchten Koeffizentien. Diese können durch lösen des genannten Gelichungssystems bestimmt werden.
====Approximation von Basisfunktionen====
Anhand folgendem Maxima-Worksheet wird die Bestimmung der Koeffizienten der Approximationsfunktion:
<math>h(x) = c_0\cdot g_0(x) + c_1\cdot g_1(x) + ... + c_m\cdot g_m(x_m)</math>
anhand von Messwerten vorgeführt und dient gleichzeitig als Beispiel für die im vorigen Abschnitt hergeleitete Normalgleichung.
<code id="525f927565726">x: [1, 2, 6, 7];
n: length(x);
y: [2, 3, 4, 9];
pkt: makelist([x[i],y[i]],i,1,n);
g: [lambda([x], 1), lambda([x], x), lambda([x], 1/(x-9))];
m: length(g);
for k:1 thru n do
for i:1 thru m do
a[k,i]:= g[i](x[k]);
A: genmatrix(a, n, m);
AT: transpose(A);
AT.A.c = AT.y;
c_matrix: float(invert(AT.A).(AT.y));
matrix_size(c_matrix);
for i:1 thru m step 1 do
c[i]: c_matrix[i][1];
h(x):=sum(c[i]*g[i](x), i,1,m);
wxplot2d([[discrete, pkt], h(s)], [s,0,x[n]],
[style, points, lines],
[color, red, blue], [legend, false],
[xlabel, "x"], [ylabel, "y"]);
</code>
<document>Maxima_Worksheet.zip</document>
==Übungsaufgaben==
'''1. Exponentialfunktionen'''
Lassen Sie sich für die Funktion <math>4\cdot 12^x</math> den zugehörigen Graph plotten.
Verwenden Sie dafür das kostenlose Programm '''gnuplot''', welches Sie unter folgendem Link downloaden können:
[http://sourceforge.net/projects/gnuplot/files/gnuplot/4.6.3/ Download-Page gnuplot]
Nach der Installation ist die wgnuplot.exe im Ordner bin zu starten.
Machen Sie sich mit dem Tool vertraut. Dieses [http://people.duke.edu/~hpgavin/gnuplot.html Tutorial] eignet sich dafür sehr gut.
Verwenden Sie beim Plotten der oben genannten Funktion einmal die normale Achseneinteilung und zum anderen die logarithmierte y-Achse mit dem Wertebereich <math> x = 6..10</math>.
Berechnen Sie für folgende Wertepaare die zugehörige Regressionsgerade. Nutzen Sie dafür die hergeleiteten Gleichungen für a und b. Anschließend lassen Sie sich diese Gerade in gnuplot ausgeben.
{|class="wikitable" style="border: 2px solid lightgray; margin:10px 10px 1em 1em; padding-right: 10px;"
! colspan="2" style="background-color:thistle;"|Wertepaare
|-
| width="100pt" |'''<math>n</math>'''
| width="100pt" |'''<math>T(n)</math>'''
|-
|1
|4
|-
|2
|6
|-
|3
|10
|-
|4
|5
|-
|5
|12
|-
|6
|9
|}
(Optional können Sie eine .dat Datei mit den Wertepaaren anlegen und diese zusätzlich Plotten lassen).
'''2. Polynomfunktionen'''
Lassen Sie sich, ähnlich wie im oberen Abschnitt, die Funktion <math>12\cdot x^3 +4</math> in '''gnuplot''' darstellen.
Dies soll einmal mit normaler Achseneinteilung, einmal mit logarithmierter y-Achse und einmal mit logarithmierter y- und x-Achse durchgeführt werden.
Der Wertebereich soll hierbei für <math>x = 1..20</math> gelten.
Anschließend nutzen Sie Maxima, um die Koeffizienten <math>c_i</math> der Approximationsfunktion
<math>h(x) = c_0\cdot g_0(x) + c_1\cdot g_1(x) + ... + c_m\cdot g_m(x_m)</math><br><br>
zu berechnen.
Folgende Wertepaare sind gegeben:
{|class="wikitable" style="border: 2px solid lightgray; margin:10px 10px 1em 1em; padding-right: 10px;"
! colspan="2" style="background-color:thistle;"|Wertepaare
|-
| width="100pt" |'''<math>x</math>'''
| width="100pt" |'''<math>y</math>'''
|-
|3
|1
|-
|4
|3
|-
|5
|7
|-
|7
|8
|-
|10
|11
|}
Die Basisfunktionen lauten:
<math> g := 1, x \rightarrow x+2, x \rightarrow \frac{1}{12-x}</math><br><br>
Nutzen Sie dazu das vorgegebene Maxima-Worksheet aus dem Abschnitt [http://programmingwiki.de/AuK/Hilfsmittel_Mathematik_1_WS13-14#Approximation_von_Basisfunktionen Approximation von Basisfunktionen].
===Lösungen===
'''1. Exponentialfunktionen'''
<popup name="Lösung">
'''1.'''
<code id="52613e5e1c463">
//Befehl für die Logarithmierung der y-Achse
set logscale y
//Befehl für das Plotten der Funktion
plot [x=6:10] 4*12**x
</code>
'''2.'''<br>
<math>a = 1,09</math><br><br>
<math>b = 3,87</math><br><br>
Regressionsgerade lautet:
<math>1,09n + 3,87</math><br><br>
</popup>
'''2. Polynomfunktionen'''
<popup name="Lösung">
'''1.'''
<code id="526172fb0b85f">
//Befehl für die Logarithmierung der y-Achse
set logscale y
//Befehl für die Logarithmierung der x-Achse
set logscale x
//Befehl für das Plotten der Funktion
plot [x=1:20] 12*x**3+4
</code>
'''2.'''
<code id="5261737c52a71">
x: [3, 4, 5, 7, 10];
n: length(x);
y: [1, 3, 7, 8, 11];
pkt: makelist([x[i],y[i]],i,1,n);
g: [lambda([x], 1), lambda([x], x+2), lambda([x], 1/(12-x))];
m: length(g);
for k:1 thru n do
for i:1 thru m do
a[k,i]:= g[i](x[k]);
A: genmatrix(a, n, m);
AT: transpose(A);
AT.A.c = AT.y;
c_matrix: float(invert(AT.A).(AT.y));
matrix_size(c_matrix);
for i:1 thru m step 1 do
c[i]: c_matrix[i][1];
h(x):=sum(c[i]*g[i](x), i,1,m);
wxplot2d([[discrete, pkt], h(s)], [s,0,x[n]],
[style, points, lines],
[color, red, blue], [legend, false],
[xlabel, "x"], [ylabel, "y"]);
</code>