Я использую MATLAB и хочу найти root уравнения F (x) -u = 0. Здесь u=0.2861
и
F=normcdf(sqrt(lambda/t)*(t/mu-1))+exp(2*lambda/mu)*normcdf(-sqrt(lambda/t)*(t/mu+1)).
Значения lambda
и mu
равны 1.
Я набрал следующий код
[x,fval] = fzero(@(t) normcdf(sqrt(lambda/t)*(t/mu-1))+exp(2*lambda/mu)*normcdf(-sqrt(lambda/t)*(t/mu+1))-u, 10);
и надеюсь это может помочь мне найти root. Я могу математически показать, что это уравнение имеет уникальный root. Тем не менее, я продолжаю получать следующую ошибку
Ошибка при использовании erfc
Ввод должен быть действительным и полным.
Ошибка в normcdf
> localnormcdf
(строка 128) p(todo) = 0.5 * erfc(-z ./
sqrt(2));
Ошибка в normcdf
(строка 50) [varargout{1:max(1,nargout)}] =
localnormcdf(uflag,x,varargin{:});
Ошибка в Test
> @(t)normcdf(sqrt(lambda/t)*(t/mu-1))+exp(2*lambda/mu)*normcdf(-sqrt(lambda/t)*(t/mu+1))-u
Ошибка в fzero
(строка 363) a = x - dx; fa = FunFcn(a,varargin{:});
Затем я применил метод "брутальной силы".
t = [0:0.001:20];
F = normcdf(sqrt(lambda./t).*(t/mu-1))+exp(2*lambda/mu).*normcdf(-sqrt(lambda./t).*(t/mu+1))-u;
plot(t,F)
Я ясно вижу, что F(t)-u
увеличивается в t
и root составляет около 0,4. У меня вопрос, почему fzero
не работает в этом случае и есть ли способ заставить fzero
работать?