Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
60 lines (49 sloc) 1.33 KB
% f = funktion
% x0 = stelle an welcher berechnet werden soll
% h = start h
% ik_max = höchste k oder i + 1 bei bspw. i= 0,1,2,3 --> ik_max = 4
% res = Matrix mit aufbau der Extrapolation
% err = Fehler matrix
function [res, err] = h_Extrapolation(f, x0, h, ik_max)
format long e
res = zeros(ik_max);
err = zeros(ik_max);
df = Ableiten(f);
for i = 1: ik_max
hi = h / (2^(i-1));
% Dxf durch gewolltes D1f, D2f, D3f ersetzten.
res(i,1) = D1f(f, x0, hi);
err(i,1) = abs(res(i,1) - df(x0));
end
for k = 2: ik_max
kReal = k-1;
for i = 1:ik_max - kReal
res(i,k) = (2^kReal * res(i+1, k-1) - res(i, k-1)) / (2^kReal - 1);
err(i,k) = abs(res(i,k) - df(x0));
end
end
end
% Funktion Vorwärtsdifferenz
function [dy] = D1f (f, x0, h)
dy = (f(x0 + h) - f(x0)) / h;
end
% Funktion Zentraldifferenz
function [dy] = D2f (f, x0, h)
dy = (f(x0 + h) - f(x0 - h)) / (2*h);
end
% Funktion Rückwärtsdifferenz
function [dy] = D3f (func, x0, h)
dy = (func(x0) - func(x0 - h)) / h;
end
% returned die Ableitung der Funktion func
%
% [funcDiff] = ableiten(@(x) x.^5 - 5*x.^4 - 30*x.^3 + 110*x.^2 + 29*x - 105)
%
% func = Funktion, die abgeleitet werden soll
% funcDiff = abgeleteitete Funktion
%
function [funcDiff] = Ableiten(func)
syms y(x)
y(x) = func;
funcDiff = matlabFunction(diff(y,x));
end
You can’t perform that action at this time.