Главная страница
Навигация по странице:

  • Теоретическая часть

  • Рабочее задание

  • Ход выполнения работы.

  • Контрольная Информационные технологии. Информационные технологии


    Скачать 1.51 Mb.
    НазваниеИнформационные технологии
    АнкорКонтрольная Информационные технологии
    Дата10.06.2021
    Размер1.51 Mb.
    Формат файлаdocx
    Имя файлаКонтрольная Информационные технологии.docx
    ТипДокументы
    #216518
    страница4 из 7
    1   2   3   4   5   6   7

    Визуализация в MATLAB


    Цель работы: получение навыков визуализации решения задач в системе MATLAB.

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

    1. Теоретическая часть


    Одно из достоинств системы MATLAB – обилие средств графики, начиная от команд построения простых графиков функций одной переменной в декартовой системе координат и кончая комбинированными и презентационными графиками с элементами анимации, а также средствами проектирования графического пользовательского интерфейса (GUI). Особое внимание в системе уделено трехмерной графике с функциональной окраской отображаемых фигур и имитацией различных световых эффектов. Рассмотрим примеры наиболее часто используемых средств визуализации системы.

    Функции одной переменной у(х) находят широкое применение в практике математических и других расчетов, а также в технике компьютерного математического моделирования. Для отображения таких функций используются графики в декартовой (прямоугольной) системе координат. При этом обычно строятся две оси – горизонтальная X и вертикальная Y, и задаются координаты х и у, определяющие узловые точки функции у(х). Эти точки соединяются друг с другом отрезками прямых, т. е. при построении графика осуществляется линейная интерполяция для промежуточных точек. Поскольку MATLAB – матричная система, совокупность точек у(х) задается векторами X и Y одинакового размера. Для построения таких графиков используется процедура fplot, на пример:

    >>x= [0:0.1:6.28];

    >>y=sin(x). *0.5;

    >>plot(x,y);

    Результатом выполнения будет график функции y(x)=0.5sin(x)

    Если обратится к процедуре plot повторно, то она создаст новое окно с заголовком Figure No.2 и разместит в нем следующий график. Совместить оба графика в одном окне можно двумя разными способами. В первом случае перед вызовом процедуры plot мы должны построить таблицы обеих функций, например, (x1, y1) и (x2, y2), и обратится к процедуре следующим образом (результат на рисунке 14):

    >>x1= [0:0.1:6.28];

    >>y1= sin(x1). *0.5;

    >>y2=cos(x1). *0.5;

    >>plot(x1, y1,x1,y2);

    Второй способ заключается в блокировании режима создания нового графического окна с помощью процедуры hold on. Так, например, предыдущий результат можно получить так:

    >>plot (x1, y1);

    >>hold on;

    >>plot (x1, y2);


    Рисунок14. – График Figure
    Заметим, что график второй функции отображен другим цветом. Повлиять на выбор цвета графика может пользователь, указав в процедуре дополнительный третий параметр:

    >>plot(x,y,'g')

    В данном случае выводимый график будет зеленого цвета (синий по умолчанию). Дополнительно предусмотрена возможность задания типа линии и маркера, которые указываются вместе с цветом. Дополнительно можно снабдить график заголовком (процедура title), подписать оси (процедуры xlabel,ylabel), нанести координатную сетку (процедура grid on) и разместить легенду (процедура legend). Используем все эти возможности для рисунка 14 (рисунок 15):

    >>x1= [0:0.2:6.28];

    >>y1= sin(x1).*0.5;

    >>y2=cos(x1).*0.5;

    >>plot(x1,y1,'k–s',x1,y2,'b--o'); % k – черный, '–' сплошная, 's' – маркер квадратный.

    >>legend('sin', 'cos',4);

    >>ylabel('y');

    >>xlabel('x');

    >>grid on;

    >>title('Function sin & cos');

    В процедуре legend третий параметр указывает место расположения легенды:

    • -1 – легенда помещается вне поля графика, вверху справа.

    • 0 – система выбирает лучшее место в поле графика не перекрываемое данными.

    • 1,2,3,4 – по углам в поле графика.



    Рисунок 15. – Дополнительные возможности
    Редактирование графика можно производить непосредственно из окна Figure. Для этого следует выбрать в строке меню окна стрелку, затем выбрав необходимый для редактирования график, с помощью правой кнопки мыши открыть меню (рисунок 16), используя которое можно установить нужный цвет, маркер, стиль линии и т.д. Пункт “вставить” (Insert) главного меню окна можно использовать для создания легенды, заголовка, поясняющих надписей в поле графика и т.д. Для корректировки свойств осей (масштаба и т.д.) необходимо использовать пункт “правка”→”свойства осей”(Edit→Axes properties).

    На практике большое распространение получили функции двух переменных, графическим изображением которых является трехмерная поверхность. В MATLAB такие поверхности должны быть заданы узлами сетки размерности m× n, заполняющей на плоскости Oxy прямоугольную область, и массивом той же размерности, представляющим значения функции в узлах этой сетки.

    Для формирования равномерной прямоугольной сетки удобно воспользоваться функцией meshgrid:

    >> x= [0 1 2 3 4 5];

    >> y= [0 2 4];

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

    Для отображения поверхности используются две основные функции- mesh и surf. Первая строит проволочный каркас поверхности, вторая- закрашенную поверхность. Приведем пример построения поверхности заданной равномерной сеткой с шагом 0,25 и функцией Z (x, y) = x∙ exp (-x2- y2) (рисунок 4):

    >> [X,Y]= meshgrid([-2:0.25:2]);

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

    >>mesh (X, Y, Z);

    >>XLabel('X'),YLabel('Y'),ZLabel('Z');


    Рисунок 16. – Редактирование графика

    Закрашивание каждой чешуйки поверхности осуществляется функциями surf и surfc. Используя предыдущую сетку и функцию обратимся к функции surf (рисунок 17):

    >> surf(x,y,Z);

    >> XLabel('X'), YLabel('Y'), ZLabel('Z');



    Рисунок 17– Построение поверхности заданной равномерной сеткой с шагом 0.25

    Рабочее задание

    1. Выполнить упражнения из описания лабораторной работы.

    2. Оформить результаты выполнения, иллюстрируя скриншотами.

    3. Сделать вывод о проделанной работе.
    Ход выполнения работы.

    Реализация приведенного алгоритма в MATLAB будет выглядеть следующим образом:

    1. Ввод исходных данных (рисунок 18):

    >> x1= –5;

    >> x2=5;

    >> q=1e-9;

    >> E0=8.85e-12;

    >> C=1/(4*pi*E0);

    2. Формирование сетки

    >> x0=[–0.7:0.1:0.7];

    >> y0=[–0.7:0.1:0.7];

    >> [x,y]=meshgrid(x0,y0);

    3. Вычисление напряженности в узлах сетки:

    >> E1x=C*q.*(x-x1)./(sqrt(((x-x1).^2+y.^2).^3));

    >> E1y=C*q.*y./(sqrt(((x-x1).^2+y.^2).^3));

    >> E2x=C*q.*(x-x2)./(sqrt(((x-x2).^2+y.^2).^3));

    >> E2y=C*q.*y./(sqrt(((x-x2).^2+y.^2).^3));

    >> Ex=E1x+E2x;

    >> Ey=E1y+E2y;

    >> E=Ex.^2+Ey.^2;

    4. Вычисление потенциала:

    >> R1=sqrt((x–x1).^2+y.^2);

    >> R2=sqrt((x–x2).^2+y.^2);

    >> P1=q./R1;

    >> P2=q./R2;



    Рисунок 18. – Ввод исходных данных
    5. Для построения графиков разобьем графическую область окна Figure на 4 подобласти с помощью функции subplot:

    >> subplot(2,2,1)

    Первое число указывает число окон по вертикали, второе – по горизонтали, третье – номер окна в которое будет выведен текущий график (нумерация окон слева – направо).

    6. Строим график потенциала:

    >> surf(x, y, P);

    7. Строим график величины напряженности в следующем окне:

    >> subplot(2,2,2);

    >> surf(x, y, E);

    8. Для построения векторного поля напряженности воспользуемся функцией quiver:

    >> subplot(2,2,3);

    >> quiver(x, y, Ex, Ey);

    Данная функция строит векторное поле по значениям проекций вектора в данной точке. При этом необходимо следить, чтобы размерность x, y, Ex, Ey была одинаковой.

    9. Построим графики сечений поверхности напряженности в направлении оси x и в направлении y следующим образом:

    >> subplot(2,2,4);

    >> plot(y0,E(:,10),'k.--',x0,E(10,:),'-o');

    Полученный графический результат с использованием меню окна Figure.



    Рисунок 19. – Полученный результат с использованием окна Figure
    Вывод: получили навыки визуализации решения задач в системе MATLAB. В практической части лабораторной работы построили графическую интерпретацию решения задачи об определении электрического поля порождаемого двумя электрическими зарядами.

      1. 1   2   3   4   5   6   7


    написать администратору сайта