Добавить материал и получить бесплатное свидетельство о публикации в СМИ
Эл. №ФС77-60625 от 20.01.2015
Инфоурок / Информатика / Конспекты / 2d графика в пакетах символьной математики
ВНИМАНИЮ ВСЕХ УЧИТЕЛЕЙ: согласно Федеральному закону № 313-ФЗ все педагоги должны пройти обучение навыкам оказания первой помощи.

Дистанционный курс "Оказание первой помощи детям и взрослым" от проекта "Инфоурок" даёт Вам возможность привести свои знания в соответствие с требованиями закона и получить удостоверение о повышении квалификации установленного образца (180 часов). Начало обучения новой группы: 24 мая.

Подать заявку на курс
  • Информатика

2d графика в пакетах символьной математики

библиотека
материалов

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

Существует три способа построения графиков в системе MathCAD:

  • можно воспользоваться позицией Главного меню Insert, выбрав команду Graph и в раскрывающемся списке - тип графика;

  • выбрать тип графика на наборной панели Graph, которая включается кнопкой на панели Math;

  • воспользоваться быстрыми клавишами ( они предусмотрены не для всех типов графиков).

Рассмотрим более подробно команды меню Insert->Graph (слева изображены соответствующие кнопки наборной панели Math):

hello_html_m3044b2b1.png X-Y Plot (X-Y Зависимость) клавиша [@]
Служит доля построения графика функции y=f(x) в виде связанных друг с другом пар координат (xi,yi) при заданном промежутке изменения дляi.

hello_html_1b50b158.png Polar Plot (Полярные координаты)клавиши [Ctrl+7]
Служит для построения графика функции r(q), заданной в полярных координатах, где полярный радиус r зависит от полярного угла q.

hello_html_m7c634d27.pngSurface Plot (Поверхности) клавиши [Ctrl+2] 
Служит для представления функции z=f(x,y) в виде поверхности в трехмерном пространстве. При этом должны быть заданы векторы значенийxi и yj), а также определена матрица вида Ai,j=f(xi,yj). Имя матрицы A указывается при заполнении рамки-шаблона. С помощью этой команды можно строить параметрические графики.

hello_html_3c8f507c.pngContour Plot (Контурный график)
Строит диаграмму линий уровня функции вида z=f(x,y), т.е. отображает точки, в которых данная функция принимает фиксированное значениеz=const.

hello_html_1989d539.png3D Scatter Plot (3D Точечный )
Служит для точечного представления матрицы значений Ai,j или отображения значений функции z=f(x,y) в заданных точках. Эта команда может также использоваться для построения пространственных кривых.

hello_html_2c53ed1e.png3D Bar Plot (3D Диаграммы)
Служит для представления матрицы значений Ai,j или отображения значений функции z=f(x,y) в виде трехмерной столбчатой диаграммы.

hello_html_m44497901.pngVector Field Plot (Поле векторов)
Служит для представления двухмерных векторных полей V=(Vx, Vy). При этом компоненты векторного поля Vx и Vy должны быть представлены в виде матриц. При помощи этой команды можно построить поле градиента финкции f(x,y).

3D Plot Wizard (вызов мастера для быстрого построения 3-хмерного графика)
При выборе этой команды возникает ряд всплывающих окон, в которых требуется выбрать параметры построения трехмерного графика (задаются тип трехмерного графика, стиль его изображения, цветовая гамма). График по умолчанию строится на промежутке от -5 до +5 (по обеим переменным).

1.Двумерные графики в декартовой системе кординат.

График функции y=f(x).


Пhello_html_13cba840.jpgри выполнении команды Inset -> Graph -> Plot в документ помещается рамка-шаблон с двумя незаполненными ячейками для построения графика. (Клавиша [@]).

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

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

После ввода x и f(x) в графической области появятся еще четыре ячейки, которые не обязательно заполнять. MathCAD автоматически находит подходящие значения для xmin, xmax, ymin, ymax. Если же предлагаемые MathCAD значения вас не устраивают, вы можете задать свои.

В MathCAD существует возможность строить график функции, не задавая предварительно промежуток изменения независимой переменной. По умолчанию этот промежуток принимается равным [-10, 10].

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

2.Кривые на плоскости, заданные параметрически.

Уhello_html_m2176b799.jpgравнения x=f(t), y=y(t) , где f(t) и y(t) непрерывны при t из (a, b), устанавливающие зависимость декартовых координат (x,y) точки плоскости от значения параметра t , определяют на плоскости кривую, заданную в параметрической форме.

В случае построения параметрически заданной кривой, вместо независимой переменной x под осью абсцисс необходимо задать индексированую переменную xi. А рядом с осью ординат необходимо соответственно указать yi.

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

3. Двухмерные графики в полярной системе координат.

Построение полярных графиков.

Дhello_html_1bc0d3e3.jpgля построения полярного графика необходимо выполнить команду Inset -> Graph -> Polar Plot. При этом в документ помещается графическая область с двумя незаполненными ячейками для построения графика. (Клавиши [Ctrl +7]).

В нижнюю ячейку вводится полярный угол q. Его следует определить заранее как переменную, принимающую значения из промежутка (ранжированная переменая). В левую ячейку вводится полярный радиус r(q) или Re(r(q)) и Im(r(q)). Функция r(q) либо задается заранее, либо ее определение вводится непосредственно в ячейку.

График в полярных координатах можно построить и посредством команды X-Y Plot/ Только в этом случае необходимо дополнительно задать следующие функции: x(q)=r(q)cos(q) и y(q)=r(q)sin(q), а в ячейках для абсцисс и ординат указать соответственно x(q) и y(q)

Если для некоторых углов q функция не определена (не существует радиуса с действительным значением, он принимает чисто мнимые значения), то MathCAD отображает на графике только действительные значения радиуса. Но при помощи функций Re и Im можно представить на одной круговой диаграмме графики как действительной, так и мнимой части функции r(q).

Форматирование полярных графиков.

Если вы хотите отредактировать график в полярных координатах, необходимо выделить график (щелчком левой кнопки мыши) и выполнить команду Format -> Graph -> Polar Plot или выполнить двойной щелчок на выделенном графике. При этом откроется окно Formatting Currently Selected Polar Plot (форматирование полярного графика). Это окно содержит те же вкладки, что и для графиков в декартовой системе координат.

Вкладка Polar Axes содержит следующие элементы:

  • Log Scale (Логарифмическая шкала) - Используется для создания логарифмической r-оси.

  • Grid Lines (Вспомогательные линии) - Отображает сетку линий, соответствующих уравнениям r=const и q=const.

  • Numbered(Нумерация) - Линии r=const и q=const снабжаются подписями.

  • Show Markers (Показать метки ) - При помощи этой опции можно снабдить график двумя дополнительными пунктирными окружностями r=const. Для этого надо ввести нужные значения радиуса в появившиеся ячейки. Кроме того, справа от графика указывается минимальный и максимальный радиус; можно увеличить или уменьшить график, введя в эти ячейки собственные значения.

  • Auto Grid (Автосетка) - При установке этой опции число линий сетки определяет MathCAD.

hello_html_67bd3dca.jpg

Двухмерные графики в системе
Maxima.

Функция plot2d работает в паре с программой gnuplot. Gnuplot в свою очередь — мощнейшая опенсорсная программа для визуализации графиков. Она умеет строить графики и без всякой Maxima, хоть 2D, хоть 3D. Тем не менее, Maxima использует её для вывода своих вычислений на экран или в файл, предварительно рассчитывая массив точек, которые уже загружаются в gnuplot и там отрисовываются.

Кратко о возможностях: рисование графиков функций, рисование параметрических графиков, рисование дискретных графиков, возможность стилизации кривых, несколько графиков на одном, легенда, подписи на осях абсцисс и ординат, регулировка масштаба и сетки графика, вывод графика в различные векторные и растровые форматы, график в полярных координатах, график с логарифмическим масштабом… Нет, кратно не получится. Лучше обо всём по порядку.

Строим графики аналитических функций

Самое простое что можно придумать — это построение графика аналитической функции. Функция может быть при этом любая, которая доступна в Maxima, естественно, от одной переменной, вида y(x).

Возьмём простейшую функцию sin(x). Для построения графика функции нужно как минимум сказать Maxima что это за функция и в каком диапазоне значений аргумента её нужно нарисовать, в целом всё логично. Вот команда, которая выводит на экран график функции при x = [0,6]:



plot2d(sin(x), [x,0,6]);



hello_html_m20ab05fa.jpg



В качестве первого параметра всегда выступает функция, которую необходимо нарисовать. Далее следуют пределы по оси абсцисс и ординат. В следующем примере функция синуса будет нарисована в прямоугольнике [0,1]x[0,1]:

plot2d(sin(x), [x,0,1], [y,0,1]);

hello_html_419c7a9a.jpg

В этом случае добавился ещё предел по y. Хотя gnuplot сама масштабирует графики по оси y, это иногда очень удобно, особенно когда нужно показать какой-то график, уходящий в бесконечность, но важно лишь его поведение вблизи нуля. Типичный пример, где нельзя обойтись без лимита по у:

plot2d(1/x, [x,-3,3], [y,-3,3]);

hello_html_16fe1460.jpg

Посмотрите, что произойдёт, если убрать [y,-3,3].

Немаловажной особенностью работы графиками — возможность выполнять различные функции Maxima внутри plot2d. Вот пример. У нас есть некоторый полином, с которым мы работаем, скажем, ищем корни и т. д. А нужно построить график функции, предварительно её продифференцировав. Чтобы не делать лишних движений, функцию можно дифференцировать прямо во время построения графика:

(%i1) p(x):=x^7+2*x^4-8*x^3+x^2+9;

7 4 3 2

(%o1) p(x) := x + 2 x + (- 8) x + x + 9

(%i2) plot2d(diff(p(x), x), [x,-2,2])$

hello_html_6b0376b.jpg

Сразу видно, где будут экстремумы функции.

Можно также нарисовать два графика «друг на дружке», покажем, как соотносятся функция и её производная:

(%i3) plot2d([diff(p(x), x), p(x)], [x,-2,2])$

hello_html_45073e24.jpg



вумерная графика системы Maple "

Москва, 2008

Цели работы:

· знать команды, используемые для построения графиков функций одной переменной (двумерная графика);

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



1. Команда plot ()

Команда plot () – многофункциональная команда двумерной графики. Расположена она в системной библиотеке Maple, и поэтому доступна в любое время. Данная команда позволяет строить график одной или нескольких функций одной вещественной переменной, заданных в явном или параметрическом виде, а также отобразить множество точек в декартовой или полярной системе координат. Синтаксис команды: plot (f, h, v, опции);

Здесь f – функция, график которой необходимо отобразить, h – диапазон изменения независимой переменной по горизонтальной оси графика, v– диапазон изменения значения функции вдоль вертикальной оси графика.

Диапазон изменения независимой переменной h задается в виде x = а..b, где а и b– наименьшее и наибольшее значения изменения переменной, а х – имя независимой переменной. Если диапазон не задан (т.е., второй параметр представляет собой просто имя независимой переменной в функции), то по умолчанию принимается интервал ее изменения –10..10. Этот параметр (с диапазоном или нет) обязательно должен присутствовать при задании графика командой plot().

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

С помощью опций определяют вид отображаемого графика: толщину, цвет и тип линии графика, тип осей координат, размещение надписей и т.д. Задаются опции в форме уравнений имя_опции = значение. Набор возможных опций во всех командах двумерного графического вывода, за некоторым исключением, одинаков. В табл. 1 представлены все опции двумерной графики и соответствующие им значения(умалчиваемые значения подчеркнуты).



Таблица 1. Опции двумерной графики

Опция

Описание

adaptive

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

axes

Определяет тип отображаемых осей координат. Опция принимает значения: normal – обычные оси координат, пересекающиеся в точке начала координат (0,0); boxed – график заключен в прямоугольник с нанесенными шкалами по нижней и левой вертикальной граням; frame – оси с точкой пересечения в левом нижнем углу рисунка; none – оси не отображаются.

axesfont

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

color

Задает цвета кривых, отображаемых на график. В качестве значения этой опции может выступать одно из зарезервированных значений цвета в Maple: aquamarine, black, blue, navy, coral, cyan, brown, gold, green, gray, grey, khaki, magenta, maroon, orange, pink, plum, red, sienna, tan, turquoise, violet, wheat, white и yellow.

Можно определить и собственный цвет, соответствующий смешению заданных частей красного, зеленого и синего цветов. Это делается с помощью следующей командыmacro (palegreen=COLOR (RGB.5607.7372.5607)), где palegreen– имя константы нового цвета, в котором красный составляет 0.5607 части, зеленый 0,7372 и синий 0.5607, В дальнейшем это имя можно использовать для задания цвета аналогично именам встроенных цветов.

coords

При выводе как явно заданной функции, так и параметрически заданной функции по умолчанию используется декартовая система координат (cartesian ), т.е. задаваемое уравнение кривой рассматривается именно в этой системе координат. Данная опция меняет тип системы координат. Возможные значения: bipolar, cardiod, cassinian, elliptic, hyperbolic, invcassinian, invelliptic, logarithmic, logcosh, maxwell, parabolic, polar, rose и tangent, описание которых можно получить в справочной системе Maple с помощью команды? coords.

discont

Значение по умолчанию false . При установке значения этой опции, равной true, Maple первоначально вызывает команду discont (), которая определяет промежутки непрерывности функции, а затем на них рисуются непрерывные участки графика функции.

filled

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

font

Задает шрифт для вывода текста на рисунке. Значение опции задается в виде списка [семейство, стиль, размер ]. Параметр семейство задает гарнитуру шрифта: TIMES, COURIER, HELVETICA или SYMBOL. Параметр стиль определяет стиль шрифта: для гарнитуры TIMES возможные значения ROMAN, BOLD, ITALIC или BOLDITALIC, для гарнитуры COURIER и HELVETICA стиль можно опустить или задать BOLD, OBLIQUE или BOLDOBLIQUE, для шрифта SYMBOL стиль не задается. Последний параметр размерзадает размер шрифта в пунктах (points) (один пункт приблизительно равен 1/72 дюйма)

labels

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

labeldirections

Эта опция определяет направление отображения названий осей и задается в виде списка [х, у], элементы которого могут принимать одно из двух значений HORISONTAL или VERTICAL и определяют расположение надписей осей координат: горизонтально или вертикально. Умалчиваемое значение HORIS0NTAL

labelfont

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

legend

Задает отображение легенды для нескольких кривых на одном графике в виде списка, в котором i й строковый элемент соответствует i й кривой графика

linestyle

Определяет тип линии графика. Значение опции – целое число n. При n=0 тип линии соответствует умалчиваемому типу для используемого устройства отображения (обычно сплошная линия), значение 1 соответствует сплошной линии, значение 2 отображению линии точками, 3 – пунктиром и 4 – штрихпунктиром

numpoints

Определяет минимальное число вычисляемых точек, по которым строится график (значение по умолчанию равно 50 ).

resolution

Определяет горизонтальное разрешение дисплея в пикселах на дюйм и используется в качестве критерия для завершения адаптивного алгоритма отображения (значение по умолчанию равно 200 ).

sample

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

scaling

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

style

Задает отображение графика функции линиями (значение опции равно LINE ) или точками (значение опции равно POINT). Значения опции, равные PATCH и PATCHNOGRID, применяются, когда выводится замкнутый многоугольник (графическая структура POLYGONS). В этом случае его внутренняя область закрашивается цветом, установленным в опции color, причем в случае значения PATCHNOGRID его граница не отображается. Если в графическом выводе нет замкнутых многоугольников, то действие этих значений данной опции соответствует значению LINE.

symbol

Определяет тип символа, которым помечаются точки графика функции при style=POINT. Принимает значения: BOX для , CROSS для +, CIRCLE для О, POINT для · (точка) и DIAMOND для à

symbolsize

Задает размер символа в пунктах. Его значение может быть любое натуральное число. По умолчанию используются символы размером 10 пунктов. Действие этой опции не распространяется на символ POINT.

thickness

Задает толщину линии графика. Значение является целым числом от 0 до 15, соответствуя изменению толщины линии от тонкой до самой жирной.

tickmarks

Определяет число точек, не менее которого должно быть помечено по горизонтальной и вертикальной оси координат. Значение задается в виде списка [n, m]. Для каждой из осей можно определить список помечаемых точек.

title

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

titlefont

Определяет шрифт для заголовка рисунка. Значение этой опции аналогично значению опции font.

xtickmarks

Задает число точек, не менее которого должно быть помечено на горизонтальной оси. Значение опции может быть целым числом или списком значений координат точек горизонтальной оси, которые должны быть помечены. Список может состоять из уравнений, левые части которых определяют координаты помечаемых точек, а правые задают в обратных кавычках отображаемый текст, например, [0=`0.`, 0.5=`1/2`, 1=`1.`].

ytickmarks

Задает число точек, не менее которого должно быть помечено на вертикальной оси. Значение опции может быть целым числом или списком значений координат точек вертикальной оси, которые должны быть помечены. Список может состоять из уравнений, левые части которых определяют координаты помечаемых точек, а правые задают в обратных кавычках отображаемый текст, например, [0=`0.`, 0.5=`1/2`, 1=`1.`].



Ниже приводятся примеры работы с командой plot (). Первым примером будет отображение графика функции hello_html_4c93f255.png на интервале [-4,4] изменения независимой переменной х с созданием надписи.

Пример 1. Отображение графика функции с надписью.

> plot (x^2+2*cos (x^2), x=-4..4,

color=green,

title=`Пример вывода\nграфика функции`,

titlefont=[COURIER, 14],

xtickmarks=8,

thickness=6,

axesfont=[HELVETICA, 11],

labels=[«x», «y(x)»],

labeldirections=[HORIZONTAL, VERTICAL],

labelfont=[TIMES, ROMAN, 16]);

hello_html_m70ec1a72.jpg

Для удобства восприятия в примере 1 (и в некоторых других нижеследующих примерах) команды набраны в столбик, каждая отдельно. На практике команды набираются в строку, одна за одной, без пробелов. Для создания многострочной надписи в строке значения опции title использован символ перехода на новую строку (\n).

Команда plot () отображает графики функций не только на конечном интервале изменения независимой переменной, но и на бесконечном:

>plot (3*cos(x)/x, x=0..infinity, – 1.5..1, color=red, numpoints=1000, thickness=1);

hello_html_m7258c254.png

Здесь пришлось ограничить область значений функции диапазоном [-1. 5,1], так как при х, стремящемся к нулю, функция стремится к бесконечности, а также задать больше точек на графике функции, иначе в районе надписи infinity не наблюдалась бы гладкость функции, а были бы явные сломы, которые не соответствуют поведению функции.

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

Пример 2. Отображение графика параметрически заданной функции.

> plot([cos(t)^5,2*sin (2*t)^7, t=0..2*Pi],

color=orange,

title=`Отображение\nпараметрической\nкривой`,

titlefont=[COURIER, 14],

xtickmarks=4,

thickness=3,

axesfont=[HELVETICA, 11]);

hello_html_5e6b0d5.jpg

При необходимости вывода нескольких функций на одном графике следует в команде plot () задавать функции в виде множества или списка, а значение опции color в виде списка позволяет задать цвет для вывода графиков функций. Если опция color не задана, то функции отображаются в соответствии со списком цветов по умолчанию.

Пример 3. Отображение графиков нескольких функций.

> plot([x^3+1.5*sin (x^3), 20*exp (-1.5*x)*sin(x)],

x=-1..3.5, – 1..5,

color=[orange, green],

title=`Отображение\nграфиков\nнесколькихфункций`,

titlefont=[COURIER, 14],

legend=[«x^3+1.5*sin (x^3)», «20*exp (-1.5*x)*sin(x)»],

xtickmarks=4,

thickness=3,

linestyle=[4,1],

axesfont=[HELVETICA, 11],

labels=[«x», «Графики»],

labelfont=[TIMES, ITALIC, 12]);



hello_html_m516b85e3.png

Рекомендуется при выводе нескольких графиков также отображать легенду заданием списка значений опции legend. Легенду можно всегда скрыть или снова отобразить с помощью команды Show Legend меню Legend .

Команда plot () позволяет отображать на графике отдельные точки, которые задаются в виде списка списков, т.е. списка, элементами которого являются списки. Эти двухэлементные списки определяют координаты точек на плоскости. Для вывода точек необходимо задать значение опции style, равной POINT. Если этого не сделать, то Maple отобразит ломаную линию, соединяющую точки в последовательности их задания, не выделяя их специальными символами. В примере 4 точки, заданные своими координатами на плоскости, отображаются с использованием символа круг symbol = CIRCLE.




Краткое описание документа:

В данной работе я рассматривая 2d графику в пакетах символьной математики. Это очень интересная тема, т.к. в различных системах много различных нюансов приминения 2d графики, но так же есть и сходства. Так же в работе представлены примеры 2d графиков, например в декартовой системе координат или в полярной системе координат. Работа с 2d графикой очень интересна, можно открыть для себя много нового. Например, какие отличия есть в различных системах, как строяться одинаковые графики в разных интсрументальных средах.

Автор
Дата добавления 16.01.2015
Раздел Информатика
Подраздел Конспекты
Просмотров473
Номер материала 307479
Получить свидетельство о публикации

Выберите специальность, которую Вы хотите получить:

Обучение проходит дистанционно на сайте проекта "Инфоурок".
По итогам обучения слушателям выдаются печатные дипломы установленного образца.

ПЕРЕЙТИ В КАТАЛОГ КУРСОВ

Похожие материалы

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