У меня есть функция.m такая, что function(x,y)
, которая является непрерывной функцией для нее, четко определена.Для каждого y
в диапазоне от 0.04:0.02:0.2
я хочу найти x
такой, что function(x,y)
дает значение 0.5
.К сожалению, function(x,y)
не определен ни для какого x
.Например, когда y=0.04
, function(x,y)=0.4
, когда x=2
, function(x,y)=0.55
, когда x=3
.Это также дает, что function(x,y)=-inf
когда x<2
.С другой стороны, когда y=0.05
, function(x,y)=0.4
, когда x=5
, function(x,y)=0.81
, когда x=9
и function(x,y)=-inf
, когда x<5
.Я хотел бы использовать fmincon
в Matlab для решения проблемы, поэтому я пишу цикл, чтобы я нашел x
y = 0,04: 0,02: 0,2;
дляi = 1: длина (y)
результат = fmincon (@ (x) abs (функция (x, y (i)) - 0,5), 2, [], [], [], [], [], []);
end
Однако при выполнении оптимизации бывает, что, например, когда y=0.04
, x
является значением, выбранным какменьше 2 и дает значение -inf и не может идти дальше.Я хотел бы знать, можно ли установить, что matlab может находить только конечные значения, или когда он пытается указать точку, которая дает target -inf, он может автоматически найти другое значение x и продолжить процедуру.
Я понимаю, что мог бы найти определенный диапазон, который сначала дает значение 0.5
для каждого y
, но это очень много времени, и я не хочу этого делать.