【问题标题】:Matlab Maxima Minima FunctionMatlab 极大极小函数
【发布时间】:2015-03-12 21:32:54
【问题描述】:

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

这是我目前所拥有的:

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

【问题讨论】:

  • 根据您的“顶点”公式,a=v(3), b=v(2), c = v(1)。对吗?
  • 对。我希望 matlab 会采用 x^2 和 coeffs (x^2) = [0,0,1],但它只是 1

标签: matlab function if-statement minima


【解决方案1】:

获取包括零在内的所有系数,请使用sym2poly 而不是coeffs

v = sym2poly(f(x));

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

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

【讨论】:

  • 完美,这是我需要的函数而不是 coeffs,非常感谢!
【解决方案2】:

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

【讨论】:

  • 和我所有的其他 if elses :(
  • @ADH 查看我的编辑 - 您应该单独留下程序的尾部(关于顶点 wrt a,b 位置的测试)
  • 我明白了,但是有两种情况,长度(v)==2,当它是 x^2 和一个 x 项时;或 x^2 和一个常数。这有关系吗?
  • @ADH 我不知道,这是一个数学问题,但如果有不同的条件,只需在 length(v)==2 子句中添加另一个 if/else 子句来解决这两种可能性。要点是在这棵 if/else 树之后,您应该得出一个顶点值。
  • 好吧,这个问题比我想要和期望的要多得多,但我会试一试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多