Michael Scholz 0fe686245c CE update
2013-02-20 16:20:56 +01:00

34 lines
1019 B
Matlab

function diffplot(fun, jac, x)
%
%
% [f, J] = diffplot(fun, jac, x) plots difference between symbolic
% differentiation and approximation by finite differences
%
% INPUT
% fun function handle; fun: R^n -> R^n
% jac function handle; jac: R^n -> R^(mxn)
% x point x in R^n to evaluate f and jacobian
%
j = jac(x); %Exakte Lösung hinterlegen
diffs = zeros(19); %Speicher für Abweichungswerte initialisieren (für Darstellung)
is = zeros(19); %Speicher für Iterationsnummern initialisieren (für Darstellung)
for i=0:18
delta = ones(size(x,1))*10^-i; %Schrittweite vorbereiten
[~, J] = numdiff(fun, x, delta); %Jacobimatrix approximieren
diffs(i+1) = norm((J-j),2); %Abweichung berechnen (numerisch <-> exakt)
is(i+1) = i; %Iterationsnummer speichern (für Darstellung)
end
%Plotten
plot(is,diffs);
title('Abweichung der numerischen Approximation der Jacobimatrix');
legend('Fehlerkurve')
xlabel('Iterationen');
ylabel('Abweichung');
end % function diffplot