WinFuture-Forum.de: Werte Einer Funktion Mit Dem Cas Maxima Bestimmen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Software
Seite 1 von 1

Werte Einer Funktion Mit Dem Cas Maxima Bestimmen


#1 _Fenix_

  • Gruppe: Gäste

geschrieben 30. Januar 2008 - 16:34

Hallo,
ich habe die Aufgabe e^x mit Lagrange an den Stellen -1, 0 und 1 zu interpolieren und dann den maximalen Interpolationsfehler nach oben abzuschätzen.
Das Lagrange Polynom für die 3 Stellen habe ich schon per Hand berechnet und mit Maxima überprüft. Nun ist die Funktion für den Fehler allerdings "leicht" widerlich.
Hier mal zum nachvollziehen der Maxima Code bisher:
f(x):= exp(x)
p : [[-1, f(-1)], [0, f(0)], [1, f(1)]];
load(interpol)
p(x) := lagrange(p)


Das gibt dann p(x) = (e*x^2)/2+(e^(-1)*x^2)/2-x^2+(e*x)/2-(e^(-1)*x)/2+1
Damit ist der Fehler err(x) = | f(x) - p(x) |
in Maxima:
err(x):=abs(f(x)-p(x))


Den maximalen Fehler direkt auszurechnen ist nicht so leicht möglich, da die Nullstellen der Ableitung der Fehlerfunktion nur numerisch gefunden werden können. Ich hatte nun vor, die Fehlerfunktion nochmal durch ein Lagrange Polynom zu interpolieren und dann die Maxima davon im Intervall [-1; 1] zu finden..
Um nicht zu viele neue Fehler zu erzeugen, würde ich gerne 200 Punkte des Graphen von err(x) als Stützstellen benutzen. Wie lasse ich Maxima die 200 Punkte errechnen?
In Octave/Matlab würde ich schreiben: s = [[-1:0.01:1]' exp([-1:0.01:1])'] und dann das Lagrange Polynom von s bestimmen lassen. Maxima will nur die Vektorschreibweise so nicht.
Jemand eine Idee? Wenn es noch einfacher geht als das lasse ich mich auch gerne überzeugen nen anderen weg zu benutzen....
Danke!

Edit:
Ein
lmax(makelist(err, k, 1, 200) / 100 - 1)


tut es wohl hier auch denke ich.... Wäre aber trotzdem interessant, wie man die 200 Stützstellen berechnet.
Und die nächste Frage ist, wie ich den blöden Mathematikern die Maxima Lösung verkaufen kann... denn für die ist das ja wieder böse, wie alles, was nicht den Dogmen ihrer Traumwelt entspricht.

Edit 2:
So Nachtarbeit hat eine "saubere" Methode ergeben, den Fehler zu bekommen:
Es gibt einen Satz
R(x) = f(x) - p(x) = (x-x0) * (x-x1) * * * (x-xn) * (n+1)te Ableitung von f (xi) / (n+1)!
dabei ist xi irgendeine Zahl aus dem interpolierten Intervall, die zunächst keine Rolle spielt und n einfach die Anzahl der Stützstellen - 1 (anders ausgedrückt: der Grad des Lagrange Polynoms).
Hier dann:
R(x) = f'''(xi) (x+1)(x)(x-1) / 3! = (x^3 - x) * e^xi / 6
Davon bestimmt man die Ableitung, um die Extremstellen zu finden
R'(x) = x² * e^xi / 3 - e^xi / 6
x² * e^xi / 3 - e^xi / 6 = 0 (e^xi kürzt sich hier raus, weshalb es in dem Fall egal ist, welche Zahl xi genau ist)
<=> x1,2 = +- sqrt(1/3)
Es handelt sich um eine Parabel, also hat man keine Sattelpunkte und kann sich die 2. Ableitung ersparen. Ob Minimum oder Maximum interessiert ohnehin nicht, da am ende der Betrag von R(x) interessant sein wird.

Gesucht ist jetzt der maximale Fehler, also der Fehler, der betragsmäßig am größten ist.
Dazu schaut man sich R(x1) und R(x2) an. Die beiden rechnet man einfach über f(x) - p(x) durch einsetzen von -sqrt(1/3) und sqrt(1/3) aus.
Man sieht, dass R(sqrt(1/3) ~ -0.07822 und R(-sqrt(-1/3)) ~ 0.05886 . An den Randstellen (eigentlich egal, da die Randstellen bei Lagrange Stützstellen ohne Fehler sind, aber dennoch sicherheitshalber mit untersuchen) ist R(-1) = R(1) = 0.
Also ist R(-sqrt(1/3)) der größte Fehler und der Interpolationsfehler insgesamt kleiner als 0.07822.

Wollte man noch xi wissen, so müsste man -0.07822 = f(x) - p(x) = (x^3 - x) * e^xi / 6 mit x = sqrt(3):
-0.07822 = ((-1/sqrt(3))^3 + 1/sqrt(3) * e^xi / 6 nach xi umstellen.

Dieser Beitrag wurde von Fenix bearbeitet: 31. Januar 2008 - 02:58

0

Anzeige



Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0