Как решить ряд уравнений, используя цикл в MATLAB? - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь решить следующую серию уравнений и сохранить положительное решение для каждого уравнения

Вот код, который я использовал:

s=zeros(1,100);

for i=1:100
   syms l0 positive
   eqn(i)= .0017777*(l0^.25)/(.05-l0) == i;
   s(i)=solve(eqn(i),l0);
end

Но в конце яполучить следующую ошибку:

При преобразовании из sym в double произошла следующая ошибка: Невозможно преобразовать выражение в двойной массив.

Может кто-нибудь помочь мне решить эту проблему?

1 Ответ

2 голосов
/ 29 марта 2019

Из-за мощности 1/4 в вашем уравнении существуют сложные решения.

Вам нужны только реальные решения, поэтому укажите, что ...

solve(eqn(i),l0,'Real',true);

Это даст вам желаемый результат.

Обратите внимание, что MATLAB автоматически выполняет преобразование из символьного вывода solve в double, потому что вы инициализировали s как массив значений типа double, а не как символьный массив. Здесь вы теряете точность, но можете использовать ответ так же, как и любой другой двойной массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...