Вместо этого попробуйте использовать численный метод. Вы все равно не используете рациональные числа, так что даже если ваше символьное решение сработает, ответы не будут иметь смысла.
Затем сделайте следующее:
1) Определите свою функцию как
f = @(x)(250-25)./((0.0106+1.89799*10^-3)+(log(x./15)/2*3.14*45)+(1/10*2*3.14.*x))-157.19
где -157,19 — правая часть (это обычно делается при решении уравнения, потому что тогда можно использовать метод для нахождения корня, например, метод Ньютона-Рафсона).
2) Здесь есть журнал усложнения (отрицательное число) становится сложным. Это значит, что fzero
здесь работать не будет (не важно, что это не в вашем домене). К счастью, в Matlab есть другой решатель численных уравнений, который может справиться с этим fsolve
.
Чтобы решить уравнение, попробуйте
myRoot = fsolve(f,15) % Number is tested to work good in this case and not
% a general best guess for numerical solutions
Если вы попытаетесь пойти другим путем, у вас будет ошибка округления для комплексных чисел. Пытаться,
myRoot = fsolve(f,4)
это означает, что для получения действительного решения вам нужно удалить мнимую часть ответа (здесь это безопасно, поскольку вы знаете, что мнимая часть получается из-за ошибки округления).
myRoot = real(fsolve(f,4))
person
patrik
schedule
09.12.2014
ans
, вы получите13.5658
. - person Schorsch   schedule 09.12.2014