Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Работа с символьным пакетом инженерных расчетов MathCAD

Поиск

Работа с символьным пакетом инженерных расчетов MathCAD

Тема1: Оформление документа, ввод и редактирование формул. Вычислительные особенности MathСad. Операторы и математические функции. Символьные вычисления.

Цель работы: Изучение вычислительных возможностей символьного пакета MathCAD для научных и инженерных расчетов. Приобретение навыков работы с документом MathCAD и работы с основными панелями инструментов.

Используемые программные средства: MathCAD.

Теоретические сведения

Элементы интерфейса и организация документа

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

Рассмотрим основные элементы интерфейса MathCAD. Запуск пакета производится двойным щелчком по пиктограмме MathCAD на рабочем столе или активизацией соответствующей опции главного меню (Пуск>Программы>MathSoft Apps>MathCAD). При этом разворачивается собственное окно приложения. Это окно содержит окно документа с именем Untitled:1, через него осуществляется доступ к рабочему документу MathCAD.

Формулы могут размещаться в любом месте рабочего документа MathCAD. Чтобы подвести курсор к нужному месту, не видимому в настоящий момент в окне, можно использовать полосы прокрутки, как в любой программе Windows. Подобно другим программам под Windows, MathCAD содержит полосу меню. Ниже полосы меню расположена панель инструментов. Многие команды меню можно быстро вызвать, нажав кнопку на панели инструментов. Для того чтобы узнать, что делает кнопка, достаточно нажать на нее, и появится строка сообщения. Если активизировать кнопку не нужно, то достаточно убрать с неё указатель, не отпуская кнопки мыши. Если указатель остановлен на кнопке, появляется текст, описывающий действие кнопки.

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

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

 

 

Рис. 1.

 

Рис. 2.

 

Рис. 2.

Рассмотрим аспекты управления рабочим документом. Чтобы открыть ранее существующий рабочий документ, нужно выбрать пункт Открыть (Open) из меню Файл. MathCAD запросит имя файла. В самом низу меню Файл MathCAD ведет список файлов, открывшихся последними. Выбор имени файла из этого списка сразу открывает файл. В меню Файл есть два пункта, касающиеся сохранения файлов: Сохранить (Save), Сохранить как (Save As). Для записи рабочего документа, ранее никогда не сохраняющегося, можно выбрать любой из них, в результате чего появится диалоговое окно Сохранить как (Save As), в котором можно набрать имя файла. Для перезаписи исходного рабочего документа (его изменённой версии) нужно выбрать пункт Сохранить (Save) или нажать комбинацию клавиш [Ctrl+S], в результате чего MathCAD уничтожает исходную копию рабочего документа и записывает новую копию, показываемую в рабочем окне.

Практическая часть

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

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

2. Напечатайте 20-4/103.2=. После набора знака= MathCAD вычисляет выражение и выводит результат.

Этот пример демонстрирует особенности работы с MathCAD.

· MathCAD отображает формулы в точности в том виде, как их печатают в книгах или пишут на доске – по всей площади экрана; подбирает размеры для дробных черт, скобок и других математических символов, чтобы они выглядели так, как их обычно пишут на бумаге.

· MathCAD понимает, какую операцию выполнять первой. После ввода знака равенства = MathCAD показывает результат.

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

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

В пакете MathCAD можно оперировать переменными и функциями. При помощи переменных и функций становится возможным связь уравнений и использование промежуточных результатов в дальнейших вычислениях.

Правила определения переменных.

· Напечатать имя переменной, которую нужно определить.

· Напечатать двоеточие (:), чтобы ввести символ присваивания (MathCAD показывает: сопровождаемое символом присваивания: =).

· Напечатать значение, присваиваемое переменной. Оно может содержать числовые константы и любые, ранее определённые переменные и функции.

Слева от знака:= могут стоять:

· имя простой переменной, например x;

· имя переменной с нижними индексами;

· матрица с элементами, являющимися простыми переменными или переменными с нижними индексами;

· имя функции со списком аргументов, состоящих из имен простых переменных, например f(x,y,z);

· имя переменных с верхними индексами.

 

Пример 1. Задание переменных.


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

· наберите имя переменной, например ;

· напечатайте символ: (двоеточие). В рабочем документе появится знак присваивания (:=)

· напечатайте значение, которое вы присваиваете переменной , например 11

· наберите 9/2 [ Space ]*t^2=

Здесь: [ Space ] – клавиша пробела; символ ^ означает возведение в степень, * ¾ знак умножения, а наклонная черта вправо (/) ¾ деление.

После ввода формулы MathCAD возвращает результат. Окно рабочего документа содержит одно определение, которое определяет переменную, и одно вычисление, которое дает результат. MathCAD пересчитывает результаты сразу после внесения любых изменений в рабочий документ. Если заменить, например, число 11 в примере на какое-либо другое, MathCAD изменит результат, как только будет введен [ Enter ], или Вы щелкнете мышью вне формулы.

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

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

· имя переменной слева;

· или:= или @ в середине;

· допустимый диапазон справа.

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

· напечатайте j и затем нажмите клавишу двоеточия:. Пустое поле означает, что MathCAD ожидает определение для j, не зная, будет ли j обычной переменной или дискретным аргументом.

· Напечатайте 1. Затем нажмите клавишу точку с запятой;. Это сообщает MathCAD, что определяется дискретный аргумент. MathCAD показывает; как две точки.., что означает диапазон. Завершите определение дискретного аргумента, печатая 15 в оставшемся поле.

· Это определение указывает, что j принимает значения 1, 2.. 15. Чтобы определить дискретный аргумент с шагом, отличным от единицы, нужно сделать следующее:

· напечатать k: 1, 1.5;15

· На экране это будет выглядеть как

· k:= 1,1.5.. 15.

· В этом определении диапазона:

· переменная k – имя дискретного аргумента. Это должно быть простое имя

· число 0 – первое значение переменной k

· число 1.5 – второе значение в диапазоне. Это не размер шага. Размер шага в этом примере 0.5 – разница между 1.5 и 1

· число 2 – последнее значение в диапазоне. Если третье число в определении диапазона не равно целому числу приращений начального значения, аргумент все равно не выйдет за его пределы.

Можно использовать произвольные скалярные выражения вместо 1, 1.5 и 15, но эти значения должны быть всегда вещественными. Комплексные числа не имеют смысла в определениях дискретного аргумента, так как имеется бесконечное число путей, соединяющих два данных комплексных числа. Если только дискретный аргумент определен, он принимает полный диапазон значений каждый раз, когда он используется.

Нельзя определить простую переменную через дискретный аргумент. Например, если определив j, теперь записать i:= j + 1,то MathCAD истолкует это как попытку приравнять скалярную переменную дискретному аргументу и отметит уравнение сообщением “нескалярная величина”. Если дискретный аргумент используется в выражении, MathCAD вычисляет выражение один раз для каждого значения дискретного аргумента. Этот принцип выражает различие между выражениями с дискретным аргументом и без него. Выражения, которые не содержат дискретный аргумент, имеют только одно значение. Выражения, содержащие дискретные аргументы, принимают много значений, которые соответствуют каждому значению каждого аргумента.


Пример 2. Определение дискретного аргумента.

Определение функции аналогично определению переменной. Имя функции должно стоять слева, знак присваивания:= посередине, а выражение - справа. Основное различие состоит в том, что имя теперь включает список аргументов.

Правила определения функций.

· напечатать имя функции, например f;

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

· ввести:. Появится знак оператора присваивания:=;

· напечатать выражение, задающее функцию. Оно может содержать любые ранее определенные функции и переменные.

· Определенная таким образом функция может быть использована везде ниже определения, также как используются переменные.

При использовании функции в выражении MathCAD

· вычисляет значения аргументов, указанных в скобках;

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

· выполняет вычисления, предписанные определением функции, и возвращает результат вычислений как значение функции.

Пример 3. Задание функций.

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

Каким образом строятся математические выражения в MathCAD? Многие математические выражения можно создавать, просто печатая последовательность символов. Часть символов – буквы и цифры – служат для ввода чисел и имен функций и переменных, другие символы – для создания операторов. Можно напечатать многие из этих операторов, нажимая соответствующие кнопки на различных палитрах операторов. Например, арифметическую палитру можно открыть, нажав кнопку с изображением калькулятора. Математические выражения имеют строго определенную структуру, и редактор формул MathCAD разработан с учетом этого. В MathCAD математические выражения не столько печатаются, сколько строятся. MathCAD собирает различные части выражения, используя правила старшинства операций и некоторые дополнительные правила, которые упрощают ввод знаменателей, показателей степени и выражений в радикалах. Например, если напечатать / чтобы создать дробь, курсор будет оставаться в знаменателе, пока ему явно не указать, чтобы он покинул знаменатель, щелкнув мышью вне знаменателя, нажав [ Space ] или используя клавиши курсора. Говорят, что в этом случае операторы являются “цепкими”. Операции деления, возведения в степень и извлечение корня в MathCAD – “цепкие” операции, т.е. после создания одной из этих операций, всё затем печатаемое будет частью знаменателя, показателя степени или подкоренного выражения, пока явно не переместить курсор, нажимая [ Space ], клавиши курсора или с помощью мыши. Чтобы покинуть выражение, можно:

· щёлкнуть снаружи выражения мышью,

· нажать клавишу ввода [ Enter ].

Или

· поместите маркер ввода перед оператором;

· нажмите [ Del ].

Чтобы удалить оператор, который имеет только один операнд типа |x |, x!:

· охватите оператор маркером ввода;

· нажмите [ Del ] или [ Backspace ].

Чтобы вычислить выражение, нужно:

· напечатать выражение, содержащее любую допустимую комбинацию чисел, переменных и функций. Любые переменные или функции, используемые в этом выражении, должны быть определены в рабочем документе;

· нажать клавишу =.

Прерывание вычислений.

Для того чтобы прервать процесс вычислений, нажмите клавишу [ Esc ]. После появления диалогового окна нужно щелкнуть по кнопке OK, для остановки процесса вычислений или по кнопке “отмена” для его продолжения.

 

Исправление ошибок.

Определив выражение, вызвавшее ошибку, нужно его отредактировать с целью устранения ошибки или исправить определение переменной, приведшей к ошибке. После щелчка по выражению и начала редактирования MathCAD удаляет сообщение об ошибке. После щелчка вне уравнения (или нажатия клавиши [ F9 ]), MathCAD повторно вычисляет выражение. Если ошибка устранена, то MathCAD затем повторно вычисляет другие выражения, зависящие от измененного.

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

Рассмотрим допустимые в MathCAD имена переменных и функций. Имена в MathCAD могут содержать любые из следующих символов:

· прописные и строчные латинские буквы;

· цифры от 0 до 9

· знак подчеркивания _

· штрих ` Это не апостроф. Находится на одной клавише с тильдой ~

· символ процента %

· греческие буквы. Есть два способа набрать греческую букву: напечатать римский эквивалент и нажать [Ctrl]+G или щелкнуть по соответствующему символу на палитре греческих символов

· символ бесконечности, который можно задать как комбинацию клавиш [Ctrl]+[Shift]+Z.

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

 

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

MathCAD различает в именах символы верхнего и нижнего регистра, а также различные шрифты.

Кроме того, среда MathCAD включает так называемые предопределенные переменные. MathCAD содержит 8 переменных, значения которых определены сразу после запуска программы. Они называются встроенными или предопределенными. Эти переменные имеют или общепринятое значение (например, пи или е), или используются как внутренние переменные, управляющие работой MathCAD. Эти переменные можно переопределять, например, определим е:= 2. Ниже этого определения переменная е примет в рабочем документе новое значение.

Приведем примеры некоторых встроенных переменных:

р=3.14159…– число Пи;

е=2.71828 – основание натурального логарифма;

Е=10^307 – машинная бесконечность;

% =0.01 – процент.

MathCAD интерпретирует все, начинающееся цифрой, как число. Цифра может сопровождаться:

· другими цифрами;

· десятичной точкой;

· цифрами после десятичной точки;

· символами h или o для шеснадцатеричных и восьмеричных чисел; символами i или j для комплексных чисел. Комплексные числа MathCAD воспринимает в форме a+bi (или a+bj). Специальные функции и операторы для работы с комплексными числами:

· Re(z) – вещественная часть числа z;

· Im(z) – мнимая часть числа z;

· Arg(z) – аргумент числа z (угол в комплексной плоскости между вещественной осью и радиус-вектором, определяемым числом z);

· |z| – модуль числа z.

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

· заполнить массив пустых полей

· использовать дискретный аргумент

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

Пример 5. Векторные и матричные функции.



Пример 6. Векторные и матричные операции.

 


Сумма элементов вектора: Скалярное и векторное произведение

Определитель матрицы Транспонированная матрица

Обратная матрица:


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


Символьные вычисления.

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

Порядок выполнения работы

(включая пример и варианты заданий)

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

Тестовый пример:

1) Попробуем набрать следующее выражение

и вычислим его значение для a = 0.1, x = 3.5, y = 1. В первую очередь зададим значения переменных, входящих в состав данного выражения.

Напечатайте x:3.5 a:0.1 y:1. Затем наберите x-3*a^2.

До сих пор правила старшинства позволяли нам просто печатать символы подряд, дальше так продолжать нельзя, так как маркер ввода находится на двойке, и двойка станет числителем, если нажать / Чтобы все выражение стало числителем, нажмите три раза клавишу [space ]. Маркер ввода охватит выражение целиком. Можно поэкспериментировать с другими клавишами курсора, можно щелкать мышью на других частях выражения. Прежде чем перейти к следующему шагу, убедитесь, что маркер ввода охватывает все выражение.

Нажмите / чтобы создать дробную черту напечатайте - 4 + и щелкните на кнопке корня на арифметической палитре. Затем напечатайте y + 1, чтобы завершить знаменатель. Чтобы добавить что-либо снаружи корня нажмите дважды клавишу [ Space ] (пробел). Чтобы вычислить значение данного выражения нажмите клавишу =.

2)

2.1. j:=0..8

2.2. Xj:=j2+1

2.3. наберите j: 0;8

2.4. наберите X [ j: j^2 [Space] +1

2.5. наберите X=

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

3) Выполнить вычисления по приведенным ниже формулам.

3.1 Используя переменную типа “дискретный аргумент”, задать элементы вектора.


3.2 Ввести с клавиатуры вектора W, V, матрицы A,B. Вычислить: WxV, W*V, сумму элементов данных векторов, A-1, BT, A*B, A*A-1, (2*A+B)*(A-B2).

3.3 Наберите A:

щелкните мышью на палитре матричных операторов. Заполните поля диалогового окна и нажмите клавишу OK. Затем заполните пустые поля матрицы скалярными выражениями. Аналогично задайте матрицу B и вектора W, V.


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

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

1. Опишите палитры символов.

2. Особенности работы с пакетом инженерных расчетов MathCAD.

3. Как определить переменную в пакете MathCAD? Приведите примеры.

4. Переменная типа “ дискретный аргумент “. Примеры.

5. Как в MathCAD определяется функция? Приведите примеры определения функции.

6. Построение выражения в MathCAD. Цепкие операторы.

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

8. Сообщения об ошибках в пакете MathCAD. Исправление ошибок.

9. Допустимые в MathCAD имена переменных и функций. Предопределенные переменные. Числа.

10. Создание вектора (матрицы). Примеры.

11. Векторные и матричные операции (функции). Примеры.

12. Какие операторы используются в Mathcad? Как их можно вводить?

13. Операторы вычисления сумм и произведений: способы задания, примеры.

14. Оператор производной: способ задания, дифференцирование в точке, символьное дифференцирование, примеры.

15. Определенный интеграл: способ задания, переменные пределы интегрирования. Двойной и тройной интегралы.

16. Неопределенный интеграл: способ задания, примеры.

17. Символьный знак равенства, способы его задания, примеры.

18. Встроенные функции.

Варианты заданий

Вариант 1

1) Вычислить , где , , .

2) Используя переменную типа «дискретный аргумент», задать элементы вектора по правилу , если .

3) Ввести с клавиатуры векторы , ., матрицы , .

Вычислить:

а) скалярное и векторное произведение векторов W и V;

б) сумму элементов данных векторов;

в) , , , , ;

г) сумму элементов каждой строки матрицы .

4) Решить систему уравнений с помощью обратной матрицы и с помощью функции lsolve.

5) Найти число , где – матрица, полученная из матрицы заменой первого столбца вектором .

6) Вычислить

Вариант 2

1) Вычислить , где , , .

2) Используя переменную типа «дискретный аргумент», задать элементы вектора по правилу , если .

3) Ввести с клавиатуры векторы , и матрицы , .

Вычислить:

а) скалярное и векторное произведение векторов W и V;

б) сумму элементов данных векторов;

в) , , , , ;

г) сумму элементов каждой строки матрицы .

4) Решить систему уравнений с помощью обратной матрицы и с помощью функции lsolve.

5) Найти число , где – матрица, полученная из матрицы заменой второго столбца вектором .

6) Вычислить .

Вариант 3

1) Вычислить , где . , .

2) Используя переменную типа «дискретный аргумент», задать элементы вектора по правилу , если .

3) Ввести с клавиатуры векторы , и матрицы , .

Вычислить:

а) скалярное и векторное произведение векторов W и V;

б) сумму элементов данных векторов;

в) , , , , ;

г) сумму элементов каждой строки матрицы .

4) Решить систему уравнений с помощью обратной матрицы и с помощью функции lsolve.

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

6) Вычислить .

 

Вариант 4

1) Вычислить , где , .

2) Используя переменную типа «дискретный аргумент», задать элементы вектора по правилу
, если .

3) Ввести с клавиатуры векторы , и матрицы , .

Вычислить:

а) скалярное и векторное произведение векторов W и V;

б) сумму элементов данных векторов;

в) , , , , ;

г) сумму элементов каждой строки матрицы .

4) Решить систему уравнений с помощью обратной матрицы и с помощью функции lsolve.

5) Найти число , где – матрица, полученная из матрицы заменой первого столбца вектором .

6) Вычислить .

 

 

Вариант 5

1) Вычислить , где , .

2) Используя переменную типа «дискретный аргумент», задать элементы вектора по правилу , если .

3) Ввести с клавиатуры векторы , и матрицы , .

Вычислить:

а) скалярное и векторное произведение векторов W и V;

б) сумму элементов данных векторов;

в) , , , , ;

г) сумму элементов каждой строки матрицы .

4) Решить систему уравнений с помощью обратной матрицы и с помощью функции lsolve.

5) Найти число , где – матрица, полученная из матрицы заменой второго столбца вектором .

6) Вычислить .

 

Вариант 6

1) Вычислить где , .

2) Используя переменную типа «дискретный аргумент», задать элементы вектора по правилу , если .

3) Ввести с клавиатуры векторы , и матрицы , .

Вычислить:

а) скалярное и векторное произведение векторов W и V;

б) сумму элементов данных векторов;

в) , , , , ;

г) сумму элементов каждой строки матрицы .

4) Решить систему уравнений с помощью обратной матрицы и с помощью функции lsolve.

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

6) Вычислить .

 

Вариант 7

1) Вычислить , где , .

2) Используя переменную типа «дискретный аргумент», задать элементы вектора по правилу , если .

3) Ввести с клавиатуры векторы , и матрицы , .

Вычислить:

а) скалярное и векторное произведение векторов W и V;

б) сумму элементов данных векторов;

в) , , , , ;

г) сумму элементов каждой строки матрицы .

4) Решить систему уравнений с помощью обратной матрицы и с помощью функции lsolve.

5) Найти число , где – матрица, полученная из матрицы заменой первого столбца вектором .

6) Вычислить .

 

 

Вариант 8

1) Вычислить , где , .

2) Используя переменную типа «дискретный аргумент», задать элементы вектора по правилу , если .

3) Ввести с клавиатуры векторы , и матрицы , .

Вычислить:

а) скалярное и векторное произведение векторов W и V;

б) сумму элементов данных векторов;

в) ,



Поделиться:


Познавательные статьи:




Последнее изменение этой страницы: 2016-04-26; просмотров: 814; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.225.54.199 (0.013 с.)