Построение графиков в полярных координатах
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Полярная система координат состоит из заданной фиксированной точки O , называемой полюсом, концентрических окружностей с центром в полюсе и лучей, выходящих из точки O, один из которых OX – полярная ось.

Расположение любой точки M в полярных координатах можно задать положительным числом ρ=|ОМ|, равным расстоянию от полюса до точки, и числом φ, равным величине угла ХОМ (полярный угол). ρ и φ называют полярными координатами точки M , и точку обозначают M (ρ, φ). Для формирования графика в полярных координатах используется функция polar(φ, ρ, s),где φ - массив полярных углов, ρ - массив значений полярных радиусов точек, образующих графики, s – строка, состоящая из трех символов, которые определяют цвет линии, тип маркера и тип линии.

Пусть требуется построить график функции r (φ)=5 cos (2-7φ). При построении графика функции в полярных координатах будем изменять аргумент от 0 до 2 p .

Необходимо сформировать массивы значений полярного угла φ и полярного радиуса r (аргументом является угол).

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

>> r=5*cos(2-7*fi);

>> рolar(fi, r);

Можно также указать тип и цвет линий, тогда :

>>fi=0:pi/200:2*pi;

>> r=5*cos(2-7*fi);

>> рolar(fi, r,'r*-');’

Для построения траектории движения точки на плоскости (анимация) предусмотрена функция comet, а для построения траектории движения точки в трехмерном пространстве – функция comet3. Это простой способ создать анимированное изображение.

Изобразим движение точки по траектории, заданной параметрически.

>> t=0:0.005:2*pi;

>> x=cos(5*t).*(t+5);

>> y=sin(5*t).*(t+5);

>> comet(x,y)

Построим траекторию движения точки в пространстве.

>> t=-10*pi:pi/300:10*pi;

>> x=(sin(t).^3).*cos(t);

>> y=(cos(t).^3).*sin(t);

>> comet3(x,y,t)

Для более сложной анимации можно использовать команды getframe и movieview. Команда getframe захватывает активное окно изображения в один кадр фильма, а команда movieview воспроизводит результат в отдельном окне. Приведенные ниже команды воспроизводят кадры с вибрирующей струной:

>>x=0:0.01:1;

>>for n=0:50

>>plot(x,sin(n*pi/5)*sin(pi*x)),axis([0,1,-2,2])

>>m(n+1)=getframe;

>>end

>>movieview(m)

В приведенном выше примере для организации цикла используется оператор for, работа которого будет описана далее.

Трехмерная графика.

График поверхности (трехмерный график) – это график, положение точки в котором определяется значениями трех координат. Трехмерным аналогом функции plot является функция plot 3, которая позволяет создавать трехмерные линии. Если есть три вектора x , y , z, задающих координаты точек в трехмерном пространстве, то при выполнении функции plot 3( x , y , z ), построится трехмерная линия на плоскости.

Пусть требуется построить график линии, заданной формулами:

x=2sin(t+ p /2),

 y=2cos(t+ p /2),

 z = t , где t принадлежит диапазону [0, 8 p ]

>> t=0:pi/100:8*pi;

>> x=2*sin(t+pi/2);

>> y=2*cos(t+pi/2);

>> z=t;

>> plot3(x,y,z);

>> axis square;

>> grid on

Построилась винтовая линия (спираль).

Функция plot 3, также как и функция plot, может иметь дополнительный аргумент, задающий параметры линии (тип линии, цвет и тип маркера). Например, plot 3( x , y , z , ‘ g *’).

Можно также использовать команду ezplot 3:

>> ezplot3('cos(2*pi*t)','sin(2*pi*t)','t',[-2,2])

Для вычерчивания каркасных поверхностей в трехмерном пространстве существуют две основные функции: mesh и surf .

Команда mesh ( Z ) – строит прозрачную сетчатую поверхность, а команда surf ( Z )- затененную, где Z - матрица, значения элементов которой определяют соответствующие координаты на графике. Построим прозрачную поверхность для единичной матрицы, задав команды:

>>Z=eye(8);

>>mesh(Z)

По главной диагонали расположены “пики” – единицы.

Аналогично, задав команду:

>>surf(Z)

Получим затененную поверхность.

Для построения в трехмерном пространстве функции от 2-х переменных Z (X, Y ) необходимо сначала с помощью векторов x и y задать прямоугольную сетку, которая будет использоваться как основание для построения трехмерной поверхности. Для этого надо воспользоваться функцией meshgrid, которая создает эту сетку из точек в прямоугольной области с заданными интервалами. Диапазоны значений по осям x и y задаются векторами x и y соответственно. Имена векторов и матриц могут различаться.

Пусть значения по осям x и y заданы векторами x и y:

>> x=[1 2 3];

>> y=[4 5 6];

Сформируем матрицы X и Y с помощью функции meshgrid :

>> [X,Y]=meshgrid (x,y)

X =

1 2    3

1 2 3

1 2 3

Y =

4 4 4

5 5 5

6 6 6

На основе векторов x и y формируются две матрицы, в которые записываются координаты узлов сетки. Матрица X содержит одинаковые строки, в которых заданы координаты X . Матрица Y содержит одинаковые столбцы, в которых заданы координаты Y . Наложение матриц X и Y позволяет получить пары (xi и yj), для которых в дальнейшем вычисляется значение функции Z. Значения функции в узлах сетки записываются в матрицу Z , размерность которой равна размерности матриц X и Y .

Построим график функции, которая имеет вид:

 на заданном интервале от-2 до 2 и от y от -4 до 4 с шагом равным 0.1

Зададим два вектора x и y, используя запись:

>>x =-2 : 0.1: 2;

>>y =-4 : 0.1 :4;

Далее вызывается команда

>>[X, Y]=meshgrid(x, y)

Значения векторов можно указать прямо внутри команды meshgrid(-2:0.1:2,-4:0.1:4)

Если оба вектора одинаковые, то можно записать: [X, Y]= meshgrid(x )

Создаётся прямоугольная сетка с шагом 0.1, которая используется для построения 3-х мерной поверхности. Каждому значению x ставится в соответствие каждое значение y. Для каждой пары xi yi,, (в узлах сетки) будет вычислено значение функции Z . В результате сформируется матрица из вычисленных значений функции. После этого можно вызвать команду для вывода изображения на экран.

Ниже приведен пример построения графика с использованием функции plot 3:

>>x=-2:0.1:2;

>>y=-4:0.1:4;

>>[X, Y]=meshgrid(x, y);

>>Z=2*X.*exp(-X.^2 - Y.^2);

>>plot3(X, Y, Z)

>>grid

Более наглядные графики получаются с использованием функции mesh .

>> mesh(X,Y,Z)

Линии на разных участках графика окрашены в разные цвета. Эти цвета соответствуют значениям функции. По умолчанию оттенки красного цвета соответствуют большим значениям функции, а синего – меньшим.

Можно сделать “прозрачной” каркасную поверхность, отобразив ее скрытые части, применив команду hidden off . Отмена - hidden on.

Если использовать функцию meshz (X, Y , Z ), то будет видно основание, на котором построен график.

Пример построения сферы.

Пусть необходимо начертить поверхность, которая не может быть представлена выражением z = f ( x , y ), например, сферу x 2 + y 2 + z 2 =1. В этом случае параметры поверхности можно задать, используя подходящую координатную систему, например, сферические координаты. Можно взять в качестве параметров вертикальную координату z и полярную координату q на плоскости
x - y.

Если r обозначает расстояние до оси z , то тогда выражение для сферы становится r 2 + z 2 =1 или  отсюда ,

Построение сферической поверхности можно выполнить командами:

>>[z,t]=meshgrid(-1: 0.1: 1, (0:0.1:2)*pi);

 Вектор значений Z   Вектор значений t от 0 до 2 π

>>x=sqrt(1-z.^2).*cos(t);

>>y=sqrt(1-z.^2).*sin(t);

>>surf(x,y,z)

>>axis square

Все трехмерные графики, которые мы строили, можно было видеть только из одной точки обзора, т.е. позиции, с которой мы видим трехмерное изображение. В ML можно изменять точку обзора. Эта точка характеризуется двумя параметрами: азимутом (Az ) и углом возвышения (El ). Азимут определяет угол поворота вокруг оси z  и отсчитывается от оси, противоположной y, в направлении против часовой стрелки. Угол возвышения – это угол между отрезком, направленным из начала координат в точку обзора, и плоскостью xy. Точку обзора можно менять программно, используя функцию view ( Az , El ) или более просто, используя специальную кнопку на панели инструментов графического окна Figure – Rotate 3-D.


Программирование в ML

Система ML предоставляет пользователю для решения различных задач мощный язык программирования высокого уровня, понятный непрофессиональным программистам. До сих пор все вычисления и операции мы производили в режиме прямых вычислений. Для эффективной работы с большими наборами команд этого недостаточно. Гораздо лучше было бы записать этот набор команд в виде программы и сохранить ее на диске. Программа представляет собой последовательность команд, записанных на языке ML (программный код), и сохраняется на диске в виде m - файла.

Создать m - файл можно с помощью любого текстового редактора, но в ML предусмотрен собственный встроенный редактор EDITOR , который имеет удобные средства для создания и отладки программ. Написанный текст программы студенты должны сохранять в файле на диске, куда разрешена запись, задав ему имя (имя файла и имя каталога не должны содержать русских букв). Этот файл будет иметь расширение .m. Чтобы войти в текстовый редактор, надо выбрать пункт меню File , New , m - file. В редакторе m- файлов можно не только набрать текст программы, но и запустить ее на выполнение. Для сохранения программы на диске надо выбрать пункт меню File , Save as , <имя m -файла>.

m - файлы могут быть двух видов:

· файл-программа, или Script -файл (Script m - File );

·  файл-функция (Function m-File).

Файлы-программы называют Script -файлами или сценариями. Они состоят из последовательности команд и не имеют входных и выходных параметров. Они обычно используются для автоматизации выполнения большого набора команд. Вызов Script -файла осуществляется просто указанием его имени.

В файлах- функциях описываются функции, определяемые пользователем. Они могут иметь входные и выходные значения. Обращение к файлу-функции осуществляется указанием имени и в круглых скобках списка параметров.

Операторы языка

Программа может иметь комментарии. Символ % означает, что далее следует поясняющий текст. Все комментарии начинаются с этого знака. Комментарий не является исполняемым оператором.

Вывод комментариев на экран при выполнении программы обеспечивает оператор echo on. Отменяет вывод комментариев на экран оператор echo off. Оператор pause приостанавливает выполнение программы и ожидает нажатия любой клавиши для продолжения. Оператор pause(n) создает паузу в n секунд.

Операторами языка можно пользоваться как при создании программ, так и в режиме прямых вычислений.

Операторы ввода/вывода

Интерактивное взаимодействие пользователя с программой реализуется с помощью операторов i nput и display.

Оператор i nput (<текст> ) обеспечивает ввод данных с клавиатуры. Текст, указанный в качестве параметра, заключается в апострофы. Он отображается на экране при вводе. Обращение к этой функции имеет вид:

<имя переменной>= i nput (‘<текст>’)

Например, при выполнении команды x = input (‘вв. x = ’) на экран выводится текст ’вв. х=’ и ожидается ввод данных с клавиатуры. Введенное данное присваивается переменной х.

При наборе в командном окне:

>> r=input('Введите радиус ');

На экране получим:

Введите радиус

Далее ожидается ввод значения переменной r .

Если в текст выводимой строки ввести символы '\ n ’, то курсор будет перемещен на следующую строку.

>> r=input('Введите \n радиус ');

Введите

 радиус=

Оператор display (<параметр>) или disp (<параметр> ) выводит значение переменной или константы.

disp(A) – выведет матрицу А, причем выводятся только значения элементов, а текст ‘А=’, выводится не будет.

disp(‘Привет’) - на экране будет выведено слово Привет

Дата: 2019-02-02, просмотров: 358.