Как указано в заголовке, я пытаюсь написать функцию, которая оценивает частную производную f в точке (a, b).
Однако вывод частной производной оценивается в (0, 0) слишком велико.
Я предполагаю, что мой алгоритм вычисления частной производной неверен.Но я не понимаю, как это сделать.
Прошло много времени с тех пор, как я последний раз использовал MATLAB, поэтому я прошу прощения, если я допустил некоторые ошибки или использовал неэффективный способ написания своего кода.
Мой код ниже:
function derivative = PartialDeriv(f, a, b, i)
h = 0.0001;
fn = zeros(1,2);
if i == 1
fn(i) = (f(a+h,b)-f(a,b)/h);
elseif i==2
fn(i) = (f(a,b+h)-f(a,b)/h);
end
derivative = fn(i);
end
Вызывая мою функцию, я получаю:
PartialDeriv (f, a, b, i)
где fэто
f = @(x,y)(x-1).^2+(y-1).^2
Я получаю:
f = -1.9998e+04
Делая это вручную, я получаю -2.
i , который замечен средипараметры для:
PartialDeriv(f,a,b,i)
обозначает мой индекс, чтобы различать частную производную по x и y.
Это означает, что fn (1) является частной производной по xи fn (2) - частная производная по y.