- •23.05.01 «Наземные транспортно-технологические комплексы»
- •Перечень и содержание лабораторных работ лабораторноя работа №1
- •Лабораторная работа №2
- •Заполнение матрицы значениями функции в MathCad
- •Задание к лабораторной работе № 2 Заполнить матрицу значениями функции :
- •Значение константы а, диапазон изменения и шаг по переменным х и у выбрать самостоятельно. Задания на матрицы
- •Лабораторная работа №3 Решения слау . Реализовать решение заданной слау в среде MathCad
- •Информация к решению
- •Задание к лабораторной работе № 3
- •Лабораторная работа №4
- •Лабораторная работа № 5
- •Лабораторная работа № 6
- •I. Построить в одной системе координат
- •II. Построить графики следующих функций:
- •Лабораторная работа № 7
- •Лабораторная работа № 8
- •Лабораторная работа № 9
- •Лабораторная работа № 10
- •4. Содержание отчета
Лабораторная работа № 5
Программирование в MATCAD. Работа с массивами.
Программирование в Mathcad
Программный модуль
Mathcad-программа представляет собой функцию, которая возвращает в качестве результата число, вектор или матрицу. Для создания такой программируемой функции, надо имени функции присвоить программный блок. Например :
Формальными аргументами программируемой функции могут быть константы, переменные (в том числе и ранжированные), массивы и имена функций, используемых внутри программного блока.
Операторы программного модуля
Для создания Mathcad-программы следует воспользоваться панелью инструментов Programming (Программирование), вызвав ее кнопкой, расположенной на математической палитре.
П
анель
Programming
содержит следующие операторы:
- Add Line – создания блока ввода команд Mathcad-программы;
- ← - присваивания;
- If – условный;
- Otherwise – альтернативного выбора (применяется вместе с условным);
- For – цикла с известным числом повторений;
- While – условного цикла;
- Break – прерывания;
Создание программного модуля
Оператор Add Line вставляет в рабочий документ программный блок.
Блок ограничен вертикальной линией, справа от которой расположены поля ввода команд программного модуля.
Чтобы расширить программный блок путем добавления новых полей ввода, надо повторно вызвать оператор Add Line, но уже внутри программного модуля.
Операторы программного модуля одного уровня объединяются вертикальной линией. Если необходимо добавить поле ввода в конструкцию If, то курсор должен быть установлен на оператор.
Если требуется вставить новое поле ввода вне условного оператора, то надо выделить его целиком и только затем нажать кнопку Add Line (Добавить линию).
Программный модуль готов к применению, когда все поля ввода заполнены, то есть он полностью определен.
Результатом обращения к функции, определенной с помощью программного модуля, является значения последнего оператора. Если в качестве результата необходимо вернуть несколько значений, последним оператором функции можно сформировать матрицу из этих значений.
Оператор присваивания
Оператор, обозначенный на панели инструментов Programming стрелкой ← , выполняет операцию присваивания. Переменной, стоящей слева от оператора, присваивается значение, указанное справа.
Все присваивания выполняются локально, то есть внутри программного модуля. Переменная, определенная до программного модуля, не изменяет своего значения.
Условный оператор
Условный оператор применяется, если в зависимости от некоторого условия требуется выполнить некоторое действие.
Условный оператор имеет следующую структуру:
оператор if условие
где оператор – действие, которое выполняется в случае если условие истинно. Когда условие ложно, управление передается следующему за if оператору. Например, следующая функция возвращает абсолютное значение числа.
Оператор альтернативного выбора
Этот оператор позволяет запрограммировать условную конструкцию вида:
Оператор1 if условие
Оператор2 otherwise
Если условие истинно, то выполнить оператор1, иначе – оператор2.
Например, следующая функция возвращает 1, если x >0; иначе ; возвращает 0, если x = 0; иначе возвращает -1.
Цикл с известным числом повторений
Оператор for представляет возможность организовать цикл по некоторой переменной, изменяющейся в заданном диапазоне.
Оператор записывают так:
For x € xn, xn+dx .. xk
Эта запись означает, что оператор выполнится для значений переменной, изменяющейся в диапазоне от начального значения до конечного, с заданным шагом.
Например, следующая функция возвращает сумму x1+x3+x5+x7
Границы диапазона могут быть заданы не только конкретными значениями, но и переменными:
диапазон может быть представлен в виде вектора, например, следующая функция, считает сумму нечётных элементов вектора
Цикл с условием
Оператором While создается цикл, количество повторений которого неизвестно, но предусмотрен выход из него по некоторому логическому условию. Запись цикла имеет вид
While условие
оператор.
Это означает, что оператор будет выполняться в цикле до тех пор, пока истинно условие.
Например, найти
сумму ряда
для x>1,
суммировать пока очередной член ряда
больше 0,001
Оператор прерывания
Если цикл надо завершить досрочно, применяется оператор break.
Следующая функция возвращает индекс последнего(первого с конца) элемента вектора отвечающему некоторому условию. Имя функции, проверяющей условие передаётся в качестве формального параметра. Проверка вектора начинается с последнего элемента до первого с отрицательным шагом.
Задание к лабораторной работе № 5
Решить в MathCad программным(встроенные функции работы с массивами не применять) способом следующие задачи:
1. Найти минимальный и максимальный элементы вектора y ={ y 1 , y 2 ,…, y 10 } и поменять их местами.
2. Задан вектор c ={ c 1 , c 2 , …, c n }. Найти вектор y ={ c 1 /| c |, c 2 /| c |, …, c n /| c |}, где | c | - длина вектора c.
3. Даны два вектора x ={ x 1 , x 2 , …, x n } и y ={ y 1 , y 2 , …, y n }. Определить, ортогональны ли эти векторы.
4. Найти косинус угла между двумя векторами a ={ a 1 , a 2 , …, a 20 } и b ={ b 1 , b 2 , …, b 20 }.
5. Из двух векторов x ={ x 1 , x 2 , …, x 16 } и y ={ y 1 , y 2 , …, y 16 } определить тот, у которого больше длина.
6. Найти сумму s положительных компонентов вектора b ={ b 1 , b 2 , …, b 15 }. Образовать новый вектор по формуле
1. Заданы два вектора a ={ a 1 , a 2 , …, a n } и b ={ b 1 , b 2 , …, b n }. Определить тот из них, который имеет наименьшую длину.
2. Найти наименьший из положительных элементов массива x ={ x 1 , x 2 , …, x 20 }.
3. Найти наибольшее значение суммы x i + y i для массивов x ={ x 1 , x 2 , …, x 20 } и y ={ y 1 , y 2 , …, y20 }.
4. Даны векторы u ={ u 1 , u 2 , …, u 8 } и w ={ w 1 , w 2 , … w 8 }. Найти среднее арифметическое длин этих векторов.
5. Вычислить сумму отрицательных и произведение положительных элементов вектора x ={ x 1 , x 2 , …, x 10 }. Найти длину этого вектора.
6. Найти индексы наименьшего и наибольшего элементов вектора x ={ x 1 , x 2 , …, x 10 }. Определить их сумму S.
7. Определить количество положительных элементов вектора x ={ x 1 , x 2 , …, x 20 }. Образовать новый вектор y из положительных элементов вектора x.
8. Найти минимальный и максимальный элементы вектора y ={ y 1 , y 2 ,…, y 10 }. Вывести на экран их значения и индексы.
9. Вычислить среднее арифметическое всех положительных элементов вектора x ={ x 1 , x 2 , …, x 20 }.
10. Заданы векторы a ={ a 1 , a 2 , …, a n } и b ={ b 1 , b 2 , …, b n }. Найти скалярное произведение этих векторов.
11. Даны векторы x ={ x 1 , x 2 , …, x 9 } и y ={ y 1 , y 2 , …, y 9 }. Найти количество положительных, отрицательных и нулевых элементов в каждом из этих векторов.
12. Определить индекс наименьшего из положительных элементов вектора y ={ y 1 , y 2 , …, y 15 }.
13. Даны векторы a и b Найти cos угла между ними.
14. Задан вектор a={a 1 , a 2 , …, a 8 }. Поменять его первый элемент с минимальным и последний– с максимальным.
15. Определить индекс наибольшего из отрицательных элементов вектора y ={ y 1 , y 2 , …, y 15 }.
16. Определить количество положительных элементов вектора x ={ x 1 , x 2 , …, x 20 }. Образовать новый вектор y из отрицательных элементов вектора x.
17. Определить индекс наименьшего по модулю элемента вектора y ={ y 1 , y 2 , …, y 15 }.
18. Даны два вектора x ={ x 1 , x 2 , …, x n } и y ={ y 1 , y 2 , …, y n }.Найти значение z=2· | x |– | y |, где | x |, | y |- длины векторов x, y.
19. Вычислить среднее геометрическое всех положительных элементов вектора x={x 1 , x 2 , …, x 20 }.
20. Вычислить среднее геометрическое модулей всех отрицательных элементов вектора x={x 1 , x 2 , …, x 20 }..
21. Дан вектор x={x 1 , x 2 , …, x n }. Найти z=sin(k)-cos(m), где k–максимальный по модулю элемент, m – минимальный элемент вектора.
22. Найти наибольший из положительных элементов массива x ={ x 1 , x 2 , …, x 20 } и количество отрицательных элементов..
23. Дан вектор x ={ x 1 , x 2 , …, x n }. Найти: сумму элементов больших 10, произведение отрицательных элементов и наибольший по модулю элемент вектора.
24. Даны векторы a ={ a 1 , a 2 , …, a 10 } и b ={ b 1 , b 2 , …, b 10 }. Найти косинус угла между ними и количество элементов вектора равных нулю.
