为什么当我在例如[1 1.5]区间使用ezplot时,在一些线条中会出现不连续性,但是当我使用像[1.3 1.5]这样的更近的区间时,不连续性将被消灭?
答案 0 :(得分:1)
EZPLOT是一个通用的绘图功能,它将自动选择一组点来评估和绘制传递给它的函数。大多数时候,事情都很好。但是在某些特殊情况下EZPLOT可能会遇到麻烦。它可能无法在函数快速变化的不连续点或点附近很好地呈现(它可能会误认为不连续)。
这是一个功能的缺点,它被设计成足以接受你给它的任何函数:很难使它足够通用来处理一切完全正确,所以一些特殊的边缘案例看起来有点滑稽。在这种情况下,你应该避免像EZPLOT这样的函数(它为你做出很多选择),并通过在你选择的点评估你的函数并使用{来绘制这些点来自己绘图。 {3}}功能。这是PLOT。
答案 1 :(得分:1)
问题是ezplot()
很有用,但不是很有用。
绘制没有离散点的函数的更好选项是fplot()
。查看documentation for it。
以下是与ezplot()
相比如何使用它的示例:
lowerBound = 0;
upperBound = 1;
%# The ezplot way:
ezplot('y=sin(1/x)',[lowerBound,upperBound,-1,1])
%# The fplot way:
fplot('sin(1/x)',[lowerBound,upperBound])
fplot()
将评估功能变化更快的更多点。因此,如果仔细观察,不连续性仍会在图表中引起问题,但是会更加努力地准确地绘制它们。
要绘制具有三个变量的函数的水平曲线,需要更多输入:
%# First create a grid where you want the function to be drawn
[x,y]=meshgrid(-2:.01:2);
%# Remember that -2:.01:2 creates a vector with values from -2 to 2
%# in steps of .01
%# Then define your function
z=-3*y./(x.^2+y.^2+1);
%# Now graph the level curve of the function. I chose the level z=0.5:
contour(x,y,z,[0.5])