Материал: Matlab. Практический подход. Самоучитель

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Самоучитель Matlab

Рис. 2.21. График создан в декартовых координатах

Несмотря на такую простоту и эффективность, пользоваться функцией polar() следует достаточно осторожно. Дело в том, что по определению, в полярных координатах полагают r ≥ 0 . Поэтому если формально функциональная зависимость такая, что r -координата должна быть отрицательной, то обычно это означает, что r = 0 (или что для этого углового сегмента функциональная зависимость не определена). Несколько иначе дела обстоят в Matlab. При построении графика в полярных координатах точки с отрицательными r -координатами тоже отображаются на графике. В этом случае выполняется инверсия направления на точку. Другими словами, если точка для отображения на графике имеет координаты (ϕ,r), причем r < 0 , то отображается точка с координатами (ϕ + π,−r) .

В рассмотренном выше примере при создании векторов значений координат точек графика вектор для r -координат содержит отрицательные значения (желающие могут в этом убедиться, для чего достаточно ввести в командную строку имя переменной r и нажать клавишу <Enter>).

На заметку

Это, кстати, вполне логично и правильно – вектор координат создается, в соответствии с уравнением кривой, по тем же правилам, что и обычные векторы. Было бы странным, если бы отрицательные значения почему-то игнорировались или обрабатывались по-особенному.

66

Глава 2. Графика в Matlab

Почему же график, приведенный выше, был простроен правильно? Причина проста: часть графика, построенная по точкам с отрицательными r -координатами, дублирует ту часть графика, что построена по положительным r -координатам. Действительно, для зависимости, определяющей кривую в полярных координатах, имеет место соотношение r = sin(3(ϕ + π)) = sin(3ϕ + 3π) = −sin(3ϕ) . Другими словами, симметрия графика такова, что даже по "неправильному" набору точек получается "правильный" график. Такая ситуация имеет место для зависимостей r(ϕ), для которых r(ϕ + π) = −r(ϕ) . Однако далеко не все кривые обладают указанной симметрией. В качестве примера рассмотрим кривую, заданную соотношением r = 1 −2 sin(ϕ). Результат создания графика для этой зависимости в Matlab представлен на рис. 2.22.

Рис. 2.22. На графике отображена "лишняя" ветка

График построен последовательностью команд:

>> phi=0:0.01:2*pi;

 

 

 

 

 

>> r=1-2*sin(phi);

 

 

 

 

 

>> polar(phi,r)

1

 

5

 

 

В принципе, диапазон значений

π < ϕ <

π

полярного угла определяет

 

6

 

6

 

 

зону, в которой графика быть не должно (здесь 2 sin(ϕ) > 1) – его там и нет.

Зато есть дополнительная, меньшая, ветка графика. Эта ветка строится по точкам с отрицательными полярными координатами для значений полярного

67

Самоучитель Matlab

угла

1

π < ϕ <

5

π . В последнем убедиться достаточно легко – стоит лишь

6

6

 

 

 

 

=| 1 −2 sin(ϕ) |. Результат показан на рис. 2.23.

построить график функции r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.23. График построен по "правильному" набору точек

На заметку

Для создания графика вектор полярных координат вычисляется с помощью команды r=abs(1-2*sin(phi)), в которой использована встроенная функция вычисления модуля abs().

Принципиальное различие между графиками, представленными на рис. 2.22 и рис. 2.23, состоит в способе отображения "маленькой" ветки. На рис. 2.23 она отображена "правильно", в соответствии со способом определения функции. На рис. 2.22 наличие "маленькой" ветки – целиком "заслуга" Matlab. С математической точки зрения ее вообще не должно быть.

Несмотря на сделанное замечание, описанная особенность, связанная со способом отображения графиков в полярных координатах в Matlab, может быть достаточно полезной, и ею не следует пренебрегать. Если все же нужно, чтобы точки с отрицательными значениями для радиальных координат не отображались, необходимо предпринять некоторые специальные меры. Например, чтобы построить в полярных координатах "правильный" график для зависимости r(ϕ) = 1 −2 sin(ϕ), можно воспользоваться при создании вектора значений радиальной координаты вместо команды r=1-2*sin(phi)

68

Глава 2. Графика в Matlab

командой r=max(0,1-2*sin(phi)). В этом случае с помощью встроенной функции max() определения максимального значения из списка аргументов функции добиваемся того эффекта, что вместо отрицательных значений радиальных координат в вектор значений заносятся нулевые значения, как и должно быть. Результат желающие могут проверить самостоятельно.

Цвет и тип линий для графиков в полярных координатах определяются так же, как и для обычных графиков. В известном смысле это относится и к способу создания сразу нескольких графиков в одном графическом окне. Правда, функция polar() не воспринимает второй набор аргументов для отображения двух графиков – для этого нужно воспользоваться командой hold on и перейти в режим отображения графиков в одном окне без удаления уже существующих. На рис. 2.24 приведен пример создания нескольких графиков в полярных координатах.

Рис. 2.24. В одном графическом окне отображены два полярных графика

Для создания графиков в одном окне использовались следующие команды:

>>phi=-pi:0.01:pi;

>>r=cos(3*phi).^2;

>>Phi=0:0.01:10*pi;

>>R=Phi./(10*pi);

>>polar(phi,r,'--r')

>>hold on

>>polar(Phi,R,'-b')

69

Самоучитель Matlab

В результате в одном окне отображается сразу два графика: один красной штрихованной линией, другой – синей сплошной.

Графики в полярных координатах можно отображать в подокнах графического окна одновременно с обычными графиками (то есть графиками в декартовых координатах). Например, можно воспользоваться такой последовательностью команд:

>>y=sin(phi)./phi;

>>subplot(2,1,1)

>>plot(phi,y)

>>subplot(2,2,3)

>>polar(phi,r)

>>subplot(2,2,4)

>>polar(Phi,R)

>>subplot(2,1,1)

>>grid on

В результате получаем графическое окно с тремя подокнами: в верхнем подокне отображен график в декартовых координатах, а в двух нижних подокнах – графики в полярных координатах (рис. 2.25).

Рис. 2.25. Графики отображаются в подокнах графического окна

Такой подход является общим для работы с графиками разного типа, если они отображаются в подокнах одного графического окна.

70

Источник: https://studfile.net/preview/16433384/