Нет способа алгебраически взять производные дескрипторов функций или функций, определенных в m-файлах.Вам нужно будет сделать это численно , оценивая функцию в ряде точек и аппроксимируя производную.
Что вы, вероятно, хотите сделать, это дифференцирование символьных уравнений , и для этого вам понадобится Symbolic Math Toolbox .Вот пример поиска корня с использованием метода Ньютона-Рафсона :
>> syms x %# Create a symbolic variable x
>> f = (x-4)^2-4; %# Create a function of x to find a root of
>> xRoot = 1; %# Initial guess for the root
>> g = x-f/diff(f); %# Create a Newton-Raphson approximation function
>> xRoot = subs(g,'x',xRoot) %# Evaluate the function at the initial guess
xRoot =
1.8333
>> xRoot = subs(g,'x',xRoot) %# Evaluate the function at the refined guess
xRoot =
1.9936
>> xRoot = subs(g,'x',xRoot) %# Evaluate the function at the refined guess
xRoot =
2.0000
Вы можете видеть, что значение xRoot
близко к значению истинного корня (который2) после нескольких итераций.Вы также можете поместить оценку функции в цикл while с условием, которое проверяет, насколько велика разница между каждым новым предположением и предыдущим предположением, и останавливается, когда это различие достаточно мало (т. Е. Корень найден):
xRoot = 1; %# Initial guess
xNew = subs(g,'x',xRoot); %# Refined guess
while abs(xNew-xRoot) > 1e-10 %# Loop while they differ by more than 1e-10
xRoot = xNew; %# Update the old guess
xNew = subs(g,'x',xRoot); %# Update the new guess
end
xRoot = xNew; %# Update the final value for the root