Fixpunkt von Banach < MuPad < Mathe-Software < Mathe < Vorhilfe
|
Aufgabe | |f(x)-f(y)| <= L * |(x-y)| |
Hi,
ich brauche hilfe den term in mupad umzusetzen
- zum ersten weiß ich nicht wie ich für f(x)-f(y)/x-y den maximum (minimum) betrag bekommen kann. Wenn ich max(f(x)) eingebe gibt er mir nur die funktion zurück.
- reicht es aus wenn ich zB ein Intervall von 0 bis 2 für x haben will einfach 0<x<2 schreibe?
- im ganzen will ich das mir mupad ein Intervalle für 0<L<=1, L>1 und L<=0 angibt(ich will keine kompletlösung. ich will nur wissen mit welchen befehlen ich das umsetzten kann - also zB ob ich für etwas eine while schleife brauche)
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:58 So 21.09.2014 | Autor: | Marcel |
Hallo Hintzboy,
erstmal die schlechte Nachricht: Mit MuPad kenne ich mich nicht aus. Bei
Matlab/Octave würde das anders aussehen. Ich werde die Frage auch
nicht als ganz beantwortet stellen, denn eigentlich geht es mir eher darum,
dass wir klären, was Deine eigentlich Frage ist.
> |f(x)-f(y)| <= L * |(x-y)|
Das sieht mir stark danach aus, dass Du wissen willst, ob eine Funktion
[mm] $f\,$ [/mm] Lipschitzstetig ist? Diese Frage kann man leicht beantworten, wenn
[mm] $f\,$ [/mm] differenzierbar (auf dem Definitionsbereich, der ein Intervall [mm] $I\,$ [/mm] sei)
ist. Hier ist [mm] $f\,$ [/mm] genau dann Lipschitzstetig, wenn [mm] $f\,'$ [/mm] beschränkt ist. Anders
gesagt:
[mm] $f\,$ [/mm] ist genau dann Lipschitzst., wenn [mm] $|f\,'|$ [/mm] nach oben beschränkt ist.
(Jede obere Schranke von [mm] $|f\,'|$ [/mm] ist dann eine geeignete Lipschitzkonstante!)
Der Beweis folgt direkt mit dem MWS...
> Hi,
>
> ich brauche hilfe den term in mupad umzusetzen
>
> - zum ersten weiß ich nicht wie ich für f(x)-f(y)/x-y den
> maximum (minimum) betrag bekommen kann.
Du meinst [mm] $\red{(}(f(x)-f(y)\red{)}/\red{(}x-y\red{)}\,,$ [/mm] also
[mm] $\frac{|f(x)-f(y)|}{|x-y|}$
[/mm]
> Wenn ich max(f(x))
> eingebe gibt er mir nur die funktion zurück.
Wahrscheinlich ist das einfach nur die Funktion
[mm] $g(x):=\max\{f(x)\}\,,$
[/mm]
und damit macht er genau das Richtige!
Und, wie gesagt, wenn es um das Auffinden eines [mm] $L\,$ [/mm] geht, dann brauchst
Du [mm] $\sup\{|f\,'(x)|:\;\; x \in I\}$ [/mm] für die minimale Lipschitzkonstante [mm] $L\, [/mm] > [mm] 0\,,$ [/mm] sofern
[mm] $f\,$ [/mm] die genannten Voraussetzungen erfüllt.
Ansonsten:
In Matlab wählt man diskrete Punkte (äquidistant) aus Intervallen
[mm] $I=[a,b\,]$ [/mm] durch
x=[a: (b-a)/n: b],
dann hat man [mm] $(n+1)\,$ [/mm] äquidistante Werte von [mm] $[a,b]\,.$ [/mm] (Abstand zweier
direkt aufeinanderfolgender Werte ist [mm] $(b-a)/n\,.$)
[/mm]
Dann würde ich mir eine Doppelschleife programmieren:
sample=[];
for i=1:(n+1)
for j=1:(n+1)
if i ~= j
test=f(x(i))-f(x(j));
test=test/(x(i)-x(j));
test=abs(test);
sample=[sample,test];
end;
end;
Und dann
max(sample)
benutzen.
Das ist jetzt sowas wie "Pseudocode, der größtenteils für Matlab angepasst
ist".
Mal konkret:
x=[0:1/100:1];
y=sin(x);
sample=[];
for i=1:101
for j=1:101
if i ~= j
test=y(i)-y(j);
test=test/(x(i)-x(j));
test=abs(test);
sample=[sample,test];
end;
end;
end;
max(sample)
Octave liefert mir dann am Ende den Wert
0.99998,
der den "richtigen Wert [mm] $1\,$" [/mm] doch gar nicht so schlecht nähert.
(Der Code oben kann übrigens noch optimiert werden:
for i=1:100
for j=(i+1):101
.
.
.
end
end
)
Ich hab's auch mal mit [mm] $f(x)=x^3\,$ [/mm] getestet, dann ist ja [mm] $f\,'(x)=3x^2$ [/mm] und auf
[mm] $[0,2]\,$ [/mm] sollten wir dann [mm] $L=3*2^2=12\,$ [/mm] haben (mimimale Lipschitzkonstante):
x=[0:(2-0)/100:2];
y=x.^3;
sample=[];
for i=1:(length(x)-1)
for j=(i+1):length(x)
test=y(i)-y(j);
test=test/(x(i)-x(j));
test=abs(test);
sample=[sample,test];
end;
end;
max(sample)
liefert dann
11.880
Und hier habe ich ja "nur" [mm] $n=100\,$ [/mm] benutzt. Das kann man ja auch vergrößern...
> - reicht es aus wenn ich zB ein Intervall von 0 bis 2 für
> x haben will einfach 0<x<2 schreibe?
> - im ganzen will ich das mir mupad ein Intervalle für
> 0<L<=1, L>1 und L<=0
$|f(x)-f(y)| [mm] \le [/mm] L*|x-y|$
wird für $L < [mm] 0\,$ [/mm] niemals funktionieren!
> angibt(ich will keine kompletlösung.
> ich will nur wissen mit welchen befehlen ich das umsetzten
> kann - also zB ob ich für etwas eine while schleife
> brauche)
Wie gesagt: Obigen Code kannst Du durchaus in Octave testen. Schwer
nachvollziehbar scheint er mir nicht. Wie das in MuPad aussieht, weiß ich
auch nicht. Es wäre ja auch die Frage, ob Du, wie ich das gemacht habe,
"im Diskreten" rechnen willst, oder ob MuPad auch "symbolisch" rechnen
kann.
P.S. Meine obigen Beispiele sind differenzierbare Funktionen. Du kannst
in Matlab sicher auch den Satz, der dann die Lipschitzstetigkeit charakterisiert,
programmieren. Im Endeffekt werden dabei aber auch die Ergebnisse der
obigen Programmierung jedenfalls irgendwie drin Verwendung finden, wenn
man den Code genau analysiert.
Gruß,
Marcel
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:20 Do 25.09.2014 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|