Я пытаюсь запустить fsolve
для решения уравнения диссоциации, но продолжаю получать эту ошибку. Я отследил его до термина x(1)^(1/2)
(удаление квадратного корня не дает ошибки), но я не могу найти способ решить нужное мне уравнение. Код ниже.
T = 2000
Kp = exp(-deltaG/(Ru*T))
function [f]=func(x)
f(1) = 2-x(1)*4 / (3*x(1) - 1)*(x(1))^(1/2) - Kp
endfunction
x0 = [1]
[x,f_x] = fsolve(x0,func)
EDIT: дополнительная запрашиваемая информация
Ошибка
!--error 98 переменная, возвращаемая аргументной функцией scilab, неверна
Ru
— газовая постоянная, 8.315
.
DeltaG
is -135643
.
Kp
is 3.489e-3
.
Это пример из книги, x
должно дать 0.3334
.
Что вроде решило эту проблему, так это то, что я обновил scilab до версии 6.0.1 с 5.5. Проблема в том, что в зависимости от начального предположения x0
значения x
становятся действительно абсурдными, а x0
должно быть настолько близко к реальному ответу, что это противоречит цели расчета.
Также у меня нет доступа к Maple, другой моей альтернативой будет MATLAB.
detalG
иRu
? Вам нужно добавить эту информацию к вашему вопросу. - person luispauloml   schedule 27.03.2018fsolve
работает только с вещественными числами. Поэтому обязательно отвечайте на вопросы @luispauloml. - person PTRK   schedule 27.03.2018func
очень близка к нулю для всех точек, за исключением разрыва около 0,3333, что также очень близко к решениюfunc
(см. i.stack.imgur.com/j8AoI.png). Из-за этогоfsolve
возвращает номер индикатора завершения. 4, это означает, что итерация не продвигается должным образом. Вам следует попробовать другой метод, напримерoptim
илиfminsearch
, который позволяет выбирать и настраивать различные алгоритмы. - person luispauloml   schedule 01.04.2018