Я пытаюсь запустить функцию fseminf
f = @(x) (x(1)-2).^2 + (x(2)-0.2).^2;
g = @(x,s) 5*x(1).^2*sin(pi*sqrt(s))/(1+s.^2) - x(2);
lb = [-1,0];
ub = [1 ,0.2];
S = [0,1];
A = [];
b = [];
Aeq = [];
beq = [];
x0 = [0,0];
x = fseminf(f,x0,1,@seminfcon1,A,b,Aeq,beq,lb,ub);
Где:
function [c, ceq, K1, s] = seminfcon1(x,s)
global S g
% No finite nonlinear inequality and equality constraints
c = [];
ceq = [];
% Sample set
if isnan(s)
% Initial sampling interval
s = [0.0001 0];
end
t = S(1):s(1):S(2);
% Evaluate the semi-infinite constraint
K1 = g(x,t);
Это код, который я использую для создания конечного набора из S, который является интервалом.Я не понимаю, как это работает, почему мы используем функцию isnan вместо простого объявления s = [0,0001] (что, кстати, не работает).Он используется для fseminf alghoritm, я взял код из примера.