0

所以我离成功编写这个函数只有几步之遥:

在此处输入图像描述

这是我到目前为止所拥有的:

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。因为那时我的顶点函数失败了

4

2 回答 2

0

由于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));

于 2015-03-03T22:51:57.603 回答
0

获得包括零在内的所有系数,请使用sym2poly代替coeffs

v = sym2poly(f(x));

这将结果作为double向量而不是作为sym. 如果你需要它是sym你需要转换:

v = sym(sym2poly(f(x)));
于 2015-03-04T08:20:49.290 回答