Numerische Differentiation < Sonstiges < Analysis < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 00:56 So 27.11.2011 | Autor: | Katze_91 |
Hallo,
ich halte am montag mein Proseminar über Numerische Differentation und wollte auch kurz etwas über das Rauschen von Funktionswerten sagen, dass das zwar bei den Funktionswerten nicht viel ausmacht, aber dann bei den höheren Ableitungen starke veränderungen macht...
nunja jetzt bin ich dabei ein Programm zu schreiben aber ich komm einfach nicht drauf, wie ich die ableitung bestimme, wenn ich nur Messwerte habe (selber ausgedacht)
alle meine Versuche sind gescheitert
clc;close all;clear all;
xi=0:0.01:50;
x=[0 2 5 10 15 20 25 30 35 40 45 50]';
y=[5 10 15 20 30 32 31 29 25 20 10 0];
yi=Inter_polation(x,y,xi);
plot(xi,yi,'r')
axis([0 10 -1 20])
hold on
m=waitforbuttonpress;
n=length(yi);
y2=yi;
e=(10^(-1)).*rand(1,n);
for i = 1:10:n
y2(1,i)=yi(1,i)+e(1,i);
end
plot(xi,y2,'b')
meine Function Inter_polation hat auf jeden fall keinen Fehler, aber ich weiß einfach nicht wie ich in den differenzenquptienten dieses x+h hineinbekomme, wenn ich f nicht gegeben habe :( hoffe mir kann noch einer rechtzeitig helfen
LG
Katze
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 08:54 So 27.11.2011 | Autor: | rainerS |
Hallo!
> ich halte am montag mein Proseminar über Numerische
> Differentation und wollte auch kurz etwas über das
> Rauschen von Funktionswerten sagen, dass das zwar bei den
> Funktionswerten nicht viel ausmacht, aber dann bei den
> höheren Ableitungen starke veränderungen macht...
>
> nunja jetzt bin ich dabei ein Programm zu schreiben aber
> ich komm einfach nicht drauf, wie ich die ableitung
> bestimme, wenn ich nur Messwerte habe (selber ausgedacht)
> alle meine Versuche sind gescheitert
>
> clc;close all;clear all;
> xi=0:0.01:50;
> x=[0 2 5 10 15 20 25 30 35 40 45 50]';
> y=[5 10 15 20 30 32 31 29 25 20 10 0];
> yi=Inter_polation(x,y,xi);
> plot(xi,yi,'r')
> axis([0 10 -1 20])
> hold on
> m=waitforbuttonpress;
> n=length(yi);
> y2=yi;
> e=(10^(-1)).*rand(1,n);
> for i = 1:10:n
> y2(1,i)=yi(1,i)+e(1,i);
> end
> plot(xi,y2,'b')
>
> meine Function Inter_polation hat auf jeden fall keinen
> Fehler, aber ich weiß einfach nicht wie ich in den
> differenzenquptienten dieses x+h hineinbekomme, wenn ich f
> nicht gegeben habe :( hoffe mir kann noch einer rechtzeitig
> helfen
Du kannst doch den Funktionswert von f an der Stelle x+h näherungsweise durch Interpolation bestimmen. Nimm dir also zu einem x eine Folge von [mm] $h_i$, [/mm] zB. [mm] $h_i=10^{-i}$ [/mm] und benutze deine Interpolationsfunktion um die zugehörigen y-Werte an den Stellen [mm] $x+h_i$ [/mm] auszurechnen.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 12:00 So 27.11.2011 | Autor: | Katze_91 |
hallo :3
ja das hab ich auch schon versucht
x2=(10^(-3))+x % x waren meine Stützstellen
aber ich weiß irgendwie nicht wie ich jetzt meine y-werte jetzt mit der Interpolations function bestimmen kann :(
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 12:27 So 27.11.2011 | Autor: | rainerS |
Hallo!
> ja das hab ich auch schon versucht
>
> x2=(10^(-3))+x % x waren meine Stützstellen
>
> aber ich weiß irgendwie nicht wie ich jetzt meine y-werte
> jetzt mit der Interpolations function bestimmen kann :(
Wenn ich den Aufruf richtig verstehe, dann ist der dritte Parameter von inter_polation die Liste der x-Werte, an denen du die interpolierten Funktionswerte ausrechnen willst.
Also etwa so, um die Werte f(1+h) zu berechnen:
x0=1
hi=[0.1 0.01 0.001 0.0001]
xi = x0 + hi
y0 = interpolation(x,y,[x0])
y0 = y0(1)
yi=inter_polation(x,y,xi)
Jetzt steht f(x0) in y0, und die Werte f(x0+hi) in yi
Viele Grüße
Rainer
|
|
|
|
|
Danke!
ich hab jetzt
clc;close all;clear all;
xi=0:0.01:50;
x=[0 2 5 10 15 20 25 30 35 40 45 50]';
y=[5 10 15 20 30 32 31 29 25 20 10 0];
yi=Inter_polation(x,y,xi);
plot(xi,yi,'r')
axis([0 10 -1 20])
hold on
m=waitforbuttonpress;
n=length(yi);
y2=yi;
e=(10^(-1)).*rand(1,n);
for i = 1:10:n
y2(1,i)=yi(1,i)+e(1,i);
end
plot(xi,y2,'b')
hold on
m=waitforbuttonpress;
x0=xi;
hi=0.0001 ;
xi = x0 + hi;
y0 = Inter_polation(x,y,[x0]);
yi=Inter_polation(x,y,xi);
zi=(yi-y0)./(2*hi);
plot(xi,zi,'r')
m=waitforbuttonpress;
x3=xi;
hi=0.0001 ;
xi = x3 + hi;
y3 = Inter_polation(x,y,[x3]);
y2=Inter_polation(x,y,xi);
z2=(y2-y3)./(2*hi);
plot(xi,z2,'b')
okay was ist jetzt aber der unterschied zwischen der ersten ableitung des Interpolationspolynoms und der ableitung des veränderten IP... ich seh des jetzt irgendwie nicht und es klappt nicht :(
gibt es jetzt eigentlich einen einfacheren weg höhere ableitungen (3te zum beispiel) zu bestimmen oder muss man das immer weiter so machen?
weil bei der ersten sehe ich leider noch nciht den effekt den ich sehen wollte und gibt es eigentlich auch einen befehl, der eine Funktion wieder aus dem plot rauswirft? also zum beispiel, dass die ersten ableitungen verschwinden wenn ich mit den zweiten anfange?
LG
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 03:20 Mo 28.11.2011 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|