рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Основы работы в среде MATLAB

Основы работы в среде MATLAB - раздел Программирование, Лабораторная Работа № 4 ...

Лабораторная работа № 4

Основы работы в среде MATLAB

ЦЕЛЬ РАБОТЫ:

ü получить навыки работы с основными элементами интерфейса системы MATLAB;

ü получить навыки работы с классами данных в системе MATLAB;

ü изучить основы графической визуализации вычислений в среде MATLAB.

ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ

MATLAB (MATrix LABoratory) —универсальная интегрированная система автоматизации математических расчетов. Особенностью данной системы, выделяющей ее среди прочих пакетов программ аналогичной направленности, является расширенное представление матричных операций, что обусловлено частым применением матриц в сложных математических расчетах, например, при решении задач линейной алгебры и математического моделирования статических и динамических систем и объектов. Слово «интегрированная» указывает на то, что в этой системе объединены удобная оболочка, редактор выражений и текстовых комментариев, вычислитель и графический программный процессор, ориентированный на математические расчеты для реализации численных методов. Благодаря расширенному набору матричных и иных операций и функций, а также наличию множества пакетов расширений система MATLAB применима для расчетов практически в любой области науки и техники.

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

 

ИНТЕРФЕЙС СИСТЕМЫ MATLAB

· окно запуска приложений (Launch Pad); · окно команд (Command Window); · окно истории команд (Command History);

Рис. 4.2. Окно просмотра рабочей области.

 

Для просмотра и редактирования значений выделенной переменной предназначена кнопка Open (Открыть) палитры инструментов Workspace Browser, которая вызывает окно редактирования Array Editor. Указанное окно дает возможность быстрого доступа к любому элементу массива, позволяет менять тип значений элементов (меню Numeric format ), позволяет изменять число строк и столбцов массива (рис. 3). Палитра инструментов Workspace Browser позволяет также загружать данные из файла в рабочую область (), удалять выделенный объект (), сохранять рабочую область в файле (). Дополнительные функции по работе с Workspace Browser можно получить из контекстно–зависимого меню, вызываемого щелчком правой кнопки мыши по объекту в окне просмотра рабочей области.

Рис. 4.3.Окно редактора данных.

Просматривать содержимое рабочей области, загружать и удалять данные можно также с помощью Command Window. Для просмотра имен переменных, находящихся в рабочей области, предназначена команда who. Полную информацию о содержании рабочей области дает команда whos, которая выводит в командное окно общее количество переменных и общий объем занимаемой ими памяти. Для очистки рабочей области используется функция clear . Например, clear x — уничтожит определение переменной х. Команда clear без параметров стирает все переменные.

Окно истории команд (Command History) служит для просмотра команд, заданных ранее в командной строке, даты и времени начала сеанса работы с системой. С помощью контекстного меню окна истории команд можно выполнять следующие действия: копировать (Copy) выделенные строки в буфер обмена, повторно выполнять команду или серию выделенных команд (Evaluate Selection), создавать новый m-файл (Create M-file) путем копирования выделенных строк в редактор m-файлов Editor/ Debugger, а также удалять выделенные строки(Delete Selection), удалять все строки из окна истории команд до выделенной строки (Delete to Selection) и полностью очищать окно истории команд (Delete Entire History).

Окно просмотра текущей директории (Current Directory Browser) дает возможность создания, переименования, удаления файлов и директорий, возможность перемещения по структуре директорий, просмотра содержания текущей директории и атрибутов файлов (тип, дата последнего изменения, краткое описание файла).

 

Рис. 4.4. Окно просмотра текущей директории.

КЛАССЫ ДАННЫХ

 

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

Арифметические классы данных делятся на целые и вещественные. При этом данные целого класса могут быть числами со знаком и без знака, а вещественного – числами одинарной (single – 4 байта) и двойной (double – 8 байт) точности. При создании переменной она по умолчанию получает класс double, так как все числа при выполнении арифметических операций в системе MATLAB должны быть числами двойной точности. Остальные арифметические классы предназначены для эффективного хранения данных на диске.

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

 

Таблица 4.2. Арифметические операторы и функции MATLAB.

 

Название функции Оператор Знак оператора Синтаксис
plus Плюс + М1 + М2
uplus Унарный плюс +
minus Минус М1 – М2
uminus Унарный минус –М
mtimes Матричное умножение * М1 * М2
times Поэлементное умножение массивов .* А1 .* А2
mpower Возведение матрицы в степень ^ М1^х
power Поэлементное возведение массива в степень .^ A1 .^ x
mldivide Обратное (справа налево) деление матриц \ M1\M2
mrdivide Деление матриц слева направо / М1/М2
ldivide Поэлементное деление массивов справа налево .\ А1 .\ А2
rdivide Поэлементное деление массивов слева направо . / А1 ./ А2

 

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

 

Рис. 4.5. Примеры использования операторов * и .*.

 

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

acos (X) — возвращает арккосинус для каждого элемента X;

acot (X) — возвращает арккотангенс для каждого элемента X;

asin(X) — возвращает арксинус для каждого элемента X;

atan(X) — возвращает арктангенс для каждого элемента X.

cos(X) — возвращает косинус для каждого элемента X;

cot(X) — возвращает котангенс для каждого элемента X;

sin(X) — возвращает синус для каждого элемента X;

tan(X) — возвращает тангенс для каждого элемента X;

cosh(X) — возвращает гиперболический косинус для каждого элемента X.

К основным математическим функциям системы MATLAB относятся также следующие функции:

abs(X) — возвращает абсолютную величину для каждого числового элемента вектора X;

ехр(Х) — возвращает экспоненту для каждого элемента X;

factor(n) — возвращает вектор-строку, содержащую простые множители числа n (для массивов эта функция неприменима);

G=gcd(A, В) — возвращает массив, содержащий наибольшие общие делители соответствующих элементов массивов целых чисел А и В;

lcm(A,B) — возвращает наименьшие общие кратные для соответствующих парных элементов массивов А и В (любой из аргументов А или В может быть скаляром);

log (X) — возвращает натуральный логарифм элементов массива X.

log2(X) — возвращает логарифм по основанию 2 элементов массива X;

log10(X) — возвращает логарифм по основанию 10 для каждого элемента X.

mod(X, Y) — возвращает остаток от деления X на Y;

pow2(Y) — возводит в квадрат каждый элемент массива Y;

primes(n) — возвращает вектор-строку простых чисел, меньших или равных n;

sqrt(A) — возвращает квадратный корень каждого элемента массива А.

 

Наряду с числовыми данными система MATLAB позволяет работать с данными, которые являются последовательностью символов. Переменные, содержащие только символы, относятся к символьному классу. Значения переменных данного класса заключаются в апострофы, например, text=’Unix’. Каждый символ в подобной переменной занимает в памяти 2 байта.

Система MATLAB позволяет также создавать двухмерные массивы символов – массивы строк. При этом количество символов в каждой из строк должно быть одинаковым, в противном случае в командное окно будет выдаваться сообщенное об ошибке. Для выравнивания числа символов в строках обычно используются пробелы, добавляемые в конец строки.

Данные логического класса могут принимать одно из двух значений: true (истина), которая ассоциируется с единицей, или false (ложь), ассоциирующуюся с нулем. Переменная логического класса занимает в памяти 1 байт. Значения логического класса получаются как результат операций отношения, список которых приводится в таблице 4.3.

 

Таблица 4.3. Операторы и функции отношения

Название функции Оператор Знак оператора Синтаксис
eq Равно = = x = = y
ne He равно ~ = x ~ = y
lt Меньше чем < x<y
gt Больше чем > x>y
le Меньше или равно <= x<=y
ge Больше или равно >= x>=y

 

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

Рис. 4.6. Пример использования оператора He равно.

 

Если один из операндов — скаляр, происходит сравнение всех элементов второго операнда-массива со значением этого скаляра (рис. 4.7).

 

Рис. 4.7. Пример сравнения элементов массива со скаляром.

Также возможно применение операторов отношения и к символьным выражениям. В этом случае символы, входящие в выражения, представляются своими ASCII-кодами, а строки воспринимаются как векторы, содержащие значения кодов (рис. 4.8).

 

Рис. 4.8. Пример сравнения символьных выражений.

 

Логические операторы и соответствующие им функции служат для реализации поэлементных логических операций над элементами одинаковых по размеру массивов (табл. 4). При этом аргументами логических операторов могут быть и числа, и строки. При аргументах числах – логический нуль соответствует числовому нулю, а любое отличное от нуля число воспринимается как логическая единица. Для строк действует уже отмеченное правило — каждый символ строки представляется своим ASCII-кодом.

 

 

Таблица 4.4. Логические операторы и функции MATLAB

 

Название функции Оператор Знак оператора Синтаксис
and Логическое И (AND) & and(A,B) А&В
or Логическое ИЛИ (OR) | оr(А,В) А|В
not Логическое НЕ (NOT) ~ not(А) ~B
хог Исключающее ИЛИ XOR xor(A,B)
any Верно, если все элементы вектора равны нулю any any(A)
all Верно, если все элементы вектора не равны нулю   all(B)

 

К классу операторов в системе MATLAB относятся также специальные символы. Они предназначены для создания самых разнообразных объектов входного языка и языка программирования системы и придания им различных форм. Рассмотрим некоторые из них.

Для формирования упорядоченных числовых последовательностей в MATLAB используется оператор : (двоеточие), имеющий следующий вид

 

Начальное_значение : Шаг : Конечное_значение

Данный оператор порождает последовательность чисел, которая начинается с Начального значения, идет с заданным Шагом и завершается Конечным значением, Если Шаг не задан, то он принимает значение 1. Подобные последовательности могут, например, потребоваться для создания значений абсциссы при построении графиков. Пример использования данного оператора приводится на рис. 4.9.

 

Рис. 4.9. Пример использования оператора : (двоеточие).

 

Система MATLAB специально предназначена для проведения сложных вычислений с векторами, матрицами и массивами, поэтому по умолчанию она предполагает, что каждая заданная переменная — это вектор, матрица или массив. Например, если задано А = 10, то это значит, что А — это матрица размера 1 х 1. Для формирования векторов и матриц используются символы [ ] (квадратные скобки). Так при задании вектора значения его элементов следует перечислить в квадратных скобках, разделяя пробелами, например, V = [l 2 3]. В результате будет создан вектор – строка размера 1 х 3. Для создания вектор – столбца вводимые элементы нужно разделять точкой с запятой «;». Например, присваивание V = [l; 2; 3] задает вектор – столбец размером 3 х 1.

Задание матрицы требует указания нескольких строк, для разграничения которых используется знак ; (точка с запятой). Этот же знак в конце ввода предотвращает вывод матрицы или вектора (и вообще результата любой операции) на экран дисплея. Так, присваивание М = [1 2 3; 4 5 6; 7 8 9] задает квадратную матрицу, содержащую три строки и три столбца. Элементы матриц и векторов можно также вводить в виде арифметических выражений, содержащих любые доступные системе функции, например, V = [17+55/(4+7) exp(14) sqrt(225)].

Для доступа к отдельному элементу вектора или матрицы следует указать имя требуемого вектора / матрицы и индекс (индексы) элемента в круглых скобках. Так, например, если обратиться к элементу М(2, 2), приведенной выше матрицы М, то результат будет равен 5.

Оператор : (двоеточие) позволяет также выбирать строки, столбцы и элементы из векторов, матриц и многомерных массивов:

А(: , j)j-й столбец матрицы А;

А(i,:)i-я строка матрицы А;

A(j:k)A(j), A(j+l),...,A(k);

А(:) — записывает все элементы массива А в виде столбца.
Например, если требуется всем элементам третьего столбца матрицы М присвоить значение 7, то можно воспользоваться следующим выражением М(: , 3) = 7. В следующем примере элементы второй строки матрицы М умножаются на -2: M(2,:)* -2.

Для удаления отдельных столбцов или строк матриц используются пустые квадратные скобки [ ]. Например, для удаления второй строки матицы М можно использовать выражение М(2, :) = [].

Знак процента % используется для указания логического конца строки. Текст, находящийся после знака процента, воспринимается как комментарий и игнорируется (за исключением русскоязычных комментариев, которые нередко ведут к ошибочным командам).

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

1. Операции транспонирования, поэлементного возведения в степень, матричного возведения в степень.

2. Унарные операции (т. е. применяемые к одному оператору): +, , ~ (логическое отрицание).

3. Мультипликативные операции: умножение, деление.

4. Аддитивные операции: сложение, вычитание.

5. Оператор двоеточие «:».

6. Операторы отношения.

7. Логическое И.

8. Логическое ИЛИ.

 

ОСНОВЫ ГРАФИЧЕСКОЙ ВИЗУАЛИЗАЦИИ ВЫЧИСЛЕНИЙ

Построение графика функций одной переменной

Для построения графиков функций в декартовой системе координат служит команда plot. Например, вызов функции plot (X, Y) приведет к построению… В качестве примера построения графика функций одной переменной рассмотрим…  

Рис. 4.10. Построение графика синусоиды.

В одном графическом окне можно одновременно построить графики сразу нескольких функций. Например, можно задать переменные y1=sin(x); y2=cos(x); , а затем вызвать команду plot(x,y1,x,y2). Результат построения можно увидеть на рис. 4.11.

Рис. 4.11. Пример построения в одном графическом окне графиков двух функций.

Команда plot(X,Y,S) — аналогична команде plot(X,Y), но с помощью третьего параметра, строковой константы S, она дает возможность задавать тип линии графика. Значения константы S приведены в таблице 4.5.

 

Таблица 4.5. Значения параметра S команды plot(X,Y,S).

 

Цвет линии   Тип маркера  
Y Желтый . Точка
М Фиолетовый Окружность
С Голубой X Крест
R Красный + Плюс
G Зеленый * Звездочка
В Синий S Квадрат
W Белый D Ромб
К Черный V Треугольник (вниз)
    А Треугольник (вверх)
    < Треугольник (влево)
    > Треугольник (вправо)
    Р Пятиугольник
Тип линии      
Сплошная    
; Двойной пунктир    
–. Штрих-пунктир    
– – Штриховая    

 

Рассмотрим пример построения графиков трех функций с различным стилем представления каждой из них. Сначала зададим интервал изменения аргумента и сами функции y1, y2, и y3, а затем применим команду plot(x, yl,'- m',x, y2,'-. + r',x,y3,'- - o k'), как это представлено на рис. 4.12.

 

Рис. 4.12. Пример применения команды plot(X,Y,S).

Результат построения продемонстрирован на рис. 4.13.

 

Рис. 4.13. Пример построения графиков трех функций с различным стилем представления каждой из них.

 

Для построения графиков функций со значениями х и у, изменяющимися в широких пределах, как правило, используются логарифмические масштабы для координатных осей X и У. Для построения графика в этом случае используется команда loglogx(), синтаксис которой аналогичен ранее рассмотренному для функции plot(). Логарифмический масштаб используется. Ниже дан пример применения данной команды:

 

>>x=logspace(-1,3);

>>loglog(x, exp(x)./x)

>>grid on

Обратите внимание на то, что командой grid on строится координатная сетка. На рис. 4.14 представлен график функции ехр(х)/х в логарифмическом масштабе, о чем свидетельствует неравномерное расположение линий координатной сетки.

 

Рис. 4.14. График функции ехр(x)/x в логарифмическом масштабе.

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

· semilogx() — строит график функции в логарифмическом масштабе (основание 10) по оси X и линейном по оси Y;

· semilоgу () — строит график функции в логарифмическом масштабе по оси Y и линейном по оси X.

Запись параметров для представленных функций выполняется по аналогии с функцией plot().

Построение графика линии на плоскости в полярной системе координат осуществляется с помощью функции polar (phi, rho, s), где phi – задает полярный угол в радианах, rho – полярный радиус, а необязательный аргумент s служит для задания свойств линии и маркеров. Например, последовательный вызов приведенных ниже команд сформирует графическое окно представленное на рис. 4.15.

 

>> t=0:pi/50:2*pi;

>> polar(t,sin(5*t))

Рис. 4.15. Пример построения графика в полярной системе координат.

 

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

bar(x, Y) — строит столбцовый график элементов вектора Y (или группы столбцов для матрицы Y) со спецификацией положения столбцов, заданной значениями элементов вектора х, которые должны идти в монотонно возрастающем порядке;

bar(Y) — строит график значений элементов матрицы Y, а в качестве х используется вектор х=1:m;

BAR(Y,WIDTH) — команда аналогична ранее рассмотренным, но со спецификацией ширины столбцов (при WIDTH > 1 столбцы в одной и той же позиции перекрываются). По умолчанию задано WIDTH = 0.8.

По аналогии с командой plot в приведенных командах построения столбцовых диаграмм возможно задание спецификаций графиков, например типа линий, цвета и т. д. Спецификация 'stacked' задает рисование всех n столбцов в позиции m друг на друге, как это представлено на рис. 4.16. Помимо команды bar() существует аналогичная ей по синтаксису команда barh(), которая" строит столбцовые диаграммы с горизонтальным расположением столбцов.

 

Рис. 4.16. Пример построения диаграммы с вертикальными столбцами

 

Закрашенные секторы часто используются для построения цветных плоских круговых диаграмм. Для их построения в MATLAB служит команда piе:

pie(X) — строит круговую диаграмму по данным нормализованного вектора X/ SUM(X). При этом, если SUM(X)<=1.0, то значения в X непосредственно определяют площадь секторов;

pie(X,EXPLODE) — строит круговую диаграмму, у которой отрыв секторов от центра задается вектором EXPLODE, который должен иметь тот же размер, что и вектор данных X.

Система MATLAB также предоставляет возможность построения объемных круговых диаграмм с помощью команды pie3(), аналогичной команде pie(). На рис. 4.17 демонстрируется пример построения двух видов круговых диаграмм: плоской и объемной. В качестве исходных данных в обоих случаях берется вектор Х=[1 2 3 4 5]. Для построения плоской диаграммы используется команда pie(X,[1 1 1 1 1]), а для объемной – pie3(X,[1 1 1 1 1]).

 

Рис. 4.17. Пример построения круговых диаграмм.

В системе MATLAB предусмотрена также возможность построения графиков в полярной системе координат. Напомним, что в данной системе координат любая точка представляется как конец радиус-вектора, исходящего из начала системы координат под углом ТНЕТА к горизонтали и имеющего длину R. Для построения графика в этом случае используется команда polar(THETA ,R, S), где параметр THETA обычно меняется от 0 до 2*pi, а строковая константа S, задающая стиль построения, не является обязательным параметром.

Команда plot3(X,Y,Z,S) является аналогом команды plot (), но относится к функции двух переменных z(x, у). Она строит аксонометрическое изображение трехмерных поверхностей, определяемых матрицами одинакового размера X, Y и Z. Совместно с функциями построения графиков трехмерных поверхностей обычно используется функция meshgrid, формирующая двумерные массивы X и Y. Например, для преобразования области, заданной векторами х и у, в массивы X и Y, которые могут быть использованы для вычисления функции двух переменных и построения трехмерных графиков, можно воспользоваться выражением [X, Y] = meshgrid(x, y). При этом, строки выходного массива X будут являться копиями вектора х; а столбцы Y — копиями вектора у (рис. 4.18).

 

Рис. 4.18. Пример использования функции meshgrid().

 

Рассмотрим пример построения трехмерной поверхности, описываемой функцией . Листинг необходимый для построения команд приведен на рис. 4.19.

Рис. 4.19. Построение поверхности, описываемой функцией .

 

Результат построения демонстрируется на рис. 4.20.

 

Рис. 4.20. График поверхности, построенный линиями.

 

Наиболее представительными и наглядными являются сетчатые графики поверхностей с заданной или функциональной окраской. Для их построения предназначена функция mesh(X,Y,Z,C), которая выводит в графическое окно сетчатую поверхность Z(X.Y) с цветами узлов поверхности, заданными массивом С. При этом параметр C не является обязательным, то есть допустим вызов команды mesh(X,Y,Z). В этом случае C=Z и используется функциональная окраска, при которой цвет задается высотой поверхности. Пример построения сетчатого графика поверхности, описываемой функцией , с использованием функциональной окраски представлен на рис. 4.21.

Рис. 4. 21. Сетчатый график поверхности с функциональной окраской.

При использовании функциональной окраски весьма полезным является вывод шкалы цветов командой colorbar. Ее варианты перечислены ниже:

colorbar( 'vert') — выводит вертикальную шкалу цветов на текущий график (см. рис. 4.21);

colorbar( 'horiz') — выводит горизонтальную шкалу цветов на текущий график;

colorbar — устанавливает в текущий график новую вертикальную шкалу цветов или обновляет уже имеющуюся.

 

Иногда график поверхности полезно объединить с контурным графиком ее проекции на плоскость, расположенным под поверхностью. Для этого используется команда meshc(), аналогичная команде mesh(), но помимо графика поверхности строящая изображение ее проекции в виде линий равного уровня, что дает наилучшее представление об особенностях поверхности.

После того как график уже построен, MATLAB позволяет выполнить его форматирование в нужном виде. Для форматирования графиков в системе предназначены команды Figure Properties (Свойства рисунка), Axis Properties (Свойства осей) и Current ObjectProperties (Свойства текущего объекта)менюEdit графического окна. С помощью перечисленных команд можно, например, отформатировать линию графика, установив стиль отображения линии (сплошная, пунктирная и т.д.), ее ширину, цвет, а также параметры маркеров, отмечающих опорные точки графиков. Эти точки появляются на графике, если в поле свойств маркера Marker Properties (Свойства маркера) вкладки Style (Стиль) диалогового окна форматирования выбрать стиль маркера. При этом маркеры можно задавать в виде окружностей, прямоугольников, крестиков, ромбиков и т. д. Кроме того, здесь же можно задавать их размеры, цвет их закраски и цвет окантовки.

Команда Axis Properties менюEdit графического окна позволяет отформатировать оси графиков. Например, можно задать линейный или логарифмический масштаб осей (поле Scale (Масштаб)), нормальное или инверсное направление осей(X, У, а в случае трехмерных графиков и Z), показ сетки (параметр Grid Show), изменить стиль осей и цвет фона, нанести у осей надписи (поле Label (Ярлык)) и пр.

Дополнительно на график можно нанести надписи с помощью команды Text меню Insert или кнопки панели инструментов . Место надписи фиксируется щелчком мыши. Полученную таким образом надпись можно выделить и перенести мышью в любое другое место. Кроме того, контекстное меню надписи позволяет отформатировать текст надписи, выбрав стиль, размер и цвет символов. Помимо этого на график можно нанести стрелки (кнопка ) и линии без стрелки (кнопка ).

Режим редактирование графиков включается командой Edit Plot (Редактировать график) меню Tools (Инструменты). С помощью команд этого меню можно, например, увеличить (команда Zoom In) или уменьшить (команда Zoom Out) размеры графика или можно начать его поворот мышью (команда Rotate 3D).

Команды меню Insert (Вставка) дают возможность нанесения надписей по осям, титульной надписи, надписи внутри рисунка, стрелки, отрезка прямой, легенды и шкалы цветов. Команда Legend (Легенда) рассматриваемого меню подключает к графику легенду — пояснение в виде отрезков линий со справочными надписями, размещаемое внутри графика или около него. Каждая линия легенды имеет тот же цвет и стиль, что и на графике.

Обычно график занимает фиксированное положение в центре графического окна. Однако в режиме редактирования графиков в контекстном меню области графика доступна команда Unlock Axes Position (Отключить позиционирование осей). Она снимает фиксацию положения координатных осей графика и позволяет двигать его мышью вместе с осями. При этом перемещение графика не влияет на размещение его легенды и цветовой диаграммы, которые остаются на прежнем месте.

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

subplot(m, n, p) – разбивает графическое окно на m x n подокон, при этом m — число подокон по горизонтали, n — число подокон по вертикали, а р— номер подокна, в которое будет выводиться текущий график (подокна отсчитываются последовательно по строкам);

subplot( 'position',[left bottom width height]) — создает подокно с заданными нормализованными координатами (в пределах от 0.0 до 1.0).
Например, последовательный вызов приведенных ниже команд сформирует графическое окно представленное на рис. 4.22.

 

>>X1= -5: 0.1 : 5;

>>subplot(2,2,1), plot(sin(x))

>>subplot(2,2,2), plot(sin(5*X1),cos(2*X1+0.2))

>> [X,Y]=meshgrid([-3:0.15:3]);

>>Z=X.^2+Y.^2;

>>subplot(2,2,3), plot3(X,Y,Z)

>>subplot(2,2,4), mesh(X,Y,Z)

Рис. 4.22. Пример разбиения графического окна на подокна.

 

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

 

Установка палитры цветов

Для установки палитры цветов служит команда colormap, записываемая в следующих формах: · colormap( 'default') — устанавливает палитру по умолчанию, при которой… · colormap(MAP) — устанавливает палитру RGB, заданную матрицей MAP;

Практическое задание 1

Протабулируйте заданную функцию y = f(x) на промежутке [a, b ] с постоянным шагом h и постройте ее график. Отформатируйте с помощью редактора свойств линию графика, задав произвольным образом ее цвет, тип, а также тип маркера.

ВАРИАНТЫ

[a,b] h Функция
[0;4] 0,1
[-3;3] 0,15
[-4;2] 0,15
[-3;3] 0,15
[-2;4] 0,15
[-2;4] 0,15
[-1;4] 0,1
[-3;2] 0,1
[-3;4] 0,2
[-1;5] 0,15
[-4;2] 0,15
[-2;3] 0,1

Практическое задание 2

Создайте две координатные плоскости. В нечетных вариантах плоскости располагаются вертикально, в четных – горизонтально. В первой плоскости определите прямоугольную систему координат, во второй – полярную. Постройте заданную линию в двух системах координат. В строке заголовка графического окна уберите его номер (снимите флажок Figure number в диалоговом окне Property Editor Figure, вызываемом командой EditFigure Properties графического окна) и выведите номер варианта и название заданной линии (строка Window name того же диалогового окна). Исследуйте влияние значений переменных, входящих в уравнение линии, на ее вид.

При выполнении задания потребуется преобразование полярных координат в декартовы и наоборот. Выполняются указанные преобразования с помощью следующих аналитических зависимостей:

ВАРИАНТЫ

 

№ вар-та Задание
Построить лемнискату Бернулли, параметрические уравнения которой имеют вид:
Построить четырехлепестковую розу, заданную уравнением в полярных координатах:
Построить улитку Паскаля, уравнение которой в полярной системе координат имеет вид:
Построить полукубическую параболу (параболу Нейля), параметрические уравнения которой:
Построить спираль Архимеда, уравнения которой в полярных координатах:  
Построить конхоиду Никомеда, уравнения которой в полярных координатах:  
Построить инволюту окружности, уравнения которой в прямоугольных координатах:
Построить кохлеоиду, уравнение которой в полярных координатах:    
Построить локон Аньези. Уравнение в прямоугольных координатах:  
Построить логарифмическую спираль, уравнение которой в полярных координатах:
Построить гиперболическую спираль, заданную уравнением в полярных координатах:
Построить трактрису, заданную с помощью параметрических уравнений:  

Практическое задание 3

 

Постройте сетчатый график заданной в варианте поверхности z=f(x,y) в прямоугольной области D: {a≤x≤b; c≤y≤d}. Для задания цвета узлов поверхности используйте функциональную окраску. Для наглядности выведите на график вертикальную шкалу цветов.

ВАРИАНТЫ

№ вар-та Функция z=f(x,y) [a;b] [c;d] Примечание
[-3;3] [-3;3]
[] []
[0;π] [0;π]
[-1;1] [-3;0]
[-1;1] [-1;1]
[] []
[0.1;2] [1;3]
[0.1;1] [0.1;2]
[0.1;2] [0.1;2]
[] []  
[0;2] [-3;0]
[0.1;2] [0.1;2]

Контрольные вопросы.

  1. Какова история создания системы MATLAB?
  2. Почему MATLAB интегрированная система?
  3. Что такое m-файлы и для чего их используют в системе MATLAB?
  4. Что такое векторизация и что она обеспечивает?
  5. Почему система MATLAB называется интегрированной?
  6. Каково основное достоинство системы MATLAB по сравнению с MathСad?
  7. Из каких инструментальных средств состоит Рабочий стол системы MATLAB?
  8. Что записывается в файлы формата .mat?
  9. Какие форматы числовых данных используются в системе MATLAB?
  10. Для чего предназначен Workspace Browser?
  11. Для чего используется функция clear?
  12. Для чего предназначен Current Directory Browser?
  13. Какие арифметические функции и операторы имеются в системе MATLAB?
  14. Какие тригонометрические функции имеются в системе MATLAB?
  15. Какие математические функции имеются в системе MATLAB?
  16. Какие логические функции и операторы имеются в системе MATLAB?
  17. Какая команда используется для построения графиков функций в декартовой системе координат?
  18. Какая команда используется для построения графиков функций в логарифмическом масштабе для координатных осей X и У?
  19. С помощью какой функции осуществляется построение графика линии на плоскости в полярной системе координат?
  20. С помощью какой функции строится аксонометрическое изображение трехмерных поверхностей?

21. Что делает функция logspace(a.b)?

 

 

Лабораторная работа № 5

Решение уравнений и систем уравнений в среде MATLAB

ЦЕЛЬ РАБОТЫ:

ü получить навыки работы с векторами и матрицами в системе MATLAB;

ü изучить функции и инструменты MATLAB, предназначенные для решения трансцендентных уравнений и систем линейных и нелинейных уравнений;

 

ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ

ОПЕРАЦИИ С ВЕКТОРАМИ И МАТРИЦАМИ

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

eye(m, n) — возвращают единичную матрицу размера m x n с единицами по диагонали и нулями в остальных ячейках;

ones(m, n) — возвращают матрицу размера m x n, состоящую из единиц;

zeros(m, n) — возвращают матрицу размера m x n, состоящую из нулей;

linspace(a, b, n) — генерирует n точек, равномерно распределенных в интервале от а до b;

rand(m, n) — генерирует матрицу случайных чисел размера m x n из промежутка (0, 1), используя равномерный закон распределения; rand () без аргументов возвращает одно случайное число;

В приведенных выше функциях (кроме linspace( n)) в качестве аргумента допустимо использовать size(A), что позволит формировать результирующую матрицу того же размера и размерности, что и А.

cat (dim, А, В) — реализует конкатенацию (объединение) массивов А и В в соответствии со спецификацией размерности dim и возвращает объединенный массив. При этом, при dim = 1 происходит горизонтальная конкатенация, при dim = 2 — вертикальная.

X = diag(v) — помещает вектор v на главную диагональ квадратной матрицы X и нули в остальные ячейки;

v = diag(X) — возвращает главную диагональ матрицы X;

repmat (А, m, n) — возвращает матрицу В размера m x n, в которой каждый элемент заменяется на копию матрицы А); если А — скаляр, то функция возвращает матрицу размера m x n со значениями элементов, заданных А;

tril(X, k) — возвращает матрицу, все элементы которой, расположенные выше k-й диагонали, заменены нулями, а нижняя треугольная часть матрицы X, включая указанную диагональ, остается неизменной. При k=0 это главная диагональ, при k>0 — одна из верхних диагоналей, при k<0 — одна из нижних диагоналей. По умолчанию к = 0.

triu(X. k) — возвращает неизменной верхнюю треугольную часть матрицы X, начиная с k-й диагонали, остальные элементы заменяются нулями. При k=0 — это главная диагональ, при k>0 — одна из верхних диагоналей, при k<0 — одна из нижних диагоналей;

magic(n) – возвращает так называемый магический квадрат – квадратную матрицу размера n x n, в которой сумма значений элементов по строкам, столбцам, а также сумма элементов главной и побочной диагонали равны.

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

prod (A, dim) — возвращает произведение элементов массива А по столбцам при dim=l или по строкам при dim=2;

sum(A, dim) — возвращает сумму элементов массива A по столбцам (dim=1) или по строкам (dim=2).

cross(U, V) — возвращает векторное произведение векторов U и V в трехмерном пространстве;

dot(U, V) — возвращает скалярное произведение векторов U и V;

transpose(X) – транспонирование вектора/матрицы Х;

trace(X) – возвращает след матрицы Х, т. е. сумму ее диагональных элементов;

isequal(U ,V) – проверка равенства векторов/матриц U и V;

norm(X, dim) – возвращает норму вектора Х, при dim=1 – первую норму (), при dim=2 – евклидову (вторую) норму (), при dim=3 – бесконечную норму();

det(X) – возвращает определитель матрицы X;

inv(X) – возвращает матрицу, обратную к матрице X;

rank (X) – возвращает ранг матрицы X.

 

Весьма представителен в MATLAB набор матричных функций. Перечислим некоторые из них:

ехрт(Х) — возвращает от матрицы X;

sqrtm(X) – возвращает логарифм матрицы;

logm(X) – возвращает квадратный корень из X, соответствующий неотрицательным действительным частям собственных значений X.

 

ЧИСЛЕННЫЕ МЕТОДЫ

Элементарные средства решения систем линейных алгебраических уравнений

СЛАУ называется совместной, если имеет хотя бы одно решение, и несовместной, если не имеет ни одного решения. Таким образом, решить СЛАУ – значит… Существуют точные и приближенные (итерационные) методы решения СЛАУ. К точным… Для определения совместности системы можно использовать теорему Кронекера-Капелли, согласно которой для того, чтобы…

Рис. 5.1. Пример исследования на совместность заданной СЛАУ.

В результате исследования получили, что ранг расширенной матрицы равен рангу матрицы коэффициентов СЛАУ, следовательно, данная система совместна. При этом ранг совместной системы равен числу неизвестных, поэтому система имеет единственное решение.

Рассмотрим точные методы решения СЛАУ в системе MATLAB. Одним из таких методов является матричный метод решения СЛАУ, который предусматривает выполнение следующих шагов:

1. Убедиться в том, что система не является вырожденной (определитель ее не равен нулю), т. е. существует обратная матрица.

2. Найти обратную матрицу .

3. Найти вектор – столбец X, вычислив произведение .

На рис. 5.2 приводится пример решения представленной выше системы уравнений с помощью матричного метода.

 

Рис. 5.2. Пример решения СЛАУ с помощью матричного метода.

 

Рассмотренный матричный метод решения требует определения обратной матрицы, для вычисления которой требуется значительное время, поэтому на практике данный метод не применяется.

 

В основе решения СЛАУ с помощью формул Крамера лежит теорема Крамера: система n уравнений с n неизвестными, определитель которой отличен от нуля всегда имеет решение, и притом единственное. Значение каждого из неизвестных в этом случае равно дроби, знаменателем которой является определитель системы, а числитель равен определителю системы, в которой вместо столбца коэффициентов при неизвестном располагается столбец свободных членов.

 

Пусть дана система n линейных уравнений с n неизвестными:

 

Обозначим определитель системы: . Заменим поочередно столбцы коэффициентов при на столбец свободных членов и получим n определителей:

.

 

Формулы Крамера для решения системы уравнений имеют вид:

.

 

Решение СЛАУ из предыдущего примера с помощью формул Крамера представлено на рис. 5.3.

 

 

Рис. 5.3. Пример решения СЛАУ с помощью формул Крамера.

 

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

 

Существо метода Гаусса состоит в последовательном исключении неизвестных. Систему из n уравнений сначала приводят к равносильной ей системе с треугольной матрицей коэффициентов (прямой ход). Затем выполняют обратный ход, вычисляя значения и последовательно подставляя их в уравнения для получения значений . Для уменьшения влияния ошибок округления на решение СЛАУ указанным методом применяют его модификацию – метод Гаусса с частичным выбором главного элемента.

Этот метод в MATLAB реализован в функции rref(), которая на его основании осуществляет приведение расширенной матрицы к треугольной форме. Пример ее применения для решения СЛАУ представлен на рис. 5.4.

 

Рис. 5.4. Пример решения СЛАУ с помощью метод Гаусса с частичным выбором главного элемента.

 

Как было сказано выше, помимо точных методов решения СЛАУ существует ряд итерационных методов. Одним их них является метод наименьших квадратов, реализованный в системе MATLAB функцией lsqr(). При вызове функции lsqr(A, B) итерации производятся либо до сходимости к решению, либо до появления ошибки, либо до достижения максимального числа итераций (по умолчанию равного min(20, m, n), где m – число уравнений, n – число неизвестных). Сходимость достигается, когда отношение вторых норм векторов norm(B-Ax)/norm(B) меньше или равно погрешности метода tol (по умолчанию 1е-6). Функция lsqr(A, B, tol) — возвращает решение с заданной погрешностью tol.

 

На рис. 5.5 приведен пример решения СЛАУ с использованием функции lsqr(A, B). В данном примере процесс итераций сходится на четвертом шаге с относительным остатком (отношением вторых норм векторов невязки и свободных членов) 1.7∙10-11.

 

Рис. 5.5. Пример решения СЛАУ методом наименьших квадратов.

 

Помимо рассмотренных методов решения СЛАУ в MATLAB реализован еще ряд методов решения с помощью функций, расположенных в ядре системы. Описание этих функций можно посмотреть с помощью команды help имя_функции. Функция mldivide() или оператор «\» самостоятельно выбирают лучший метод решения заданной системы уравнений (см. рис. 5.6).

 

 

Рис. 5.6. Пример решения СЛАУ.

Решение нелинейных уравнений и их систем

Редактор/отладчик выполняет синтаксический контроль программного кода по мере ввода текста. При этом используются следующие цветовые выделения: · ключевые слова языка программирования — синий цвет; · операторы, константы и переменные — черный цвет;

Практическое задание 1

Используя теорему Кронекера-Капелли, исследовать СЛАУ, заданную в варианте, на совместность.

Решить СЛАУ следующими способами:

· матричным методом;

· методом Крамера;

· методом Гаусса с частичным выбором главного элемента;

· методом наименьших квадратов;

· с помощью функции mldivide().

ВАРИАНТЫ

 

№ варианта Матрица коэффициентов системы А Столбец свободных членов b

Практическое задание 2

Отделить корни алгебраического или трансцендентного уравнения f(x)=0, построив график функции f(x).Найти решение уравнений с заданной точностью .

 

ВАРИАНТЫ

 

№ вар-та Уравнение

 

 

Практическое задание 3

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

 

ВАРИАНТЫ

 

№ вар-та Система уравнений

 

Контрольные вопросы.

 

  1. Какие команды очищают экран и помещают курсор в левый верхний угол окна командного режима работы?
  2. С помощью какого знака можно перенести часть выражения на новую строку?

3. С помощью какого расширения MATLAB может выполнять символьные вычисления?

4. Какие основные системные переменные применятся в системе MATLAB?

  1. Что такое Simulink и каково ее назначение?

6. Для чего нужны команды who и whos?

  1. Какая функция служит для создания единичной матрицы?
  2. Что выполняют команды ones(m, n) и zeros(m, n)?
  3. Что выполняет команда rand(m, n)?
  4. Какой будет матрица С после выполнения следующих операций:

A =[2 4;3 5]; B=[8 7;9 0]; C=cat(1,A,B)

  1. Какой будет результат после выполнения следующей операции:

М=[3 1 4; 8 3 2; 8 1 1]

tril(M)

  1. Какие цветовые выделения использует редактор/отладчик при выполнении синтаксического контроля программного кода?
  2. Как проверить совместность системы линейных уравнений?

14. Как найти обратную матрицу ?

15. В чем состоит матричный метод и почему данный метод не применяется на практике?

  1. В чем состоит решение СЛАУ по методу Крамера и какая функция при этом используется?
  2. В чем состоит решение СЛАУ по методу Гаусса и какая функция при этом используется?
  3. Что возвращает функция lsqr(A, B, tol)?
  4. Что вычисляется с помощью функции feval() и чему равно например,

fe=@exp. feval (fe,1,0))?

  1. Для чего предназначены и чем отличаются функции fsolve() и fzero()?

21. Что рекомендуется делать для приближенного определения корней и интервалов, в пределах которых они находятся?

 

 

Лабораторная работа № 6

Нахождение экстремумов функций и определенных интегралов в среде MATLAB

ЦЕЛЬ РАБОТЫ:

ü получить навыки нахождения экстремумов функций в системе MATLAB;

ü получить навыки решения задач численного интегрирования в системе MATLAB.

 

 

ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ

Минимизация функции одной переменной

fminbnd(@fun,xl,x2) — возвращает значение х, которое является локальным минимумом функции fun(x) на интервале xl<x<x2; fminbnd(@fun,xl,x2,options) — сходна с описанной выше формой функции, но… tolX – конечное допустимое отклонение по значению х, maxfunevals – максимально число допустимых расчетов функции,

Численное интегрирование

и . Для их вычисления служит функция int(), которая записывается в следующих… int(S) – возвращает символьное значение неопределенного интеграла от символьного выражения или массива символьных…

Рис. 6.2. Примеры вычисления интегралов.

 

Численное интегрирование традиционно является одной из важнейших сфер применения математического аппарата. Задача численного интегрирования заключается в приближенном вычислении определенного интеграла вида одним из многочисленных численных методов. Например, для приближенного вычисления определенного интеграла методом трапеций используется функция trapz ( x, y ), которая возвращает интеграл от функции y по переменной x. Пределы интегрирования в этом случае задаются начальным и конечным элементами вектора x.Ниже приводится пример использования рассмотренной команды.

 

>> X=0:pi/70:pi/2;

>> Y=sin(X);

>> Z = trapz(X,Y)

В результате получим Z = 0.9998.

 

Практическое задание 1

 

Найти точку минимума функции f(x) с точностью e=0.001, предварительно графически определив интервал, содержащий эту точку.

№ вар-та f(x)

 

Практическое задание 2

 

Вычислите заданный в варианте определенный интеграл:

1) с помощью функции int(S, x, a, b);

2) с помощью функции trapz ( x, y ).

№ вар-та Интеграл

 

 

Контрольные вопросы.

 

  1. Для чего перед написанием функции используется знак @?
  2. Какие функции служит для возврата текущего времени и даты?
  3. Какие параметры входят в вектор options?
  4. Что делает команда optimset()?
  5. Какая функция используется для нахождения экстремума функции одной переменной?
  6. В чем заключается задача численного интегрирования и какими методами она решается?
  7. Какие варианты использования функции int( )вы знаете?
  8. По какому методу вычисляет значение определенного интеграла функция trapz ( x, y )?
  9. Какие имеются два режима работы в системе MATLAB?
  10. Какие стили программирования представлены в языке программирования системы MATLAB?
  11. Какая функция строит столбцовые диаграммы в системе MATLAB?
  12. Какая функция строит гистограммы в системе MATLAB?
  13. Какая функция строит лестничные графики в системе MATLAB?

14. Какие вы знаете команды, реализующие анимацию в системе MATLAB?

15. Какие задачи решаются с применением пакета Symbolic Math Toolbox?

16. Какие задачи решаются с применением пакета Statistics Toolbox?

17. Какие задачи решаются с применением пакета Optimization Toolbox?

18. Какие задачи решаются с применением пакета Control System Toolbox?

  1. Какие задачи решаются с применением пакета LMI (Linear Matrix Inequality) Control Toolbox?

20. Как язык программирования Java используется для поддержки математических вычислений в системе MATLAB?

 

 

– Конец работы –

Используемые теги: основы, работы, среде, MatLab0.074

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Основы работы в среде MATLAB

Что будем делать с полученным материалом:

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

Еще рефераты, курсовые, дипломные работы на эту тему:

Построение трехмерных графиков в среде Matlab. Дифференцирование функций многих переменных в среде Matlab
Построение трехмерных графиков в среде Matlab Дифференцирование функций многих переменных в среде... Построение трехмерных графиков в...

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ТЕХНОЛОГИИ СОЦИАЛЬНОЙ РАБОТЫ. ОБЩИЕ ТЕХНОЛОГИИ СОЦИАЛЬНОЙ РАБОТЫ. МЕЖДИСЦИПЛИНАРНЫЕ ТЕХНОЛОГИИ И МЕТОДИКИ СОЦИАЛЬНОЙ РАБОТЫ
Учебник подготовлен коллективом авторов... гл канд искусствовед наук проф Т В Шеляг гл д р... наук проф П Д Павленок...

Логические основы работы ЭВМ. Основы понятия и операции алгебры логики
Введение... Логические основы работы ЭВМ Основы понятия и операции алгебры логики Прикладное программное обеспечение...

Организационный этап выполнения курсовой работы 2.1 Примерная тематика курсовой работы . 3 Основной этап выполнения курсовой работы 3.1.1 Назначение и место ученого предмета дисциплины
стр Введение... Введение Реформирование национальной системы высшего образования связанное с введением нового перечня специальностей общегосударственного классификатора...

Анализ и поиски путей совершенствования работы предприятия "Фортуна" на основе экспертного анализа работы предприятий автосервиса
Увеличение масштабов производства автомобилей приводит к росту абсолютного объема ремонтных работ, и, как следствие этого, к росту предприятий,… Особенно большой приток автомобильного транспорта наблюдается по Приморскому… Требования, предъявляемые к их обслуживанию и ремонту, стали значительно выше. Эффективность работы автомобиля в…

Основы планирования. Теоретические основы управления проектами. Основы планирования. Планирование проекта в MS Project 7
Использованная литература В В Богданов Управление проектами в Microsoft Project Учебный курс Санкт Петербург Питер г...

На тему Ознакомление со средой MATLAB. Работа в командном окне
Федеральное государственное бюджетное образовательное учреждение... высшего профессионального образования... Пензенский государственный технологический университет...

Контрольная работа МЕТОДИЧЕСКИЕ УКАЗАНИЯ Для самостоятельной работы и к выполнению контрольной работы для студентов заочного обучения всех специальностей
Информатика... Контрольная работа... Для направлений бакалавриата Землеустройство и кадастры...

Лабораторная работа № 2 Основы работы в Windows NT
Лабораторная работа Основы работы в Windows NT... Цель работы изучение основных понятий Windows и приобретение навыков работы c интерфейсом Windows...

Понятие воспитательной работы. Роль и место воспитательной работы в системе работы с кадрами
Это, в свою очередь, требует повышения уровня воспитательной работы с личным составом, выделения приоритетов в системе воспитания личного состава,… Вместе с тем в современных условиях принимаемые меры воспитательного… Коллегия МВД России на заседании 23 декабря 1998 г рассмотрев состояние работы с кадрами в системе кадровой политики…

0.041
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам