logo
matlab_final

2.4. Построение линий уровня

Построение линий уровня очень похоже на построение трехмерных графиков. Для этого сначала также необходимо создать двумерную сетку, в узлах которой будут рассчитываться значения функций, а затем для построения линий уровня используется функция contour, параметры которой во многом напоминают параметры функций surf и mesh, описанных в предыдущем разделе. Следующий пример строит линии уровня функции Швефеля, результат показан на рисунке 2.26.

>> meshx = -500: 10: 500;

>> meshy = -500: 10: 500;

>> [X, Y] = meshgrid (meshx, meshy);

>> Z = X .* sin ( sqrt ( abs (X) ) ) + Y .* sin ( sqrt ( abs (Y) ) );

>> contour (X, Y, Z)

Рис. 2.26.

Функцию contour можно использовать с дополнительным параметром: contour (X, Y, Z, n), где n – целое положительное число, которое задает количество выделяемых уровней на графике. Если в предыдущем примере заменить последнюю команду на contour (X, Y, Z, 20), то график примет вид, показанный на рисунке 2.27.

Рис. 2.27.

Кроме того, вместо последнего параметра можно использовать вектор, элементы которого определяют уровни, для которых надо построить линии. Следующий пример рисует три уровня для Z = -500; 0 и 500 (результат показан на рисунке 2.28).

>> meshx = -500: 10: 500;

>> meshy = -500: 10: 500;

>> [X, Y] = meshgrid (meshx, meshy);

>> Z = X .* sin ( sqrt ( abs (X) ) ) + Y .* sin ( sqrt ( abs (Y) ) );

>> contour (X, Y, Z, [-500 0 500])

Рис. 2.28.

Так как матрица размером 1x1 MATLAB воспринимает как число, то для того, чтобы построить одну линию уровня для определенного значения Z, в качестве последнего параметра функции contour нужно передать матрицу размером 2x1, где оба элемента матрицы будут одинаковыми, то есть должны определять один и тот же отображаемый уровень. Например: contour (X, Y, Z, [0, 0]).

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4