Как получить только положительное решение для квадратного уравнения с помощью MATLAB Symbolic Toolbox?

Я хочу решить это уравнение в Matlab.

e=2;
while (e<30)
    syms v;
    solve('(v-e) = -(0.5*0.2*1.276*v^2*0.3)');
    e=e+1;
end

Например, когда я пишу: "решите ('(v-10) = -(0.5*0.2*1.276*v^2*0.3)');" оно работает. Но мне нужна переменная "е" в этом уравнении. В некоторых случаях это уравнение имеет 2 решения (отрицательное и положительное), но мне нужны только положительные решения. Какой правильный синтаксис? Спасибо.

2 ответа

Решение

Добавить e к вашему уравнению вы можете представить его как число к вашему уравнению: ['equation part one', num2str(e), 'end of your equation'],

Чтобы получить только положительное решение, вы можете добавить условие в уравнение (v>=0).

Вот пример полного решения вашей проблемы:

ans = zeros(1,size(2:29,2));
i = 0;
syms v;
for e = 2:29
    i = i+1;
    ans(i) = solve(['(v-',num2str(e),') = -(0.5*0.2*1.276*v^2*0.3) and v>=0']);
end

Нет необходимости использовать строки, если вы не используете действительно старую версию Matlab. Это современный и предпочтительный способ использования solve:

syms v positive;
e = 2:29;
s = zeros(length(e),1);
for i=1:length(e)
    s(i) = double(solve(v-e(i)==-0.5*0.2*1.276*v^2*0.3,v));
end

Тем не менее, так как это просто многочлен, вы можете использовать roots функция:

e = 2:29;
s = zeros(length(e),1);
for i=1:length(e)
    r = roots([0.5*0.2*1.276*0.3 1 -e(i)]);
    s(i) = r(r>=0);
end
Другие вопросы по тегам