-1

我正在做一系列算术运算来确定线方程并用ezplot. 但坏事发生在a或时b = 0。我想在0其中保存线方程(如5*x+0*y-1=0),但y消失了,o 找到另一种解决方法。

在这里编辑
我的代码示例:

syms x y
hold on
for i = -1:0.5:1
    for j = -1:0.5:1
        ezplot(i*x+j*y+1, [0,10,0,10])
        pause
    end
end  

a我可以在或时手动画线b = 0,但我想要更通用的方法。

4

1 回答 1

0

我仍然不明白您的问题,但是当我运行您的示例时,第三次迭代出现以下错误:

使用图窗时出错
单个输入必须是现有图窗句柄或
从 1 到 2147483646 的标量整数

ezplot>determineAxes 中的错误(第 563 行)
图(图);

ezplot>ezplot1 中的错误(第 449 行)
cax = determineAxes(fig);

ezplot 错误(第 145 行)
[hp,cax] = ezplot1(cax, f{1}, vars, labels,
args{:});

sym/ezplot 错误(第 72 行)
h = ezplot(fhandle(f),[y(1) y(2)],[y(3) y(4)]);

minimum_example 错误(第 7 行)
ezplot(i*x+j*y+1, [0,10,0,10])

(下次您询问时,请包括此类信息)。
发生的情况是,对于 - 在您的代码中ij但在您的问题中ab-x或者y0您相乘的情况,现在提供了太多的输入参数。其中一个被解释为图形句柄,因此评估无法继续(因为没有句柄的图形0- 所有图形都有一个整数值作为句柄,因此出现错误)。
以下代码通过为ezplot. 此外,我已更改ij与您问题中的命名相对应 ab

syms x y

% define a figure and return the handle, f1
f1=figure;

% after initializing the figure, set hold on
hold on

for a = -1:0.5:1
    for b = -1:0.5:1
        % pass the figure handle, f1, to ezplot:
        ezplot(a*x+b*y+1, [0,10,0,10],f1)
        pause
    end
end

现在,您将获得情节中的所有线条。

编辑

在 or 的情况下,a=0b=0可能会得到意想不到的结果,因为等式在传递给ezplot. 因此0*y将导致它从评估中消失。0您可以通过使用浮点相对精度eps而不是使用来绕过此行为:

syms x y

% define a figure and return the handle, f1
f1=figure;

% after initializing the figure, set hold on
hold on

for a = -1:0.5:1
    for b = -1:0.5:1
        % pass the figure handle, f1, to ezplot:
        % add eps to a and b so that the will be as close to zero
        %    as possible but not truly zero
        ezplot((a+eps)*x+(b+eps)*y+1, [0,10,0,10],f1);
        pause
    end
end
于 2013-09-26T18:26:53.403 回答