我必须解决一个不平等问题,但这太难了。因此,我想使用Matlab。让a = [(k-3)*sqrt(v)]/s和b = 1.08148*a^2-epsilon,epsilon = 10^(-6)。需要解决的不平等是:
q(a,b) < s*sqrt(v)其中s和v是已知的。更准确地说,我想解决k的上述不等式(发生在a和b中)。现在,问题是q(a,b)是四次多项式的最大实根:
(48*a^2+16*b)*x^4 - (40*a^3+168*a*b)*x^3+(-45*a^4+225*a^2*b+72*b)*x^3+(27*a^2*b-162*a*b^2)*x+27*b^3我试过这样做:
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)但是Matlab不断地给出以下错误:
使用sym/max (第97行)输入参数时出错必须转换为浮点数. 测试T(第13行)R=max(根(2048,-6912*((x-3)sqrt(var)/skew)^2,8088((x-3)sqrt(var)/skew)^4,-3600((x-3)sqrt(var)/skew)^6,375((x-3)*sqrt(Var)/skew)^8)中的错误;
也许有人有更好的办法解决这个问题?最好的方法是,如果我对a和b的四次函数的最大实根q有一个显式表达式,那么这个显式表达式就太长了。
发布于 2016-03-17 13:37:55
错误信息似乎表明max()函数不支持sym。
因为返回的根()结果包含x和z.But,所以Matlab不知道x和z的值,所以不能计算根的值,然后不能比较它们。
也许你应该改进你的算法。
https://stackoverflow.com/questions/36062006
复制相似问题