Проблема в том, что ezplot()
полезен, но не настолько надежен.
Лучшим вариантом для построения функции без дискретных точек является fplot()
. Проверьте документацию для него .
Вот пример того, как его использовать по сравнению с 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])