Функция минимума Matlab

Так что я в нескольких шагах от успешного написания этой функции:

Вот что у меня так далеко:

function a=myanalyzecp(f,a,b)
syms x;
v=coeffs(f(x)); % grabs function's coefficients
vertex=(-v(2))/(2*v(3)); % vertex formula 
if (a<vertex && vertex<b)
    if (diff(diff(f(x)))>0) % f''>0 means minima
        a=1;
    else
        a=-1;
    end
else
    a=0;
end

Проблема, с которой я сталкиваюсь, заключается в том, что функция имеет только 1 или 2 члена, например, x^2 или x^2+4 или x^2+4*x. Потому что тогда моя вершина не работает

2 ответа

Решение

Чтобы получить все коэффициенты, включая нули, используйте sym2poly вместо coeffs:

v = sym2poly(f(x));

Это дает результат как double вектор, а не как sym, Если вам нужно, чтобы это было sym вам нужно конвертировать:

v = sym(sym2poly(f(x)));

Поскольку v может содержать только один или два элемента, например, добавить тест

if length(v)==1, 
   vertex = ... 
elseif length(v)==2
   vertex = ...
else
   vertex=(-v(2))/(2*v(3));
end

Это должно заменить vertex=(-v(2))/(2*v(3));

Другие вопросы по тегам