35 lines
1.1 KiB
Matlab
Executable File
35 lines
1.1 KiB
Matlab
Executable File
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
|
|
%
|
|
|
|
% leere arrays für die ergebnisse erstellen.
|
|
y_werte = zeros(19);
|
|
x_werte = zeros(19);
|
|
for i=0:18
|
|
% x-achse 'befüllen'
|
|
x_werte(i+1) = i;
|
|
% delta berechnen
|
|
delta = 10^(-i);
|
|
% Approximierte Jacobi-Matrix berechnen
|
|
% f wird nicht benutzt und kann daher durch ~ ersetzt werden
|
|
[~, j_appr] = numdiff(fun, x, delta);
|
|
% Abweichungen der Matrizen berechnen und
|
|
% in den zugehörigen y-index speichern
|
|
y_werte(i+1) = norm(j_appr - jac(x));
|
|
end
|
|
|
|
%Graph plotten
|
|
plot(x_werte, y_werte);
|
|
title('Abweichungen zwischen approximierter und exakter Jacobi-Matrix durch unterschiedliche Deltawerte');
|
|
ylabel('Abweichung der Matrizen')
|
|
xlabel('Delta angegeben durch i (delta = 10^-^i)');
|
|
end % function diffplot
|