用Matlab求解一个不等式

用Matlab求解一个不等式,matlab,symbolic-math,equation-solving,Matlab,Symbolic Math,Equation Solving,我必须解一个不等式,但手工太难了。因此,我想使用Matlab。设a=[(k-3)*sqrt(v)]/s和b=1.08148*a^2-epsilon,其中epsilon=10^(-6)。需要解决的不平等是: q(a,b) < s*sqrt(v) 我试着运行这个: syms x z av = ((x-3)*sqrt(v))/s; Q = max(roots([48*z^2+16*(1.08148*z-eps), -40*z^3-168*z*(1.08148*z-eps), -45*z^

我必须解一个不等式,但手工太难了。因此,我想使用Matlab。设
a=[(k-3)*sqrt(v)]/s
b=1.08148*a^2-epsilon
,其中
epsilon=10^(-6)
。需要解决的不平等是:

q(a,b) < s*sqrt(v)
我试着运行这个:

syms x z
  av = ((x-3)*sqrt(v))/s;
 Q = max(roots([48*z^2+16*(1.08148*z-eps), -40*z^3-168*z*(1.08148*z-eps), -45*z^4+225*z^2*(1.08148*z-eps)+72*(1.08148*z-eps)^2, 27*z^3*(1.08148*z-eps)-162*z*(1.08148*z-eps)^2, 27*(1.08148*z-eps)^3]));
 F = compose(Q,av);
solve(F-skew*sqrt(var)<0, x)
syms x z
av=((x-3)*sqrt(v))/s;
Q=max(根([48*z^2+16*(1.08148*z-eps),-40*z^3-168*z*(1.08148*z-eps),-45*z^4+225*z^2*(1.08148*z-eps)+72*(1.08148*z-eps)^2,27*z^3*(1.08148*z-eps)-162*z*(1.08148*z-eps)^2,27*(1.08148*z-eps)^3]);
F=合成(Q,av);

solve(F-skew*sqrt(var)错误信息似乎表明max()函数不支持sym x z

因为roots()的返回结果包括x和z。但是Matlab不知道x和z的值,所以它无法计算根的值,然后无法比较它们


也许你应该改进你的算法。

谢谢!但是,我一直得到相同的错误。可能是因为根函数,但我没有找到解决不等式的其他方法。我编辑了我的答案。你将只得到四个根,因此你可以手动比较它们或计算每个根的不等式,然后确定哪一个是真的手工求解。@SironI不确定为什么你需要使用符号数学而不是数字运算。
max
函数是不能用数字来简化的。有可能解决这个问题的方法,但你问题中的代码不是真正可以运行的……你似乎已经解决了这个问题。
syms x z
  av = ((x-3)*sqrt(v))/s;
 Q = max(roots([48*z^2+16*(1.08148*z-eps), -40*z^3-168*z*(1.08148*z-eps), -45*z^4+225*z^2*(1.08148*z-eps)+72*(1.08148*z-eps)^2, 27*z^3*(1.08148*z-eps)-162*z*(1.08148*z-eps)^2, 27*(1.08148*z-eps)^3]));
 F = compose(Q,av);
solve(F-skew*sqrt(var)<0, x)