以下命令用Matlab解决问题的功能?
syms x real;
f = @(x) log(x^2)*exp(-1/(x^2));
fp(x) = diff(f(x),x);
fpp(x) = diff(fp(x),x);
和
solve(fpp(x)>0,x,'Real',true)
返回结果
解决([0.0 <(8.0 * EXP(-1.0/X^2))/ X^(2.0 * exp(-1.0/x^2))/ x^2 - (6.0 * log(x^2)* exp(-1.0/x^2))/ x^4 +(4.0 * log (x^2)* exp(-1.0/x^2))/ x^6], [x == RD_NINF..RD_INF])
这不是我所期望的。
第一个问题:是否可以迫使Matlab的solve
返回所有解的集合?
(这是有关this question)。此外,当我尝试求解方程式
solve(fpp(x)==0,x,'Real',true)
返回
ANS =
-1.5056100417680902125994180096313
我我不满意,因为所有的解决方案都没有退回(他们是ap从WolframAlpha获得的近似-1.5056,1.5056,-0.5663和0.5663)。
我知道vpasolve
与一些初步的猜测可以处理这个。但是,我不知道我通常如何找到初始猜测值来获得所有解决方案,这是我的第二个问题。
欢迎其他解决方案或建议来解决这些问题。
另一个有趣的问题是,为什么'solve(fpp(x)== 0,x,'Real',true)'返回一个不完整的结果,正如前面提到的那样有4个解。 – Daniel
'solve'被设计来做符号数学。正如[文档状态](http://www.mathworks.com/help/symbolic/solve.html#btrxs35-1)所述,“由于公式不是多项式,因此尝试查找所有可能的解决方案可能需要很长时间数值求解器不会尝试为这个方程寻找所有的数值解,而是只返回找到的第一个解。然而,Matlab有其他选项可用。我将为这种情况解决方案... – horchler