我有两个不同的问题,但它们被发布在一起,因为我相信解决方案是相关的。我正在测试牛顿法和割线法(每个方法都是用循环实现的),并在相同的轴上绘制结果与计算时间的关系以比较它们。我希望(离散)牛顿法结果用蓝线连接,割线法结果用红线连接。反过来,这些行由相应的图例注释。这不会发生,因为绘图上的每个点似乎都被考虑在单个对象上,因为它们是单独创建的。该legend
命令会显示两个蓝色星号,而不是一个蓝色星号和一个红色星号(我希望我可以在这里发布我的情节,但我还没有图像特权。)
这是我的缩写代码:
f = (x) % define function
figure
hold on
%% Newton
tic
while % terminating condition
% [Newtons method]
t = toc;
plot(t,log(abs(f(z)),'b*-')
end
%% Secant
tic
while % terminating condition
% [secant method]
t = toc;
plot(t,log(abs(f(z)),'r*-')
end
legend('Newton''s','Secant')
不用说,'-'
in thelinespec
什么都不做,因为只绘制了一个点,而不是一条线。我知道我可以用类似的东西在每次迭代中绘制一个线图plot([t_old t],[log(abs(f(z_old) log(abs(f(z)])
,但这并不理想,尤其是因为log(abs(f(z_old)))
每次都必须重新评估。此外,这并不能解决传说中的问题。
我认为,如果我能让 MATLAB 了解我正在尝试在轴上创建两个对象,一条蓝线和一条红线,我认为这两个问题都将得到解决。谢谢你。