Если у вас есть символическая панель инструментов в MATLAB, вы можете сделать следующее
syms x
x=solve('x^2*exp(-x)=y')
x=
(-2)*lambertw(k, -((-1)^l*y^(1/2))/2)
Здесь lambertw
- решение для y=x*exp(x)
, которое доступно как функция в MATLAB. Теперь вы можете определить функцию как
t=@(y,k,l)(-2)*lambertw(k, -((-1)^l*y^(1/2))/2)
lambertw
- это многозначная функция с несколькими ветвями. Переменная k
позволяет вам выбрать ответвление решения. Вам нужна главная ветвь, следовательно k=0
. l
(строчная буква L) просто для выбора подходящего квадратного корня из y
. Нам нужен положительный квадратный корень, следовательно l=0
. Следовательно, вы можете получить значение t
или время для любого значения y
, используя функцию.
Итак, используя ваш пример, t(0.3,0,0)
дает 0.8291
.
EDIT
Я забыл, что есть две ветви решения, которые дают вам реальные результаты (ответ gnovice напомнил мне об этом). Итак, для обоих решений используйте
t(0.3,[0,-1],0)
, что дает 0.8921
и 3.9528
.