Реализация функции fzero, в которой есть вложенная функция

Обсуждение вопросов, связанных с Partial Differential Equations Toolbox и Comsol MultiPhysics (Femlab)Анализ данных и статистика в MATLAB. Проектирование систем управления в MATLAB\Simulink

Модератор: Admin

optimden
Пользователь
Сообщения: 4
Зарегистрирован: Ср фев 20, 2019 9:12 pm

Реализация функции fzero, в которой есть вложенная функция

Сообщение optimden » Чт апр 11, 2019 1:56 pm

Здравствуйте. Столкнулся с такой проблемой:
Надо найти нули функции f2(deltaUk). В тело этой функции входит переменная dk, которая также является функцией deltaUk. Помимо всего этого и f2 и dk зависят от переменной jk, но я сделал цикл по этой переменной, поэтому f2 и dk у меня зависят только от deltaUk.

Код:

Код: Выделить всё

i=1;
for jk=0.00001:0.01:10
    dk=@(deltaUk) ((4)^(1/3)*bi^(1/3)*deltaUk^(2/3)*eps0^(1/3)*(y+1)^(1/3))/(jk^(1/3));
    f2=@(deltaUk) (A_const.*p.*int(exp((B_const.*p.*(dk.^2))./(2.*deltaUk.*(x-dk))),x,0,dk)-log(1+(1./y)));
    Uk=fzero(f2,[0 3000]);
    Mass1(1,i)=jk;
    Mass2(2,i)=Uk;
    i=i+1;
end
disp(Mass1);


Матлаб выдаёт следующую ошибку:

Код: Выделить всё

??? Error using ==> fzero at 245
FZERO cannot continue because user supplied function_handle ==>
@(deltaUk)(A_const.*p.*int(exp((B_const.*p.*(dk.^2))./(2.*deltaUk.*(x-dk))),x,0,dk)-log(1+(1./y)))
failed with the error below.

Undefined function or method 'power' for input arguments of type 'function_handle'.

Error in ==> Collision at 91
    Uk=fzero(f2,[0 3000]);


Подскажите, пожалуйста, в чём может быть дело.