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

标签 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

最佳答案

如果您将第一个方程更改为此,警告将不再出现:

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

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

您可能认为在检查时存在虚假值,因为您没有正确输出变量。您指定 solve 求解 xylr(在该顺序),但随后将输出变量命名为 sol_lsol_rsol_xsol_y (不同的顺序)。您必须使用与“solve 无法根据变量名称猜测”相同的顺序。

您的代码:

R=30;
x0=-R;
y0=0;
l0=R/100;
t0=1.2;
t=0.7071;
r0=R-l0/2;
a=[1.78E-05 3.39E-04 0.0104 -0.05791 -16.36];

[sol_x,sol_y,sol_l,sol_r] = solve(l^2 == (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)
% Check
sol_l2.^2 - (sol_x2-x0).^2+(sol_y2-y0).^2
sol_r - abs((sol_x+x0)/2)
[subs(poly2sym(a),x,sol_x(1));subs(poly2sym(a),x,sol_x(2));...
 subs(poly2sym(a),x,sol_x(3));subs(poly2sym(a),x,sol_x(4))]-sol_y;
sol_l2.*sol_r2*t - l0*r0*t0

检查返回接近于零的小值。

关于matlab - 警告:可能是虚假的解决方案。 [solvelib::checkSolutions],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21733020/

相关文章:

matlab - 在 matlab 中绘制 2d 矩阵的 3d

performance - 加速嵌套 for 循环

c++ - 如何用 Armadillo 加载matlab矩阵?

c - 单独函数中的 Malloc 变量导致 "uninitialized in this function"

c - 警告 : unknown escape sequence: '\040' [enabled by default]

Matlab 音频处理

cocoa - Swift - 选择文件时发出警告(Cocoa)

c# - c# 项目中没有 .sln 文件

visual-studio-2010 - Visual Studio "resource"项目类型?

visual-studio-2010 - vs2010 创建新解决方案时出错