Вы можете использовать анонимные дескрипторы:
% Some function defined with more than one parameter
function out = genericFunction(x,y,z)
out=x*y+z;
end
Тогда:
%Define parameters
Par1 = 1;
Par2 = 2;
%Define function handle
specificFunction = @(t) genericFunction(t,Par1,Par2);
%specificFunction only depends on a single parameter
%Solve equation
dT0 = fzero(genericFunction,1)
Обратите внимание, что при создании дескриптора функции specificFunction
сохраняются ее постоянные параметры.Даже если вы измените Par1
или Par2
, specificFunction
всегда будет возвращать результаты на основе значения, которое они имели при его создании.Если вы измените значения параметров, вам придется снова выполнить строку specificFunction = @(t) ...
, прежде чем проходить через решатель.
Теперь вы можете даже поместить определение дескриптора в ту же строку, что ивызов для решателя:
function f = funzero(dT0g,TL,T0,k)
options = odeset('Events',@yzero);
[x,vinkel,dphikors,vinkele,ie]=ode45(@ode45projekt,[0 k],[T0, dT0g],options);
Tslut = vinkele(2,1)
f = Tslut-TL
end
...
TL = 2*pi/6;
T0 = -2*pi/6;
k = 10;
dT0 = fzero(@(x) funzeroproj(x,TL,T0,k),1)