警告:可能是虚假的解决方案。 [solvelib :: checkSolutions]

时间:2014-02-12 15:59:34

标签: matlab warnings solution polynomial-math symbolic-math

我试图在for循环中解决四个代数方程。它正在发出警告“可能是虚假的解决方案”。你可以帮我弄清楚如何删除它。代码附于此处。

a=[1.78E-05 3.39E-04    0.0104  -0.05791    -16.36];

for i=1:R/l0
    syms x y l r
    [sol_l,sol_r,sol_x,sol_y] = solve(l == (sqrt((x-x0)^2+(y-y0)^2)), r == abs((x+x0)/2),...
    poly2sym(a) == y, l*r*t == l0*r0*t0,x,y,l,r, 'Real', true);
    for j=1:length(sol_x)
        if (sol_x(j)<0)&&(sol_x(j)>x0)
            if (sol_y(j)<0)&&(sol_y(j)<y0)
                x_req(1,i) = sol_x(j);
                y_req(1,i) = sol_y(j);
            end
        end
    end
    x0 = x_req(1,i);
    y0 = y_req(1,i);
    r0 = R-l0*(2*i-1)/2;    
   end

1 个答案:

答案 0 :(得分:2)

如果您将第一个等式更改为此,警告将不再显示:

l^2 == (x-x0)^2+(y-y0)^2

我不确定你是否真的有虚假的价值观。平方根可能会给solvelib::checkSolutions带来麻烦。

您可能认为在检查时存在虚假值,因为您没有正确输出变量。您指定solve求解xylr(按此顺序),然​​后将输出变量命名为{{1 }},sol_lsol_rsol_x(不同的顺序)。你必须使用相同的顺序,因为`解决不能根据变量的名称进行猜测。

您的代码:

sol_y

检查返回接近零的小值。