www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Integrieren und Differenzieren" - Numerische Ableitung
Numerische Ableitung < Integr.+Differenz. < Numerik < Hochschule < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Integrieren und Differenzieren"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Numerische Ableitung: 2.Abelitung eines Arrays
Status: (Frage) beantwortet Status 
Datum: 10:50 Do 14.07.2005
Autor: Neruda

Hallo,

ich habe ein Array von 2500 Datenpunkten, die eine Rampe darstellen, also eine Art "Sprungfunktion mit abgerundeten Ecken". Ich  will dieses Array zweimal numerisch ableiten, wobei ein bipolares Signal zu erwarten waere. ich verwende dazu die Funktion:
1:
2: void Ableitung(Double_t* input, Double_t* output, Int_t mm)
3: {
4: Int_t h= 1;
5:
6:   for (Int_t n=(-1+h); n<(mm-h); n++)
7:     {
8:         output[n]= (input[n+h]-2*input[n]+input[n-h])/(h*h);    
9:     }
10:
11: cout << "Zweifache Ableitung abgeschlossen" << endl;
12: }

wobei input natuerlich das urspruengliche Array ist, und output das Array der zweifachen Ableitung. Leider ist dieser Weg falsch, den das output Array zeigt alles andere als das, was es soll, es sei denn man erhoeht den Wert h, was allerdings bei nachfolgenden Rechnungen Fehler nach sich zieht.

Kann mir jemand Weiterhelfen?
Danke, Neruda

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

        
Bezug
Numerische Ableitung: Antwort
Status: (Antwort) fertig Status 
Datum: 18:10 Do 14.07.2005
Autor: mathemaduenn

Hallo Neruda,
Du startest Deine Schleife mit n=0 dabei wird dann input[-1] aufgerufen das kann alles mögliche sein. Das ist nat. egal wenn Dir klar ist das in output[0] und output[mm-1] nicht die 2.Ableitung drinsteht. Damit der Wert auch zu den Daten passt, also schon richtig skaliert ist und nicht nur qualitativ stimmt, könntest Du noch die richtige Schrittweite(h) übergeben.
Also so
1:
2:  void Ableitung(Double_t* input, Double_t* output, Int_t mm,Double_t h)
3: {
4:  for (Int_t n=1; n<(mm-1); n++)
5:           output[n]=  (input[n+1]-2*input[n]+input[n-1])/(h*h);    
6: }
7:  

Aber direkt anders ist das nicht wie wird's denn verwendet?
viele Grüße
mathemaduenn

Bezug
        
Bezug
Numerische Ableitung: Antwort
Status: (Antwort) fertig Status 
Datum: 11:31 Fr 15.07.2005
Autor: mickrau133

Die Ergebnisse werden besser, wenn du den Wert voh $h$ erhöhst. Das kommt daher, dass die Differentiation bei gestörten (verrauschten) Daten schlecht gestellt ist.

z.B. betrachte die Aufgabe, eine Funktion $f$ numerisch zu differenzieren. Solange die Eingangsdaten exakt sind, funktioniert das einwandfrei. Hat man aber als Eingangsdaten eine verrauschte Funktion [mm] $\tilde{f}(x)=f(x)+ \epsilon \sin(n\cdot [/mm] x)$, dann erhält man als Ergebnis [mm] $\tilde(f)'(x)=f'(x)+n\cdot \epsilon \cos(nx)$. [/mm]  Hochfrequente Störungen [mm] ($n\to\infty$) [/mm] verfälschen also das Ergebnis.

Die "Störung" [mm] $\epsilon \sin(n\cdot [/mm] x)$ kann man dadurch "eliminieren", dass man die Schrittweite erhöht.

Der Fehler des Verfahrens lässt sich in zwei Teilfehler aufspalten:
1) Den Verfahrensfehler, der geht gegen $0$, wenn man $h$ gegen Null gehen lässt.
2) Den Datenfehler, der aus gestörten Meßdaten entsteht. Der geht gegen $0$, wenn $h$ groß ist.

D.h. die optimale Schrittweite liegt irgendwo zwische $0$ und "$h$ groß".

Experimentier einfach mal mit verschiedenen Werten von $h$.



Bezug
                
Bezug
Numerische Ableitung: Beweis?
Status: (Frage) beantwortet Status 
Datum: 16:30 Di 26.07.2005
Autor: Neruda

Danke fuer Deine Antwort,
mit ein bisschen herumspielen und noch ein-zwei anderen Tricks habe ich mein Problem weitenstgehend zufriedenstellend loesen koennen.

Mich wuerde aber noch interessieren, wie man es am besten beweisen kann, dass das Rauschen mit Erhoehung des Stuetzstellenabstandes kleiner wird. Ich habe es zwar schon selbst versucht, indem ich die gestoerte Funktion f'(x)=f(x)+ [mm] \varepsilon [/mm] sin(nx) in die Formel fuer die zweite Ableitung eingesetzt habe, aber so einfach scheint das dann doch nicht zu sein, oder ich sehe den entscheidenden Schritt nicht. Kannst Du mir vielleicht einen Hinweis geben? Z.B. ein Link im Internet?
Danke nochmal!



Bezug
                        
Bezug
Numerische Ableitung: Auslöschung?
Status: (Antwort) fertig Status 
Datum: 11:26 Mi 27.07.2005
Autor: mathemaduenn

Hallo Neruda,
Das mit der sinsstörung sollte vermutlich nur ein "Bild" sein. Ein "Rauschen" beschreibt man eigentlich über eine Normalverteilung.
[mm]f^{\sim}( x_i )=f(x_i)+\epsilon_i [/mm] wobei  [mm] \epsilon_i\sim N(0,\sigma) [/mm]
Dann kann man sich überlegen welche Verteilung der Fehler des Ergebnisses haben muß.
Wenn deine Eingangsdaten eigentlich exakt sind und allein der Rundungsfehler einen Einfluß hat kannst Du Dich ja über "Auslöschung" informieren.
viele Grüße
mathemaduenn

Bezug
                                
Bezug
Numerische Ableitung: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:46 Mo 01.08.2005
Autor: mickrau133

Das Beispiel mit dem Sinus habe ich gebracht, weil der Sinus differenzierbar ist. Also selbst die Addition einer differenzierbaren Störung kann die exakte Lösung so weit verändern, dass man die gestellte Aufgabe regularisieren muss. Unter einer Regularisierung eines schlecht gestellten Problems (z.B. sei   der Inversionsoperator [mm] $T^{-1}$ [/mm] nicht stetig) versteht man eine Familie von Operatoren [mm] $T_\gamma^{-1}$, [/mm] so dass [mm] $T_\gamma^{-1}$ [/mm] stetig ist und in einem geeigneten Sinne gegen [mm] $T^{-1}$ [/mm] konvergiert.

Beispiel Differentiation:
1) Der exakte Inversionsoperator einer Integralgleichung [mm] $g(x)=\int_0^{x}f(t)\, [/mm] dt$ ist die Differentiation $f(x)=g'(x)$.
2) Die Differentiation ist unstetig (als Operator von [mm] $(C^1,\|\cdot\|_\infty)$ [/mm] nach [mm] $(C^1,\|\cdot\|_\infty)$. [/mm] Die numerische Differentiation ist dagegen stetig und konvergiert mit [mm] $\gamma:=h\to [/mm] 0$ gegen den exakten (aber unstetigen) Inversionsoperator.

Nun zu der ursprünglichen Frage:

Das Beispiel sei wie oben,  berechne $g'(x)$ numerisch durch
[mm] \begin{equation} D_hg(x)=\frac{g(x+h)-g(x-h)}{2h}, h>0\ . \end{equation} [/mm]
Taylor liefert
[mm] \begin{equation} g(x+h)=g(x)+hg'(x)+\frac{h^2}{2}g''(x)+\frac{h^3}{6} g'''(\xi)\ , \end{equation} [/mm]
$g(x-h) analog.
Fehlerabschätzung
[mm] \begin{equation} |g'(x)-D_hg(x)|\leq \frac{h^2}{6}\max_{\xi\in[x-h,x+h]}|g'''(\xi)|\ . \end{equation} [/mm]
Also wegen $f=g'$
[mm] \begin{equation} \|f-D_hg\|_\infty \leq \frac{h^2}{6}\|f''\|_infty \ . \end{equation} [/mm]
Wendet man den zentralen Differenzenquotienten auf gestörte Daten [mm] $g^\epsilon$ [/mm] mit [mm] $\|g^\epsilon -g\|_\infty \leq \epsilon$ [/mm] an, dann gilt für den Datenfehler
[mm] \begin{equation} |D_h(g^\epsilon -g)(x)|\leq \frac{\epsilon}{h}\ . \end{equation} [/mm]
Für den Gesamtfehler des Verfahrens gilt
[mm] \begin{equation} |D_h g^\epsilon(x)-f(x)| \leq \frac{h^2}{6}\|f\|_\infty+ \frac{\epsilon}{h}\ . \end{equation} [/mm]
Die optimale Schrittweite ist
[mm] \begin{equation} h_{opt}=\left( \frac{3\epsilon}{\|f''\|_\infty}\right)^{1/3}\ , \end{equation} [/mm]
wobei die exakte Lösung $f''$ bei numerischer Differentiation unbekannt ist.

Bem: Ich habe meinen Beitrag nicht Korrektur gelesen.

Edit: intuitiv ist die Sache klar. Stell dir vor, du sollst die Steigung einer Strasse bestimmen. Solange die Schrittweite groß genug ist, bekommst die ein sinnvolles Ergebnis (sie darf natürlich nicht zu groß sein).

Geht die Schrittweite dagegen gegen Null, so misst du irgendwann nur noch die Steigung, die durch einzelne Schottersteine verursacht wird. Und die weicht von der "tatsächlichen" Steigung ab.


Bezug
        
Bezug
Numerische Ableitung: Forenregeln/Crossposting
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:17 Mi 03.08.2005
Autor: mathemaduenn

Hallo Neruda,
> Ich habe diese Frage in keinem Forum auf anderen Internetseiten
> gestellt.

Bitte Crosspostings in verschiedenen Matheforen immer mit link angeben.
[]www.matheplanet.com
siehe auch:
die Forenregeln
viele Grüße
mathemaduenn


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Integrieren und Differenzieren"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.mathebank.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]