Matlab 最大值最小值函数
Matlab Maxima Minima Function
所以我离成功编写这个函数还有几步之遥:
这是我目前的情况:
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。因为那时我的顶点函数失败了
由于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));
要获取包括零的所有系数,请使用sym2poly
而不是coeffs
:
v = sym2poly(f(x));
将结果作为 double
向量,而不是 sym
。如果你需要它成为 sym
你需要转换:
v = sym(sym2poly(f(x)));
所以我离成功编写这个函数还有几步之遥:
这是我目前的情况:
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。因为那时我的顶点函数失败了
由于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));
要获取包括零的所有系数,请使用sym2poly
而不是coeffs
:
v = sym2poly(f(x));
将结果作为 double
向量,而不是 sym
。如果你需要它成为 sym
你需要转换:
v = sym(sym2poly(f(x)));