Б1.В.ОД.6 «Программирование и программное обеспечение»

В.И. Носонов

Б1.В.ОД.6 «Программирование и программное обеспечение»

Методические материалы для выполнения лабораторных работ

для специальности

23.05.01 «Наземные транспортно-технологические комплексы»

специализация

«Подъемно-транспортные, строительные, дорожные средства

и оборудование»

Форма обучения – очная, заочная

Санкт-Петербург 2017

Краткое содержание лабораторного практикума

Наименование раздела теоретической части дисциплины Номер и тема лабораторной работы
Системы компьютерной математики Интерфейс среды MathCad Математические выражения, встроенные и пользовательские функции
  1. Лабораторная работа № 1 - Основы MathCAD. Вычислить выражение. Создать пользовательскую функцию. Табулировать функцию для выбранного аргумента.
Матричные операции в MathCAD  
  1. Лабораторная работа № 2– Матричные операции в MathCAD. Заполнение матриц. Поиск элементов по ключу. Накопление .
Решение уравнений в MathCAD.    
  1. Лабораторная работа № 3. Решения СЛАУ . Реализовать решение заданной СЛАУ в среде MathCAD 4-мя методами:
 
  Графические возможности MathCAD  
  1. Лабораторная работа № 4. Графические возможности MathCAD. Построение графиков функций.
 
Программирование в MathCAD Основные алгоритмические структуры вMathCAD Программирование алгоритмов работы с массивами в MathCAD.  
  1. - Программирование в MATCAD. Работа с массивами.
 
. Формулы, имена и функции. Графики и диаграммы 6. Лабораторная работа № 6 – Вычисления в Exсel. Построение графиков. Вычислить в Exсel выражение с применением функций рабочего листа и созданием функции пользователя в VBA.
Основы офисного программирования. Язык программирования VBA. Синтаксис, типы данных, основные операторы VBA.
  1. Лабораторная работа № 7– Основы программирования в VBA. Создание программы для вычисления значения функции.
1.
Процедуры и функции. . Объектная модель Exсel  
  1. Лабораторная работа № 8 - Программирование алгоритмов обработки массивов в VBA.
 
Программирование объектов Exсel в VBA..
  1. Лабораторная работа № 9– Применение диалоговых окон (форм). Создание пользовательской формы для ввода и обработки диапазона ячеек рабочего листа в MS Excel.
Формирование матриц и векторов. Операции над матрицами.
  1. Лабораторная работа № 10 - Пакет MatLab. Операции над матрицами. Решить заданную СЛАУ методом Крамера и матричным методом.

Перечень и содержание лабораторных работ

ЛАБОРАТОРНОЯ РАБОТА №1

Основы MathCAD. Вычислить выражение. Создать пользовательскую функцию. Табулировать функцию для выбранного аргумента.

Назначение Mathcad.

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

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

Математические выражения и текст вводятся с помощью формульного редактора Mathcad,

Mathcad позволяет решать различные задачи:

проведение математических расчетов;

подготовка графиков с результатами расчетов;

ввод исходных данных и вывод результатов в файлы

подготовка отчетов работы в виде печатных документов;

получение различной справочной информации из области математики.

Математические расчеты производятся немедленно, в соответствии с введенными формулами.

Графики различных типов вставляются непосредственно в документы.

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

Mathcad позволяет получать разнообразную справочную информацию по математике, физике, механике, химии.

Для вычисления достаточно ввести с клавиатуры выражение, например Cos(4/5)=

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

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

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

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Чтобы ввести встроенную функцию в выражение: определите место в выражении, куда следует вставить функцию, нажмите кнопку с надписью f(x) на панели инструментов и имя встроенной функции.

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru В Mathcad переменные, операторы и функции вводятся и вычисляются так, как они были бы написаны на листе бумаги. Математические выражения вычисляются слева направо и сверху вниз. Чтобы определить переменную, достаточно ввести ее имя и присвоить ей некоторое значение, для чего служит оператор присваивания. Введите в желаемом месте имя переменной, например W и ведите оператор присваивания с помощью клавиши «:» или нажатием соответствующей кнопки на панели инструментов

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

В Mathcad числовые переменные и функции могут обладать размерностью.

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Чтобы создать размерную переменную введите символ умножения после значения переменной и выберите команду «Математика à Единицы» либо нажмите кнопку с изображением мерного стакана.

В списке «Единица измерения» выберите нужную единицу измерения

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

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

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Mathcad контролирует корректность применения размерных переменных. Нельзя, например, складывать переменные разной категории размерности

Функции

Функции определенные пользователем в Mathcad записываются в форме:

ИмяФункции(Список аргументов):=Выражение

Например y(a,b,x):=a*sin(x-b)

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

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru или Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru или Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

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

Оператор численного вывода означает, что все вычисления проводятся с числами, а различные встроенные алгоритмы реализуются соответствующими численными методами.

Ранжированные переменные

Ранжированные или дискретные переменные в Mathcad, это переменные которые изменяются в некотором диапазоне с постоянным шагом. Для создания ранжированной переменной надо присвоить ей начальное значение, затем через запятую следующее (начальное + шаг) и далее после символа диапазона «..», вводимого с панели «Матрицы» или клавишей «;», конечное значение.

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Ранжированные или дискретные переменные применяются для получения листинга значений функции, например:

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

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

ЛАБОРАТОРНАЯ РАБОТА №2

Матричные операции в MathCAD. Заполнение матриц.

Задание к лабораторной работе № 2

Заполнить матрицу значениями функции :

F(x,y) = a*sin(Pi*x)*cos(Pi*y)

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

ЗАДАНИЯ НА МАТРИЦЫ

1. Определить произведение матриц А и В (матрицу А взять из табл. 1.6., матрицу B задать произвольно).

2. Транспонировать матрицы А и В.

3. Ввести матрицу Н (из табл. 1.6.). Вычислить определитель Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru и получить обратную матрицу Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru .

4. Ввести вектор V (из табл. 1.6.). Определить сумму элементов вектора, максимальный элемент в нём. Упорядочить его элементы по возрастанию. Создать на основе вектора V диагональную матрицу.

Таблица 1.6.

Вариант H А V
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

ЛАБОРАТОРНАЯ РАБОТА №3

Mетод Крамера

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Матричный метод

Решить СЛАУ методом матричным методом.

1. Проверка условия невырожденности матрицы A

1. Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

2. Определение вектора решения системы X

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Метод итерации

Информация к решению

Метод итерации относится к разряду приближённых.

Рекомендуется использовать специальный вычислительный блокMathCAD:

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Знак логического оператора «=» можно ввести в документ с панели инструментов Математика => палитры Операторы или с помощью сочетания клавиш Ctrl+ =.

В качестве начальных (нулевых) приближений для искомых неизвестных:

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

рекомендуется принимать соответствующие значения свободных членов Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Решить СЛАУ (8) методом итерации.

1. Задание начальных (нулевых) приближений для искомых неизвестных:

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

2. Нахождение решения системы (8)

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

10·x1–x2+10·x3=5

15·x1+20·x2+ x3=–10

–2·x1–10·x3=–1

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Задание к лабораторной работе № 3

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

Графические возможности MathCAD. Построение графиков функций.

Построение графика функции

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

Для примера построим график следующей функции:

Y=a*sin(x) если x<-1, Y=b*√│x│ если x>=-1

Для построения графика функции, имеющего разный функциональный вид для разных значений аргумента (это задача «Развилка») используется логическая функция

«=if(условие, значение истина, значение ложь)». Для данной функции формула принимает следующий вид:

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Задавая соответствующие значения ранжированной переменной и шаг

получим график функции:

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

При построении графика функции, имеющей три условия, применяется вложенная функция «if()». Например, при условии:

Y=a*sin(x) если x<-1

Y=b*√│x│ если -1<= x <0,5

Y= x если x>=0,5

функция следующая: Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Присвоим переменной x значение 7.8 м. В MathCAD символом присвоения служит « :=» вводимый с клавиатуры комбинацией клавиш «Shft+:». Замечательной свойством MathCAD является возможность применять размерности, вводимые после знака умножения «*» либо с помощью клавиатуры, либо с применением кнопки «Размерности» на панели инструментов.

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Введём начальное значение, конечное значение и шаг изменения L, с указанием размерности в градусах

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Определим ранжированную переменную L.

Ранжированная переменная – это переменная, которая принимает значения в диапазоне от начального значения до конечного с определённым шагом. Вводится сначала начальное значение, затем, через запятую, следующее значение равное начальному плюс шаг и далее через символ интервала «..» “ (клавиша «:») конечное значение.

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

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

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Для получения ответа в функцию подставляются фактические аргументы, символ «=»означает вывести результат вычислений.

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru . Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Примечание. В MathCAD регистр символов имеет значение. Переменные yZx и zyx- это различные переменные, то же самое касается имён

Задание на лабораторную работу №4

Построить графики функций способами, описанными в практической работе. Отчётом является лист Exel c графиками. Применённые формулы должны быть отображены в примечаниях к ячейкам.

1. Y = Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru ,при xÎ [0,1;1,8], Dx=0,1

2. Y = Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru,при xÎ[-1,7;1,3], Dx=0,3

  1. Y = Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru,при xÎ[-1,5;0,5], Dx=0,3

4. Y = Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru,при xÎ[-1,4;1,4], Dx=0,1

  1. G = Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru,при xÎ [-2;2], Dx=0,2
  1. G = Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru,при xÎ [-2;2], Dx=0,1

7. Z = Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru,при xÎ [-2;1,4], Dx=0,2

8. G = Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru,при xÎ [-1,5;1,5], Dx=0,1

9. Y = Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru,при xÎ [-1,5;1,5], Dx=0,1

10. Z = Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru,при xÎ [-1,8;1,8], Dx=0,1

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

Программирование в MATCAD. Работа с массивами.

Программирование в Mathcad

Программный модуль

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

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Формальными аргументами программируемой функции могут быть константы, переменные (в том числе и ранжированные), массивы и имена функций, используемых внутри программного блока.

Оператор присваивания

Оператор, обозначенный на панели инструментов Programming стрелкой ← , выполняет операцию присваивания. Переменной, стоящей слева от оператора, присваивается значение, указанное справа.

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

Условный оператор

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

Условный оператор имеет следующую структуру:

оператор if условие

где оператор – действие, которое выполняется в случае если условие истинно. Когда условие ложно, управление передается следующему за if оператору. Например, следующая функция возвращает абсолютное значение числа.

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Цикл с условием

Оператором While создается цикл, количество повторений которого неизвестно, но предусмотрен выход из него по некоторому логическому условию. Запись цикла имеет вид

While условие

оператор.

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

Например, найти сумму ряда Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

для x>1, суммировать пока очередной член ряда больше 0,001
Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Оператор прерывания

Если цикл надо завершить досрочно, применяется оператор break.

Следующая функция возвращает индекс последнего(первого с конца) элемента вектора отвечающему некоторому условию. Имя функции, проверяющей условие передаётся в качестве формального параметра. Проверка вектора начинается с последнего элемента до первого с отрицательным шагом.

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Задание к лабораторной работе № 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 }. Найти косинус угла между ними и количество элементов вектора равных нулю.

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

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

Построение диаграмм в Excel

Для создания диаграммы в Excel необходима таблица значений. Рассмотрим построение декартовых графиков функциональной зависимости y=f(x). Пусть имеется экспериментальные данные измерения пройденного пути в зависимости от времени. Заполнив ими два соседних столбца (или строки) на рабочем листе Excel, выделим их вместе с названиями, вызовем «Мастер диаграмм» (пункт меню «Вставка»à «Диаграмма»), и выберем тип диаграммы «Точечная».

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Тип графика «Точечный»

Тип «Точечная» берёт значения из одного столбца (самого левого при таком способе построения) и откладывает их по оси «х», а соответствующие им из других столбцов по оси «y». Частой ошибкой бывает выбор для подобного типа диаграмм пункта «График». Посмотрим, что произойдёт при таком выборе.

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru
Тип диаграммы «График»

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

Возможно построение нескольких графиков в одном окне диаграммы. Пусть надо добавить новый ряд данных по температуре. Щелкнув правой кнопкой мыши в окне диаграммы, выбираем в контекстном меню пункт «Исходные данные»,

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

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

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Так как данные в рядах «Путь» и «Температура» различаются на два порядка, вид графика для данных «Путь» мало показателен. В Excel существует возможность построить один из графиков во второй, вспомогательной оси. Для создания вспомогательной оси, надо щёлкнуть правой кнопкой по линии графика и, выделив её таким образом, в появившемся контекстном меню выбрать пункт «Формат рядов данных» и установить переключатель «по вспомогательной оси».

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

При построении графика функции заданной в аналитическом виде, например

y=a*sin(x-b), где x изменяется от -3 до 2 с шагом dx=0,25 a=2,4 b=0,3

таблицу значений можно построить следующим образом: в ячейку, например «D4», ввести начальное значение х то есть -3 , в ячейку «D5» ввести следующее значение ( для шага изменения по х равного 0,25 это будет -2,75 ), затем, выделив эти две ячейки, протянуть за правый нижний уголок , заполнив таким образом столбец значений по «x». Для значений «y» в ячейку «E4» вводим формулу «=$B$4*SIN(D4-$B$5)», где ««$B$4» и «$B$5» ссылки на ячейки со значениями «a» и «b» соответственно, эти адреса должны быть абсолютными, а «D4» - ссылка на ячейку со значениями «х», этот адрес должен быть относительным. Копируя методом протягивания ячейку «E4» вниз на нужное количество строк, получаем столбец значений «y». Затем строим график, выбирая тип «Точечный», и форматируем, задавая заголовки, линии сетки и т.п.

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

При построении и исследовании удобно применять имена диапазонов. Создадим таблицу входных значений для построения графика, где n – число точек. Выделив диапазон А4:В9 через пункты меню «Вставка»à «Имя» à «Создать» дадим имена соответствующим ячейкам. В ячейку для dx введем формулу «=(xk-xn)/n». В ячейке D4 напишем «=xn» а в ячейку ниже (D5) – «=D4+dx» и скопируем ячейку D5 методом протаскивания до ячейки с адресом D24, заполнив, таким образом, 20 ячеек значениями x.

Выделив диапазон D4:D24, присвоим ему имя x. Теперь, при написании формул можно использовать не адреса ячеек, а имена. Это дает более наглядное написание формул.

Напишем в ячейке E4 формулу «=a*sin(x-b)» и, скопировав ее методом протаскивания до ячейки E24, заполним значениями функции.

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

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

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

Для построения графика функции, имеющего разный функциональный вид для разных значений аргумента (это задача «Развилка») используется логическая функция «=ЕСЛИ(условие; значение истинно; значение ложь)». Для графика функции заданной условием Y=a*sin(x) если x<-1, Y=b*√│x│ если x>=-1 формула принимаем следующий вид

=ЕСЛИ(D4<-1;$B$4*SIN(D4);$B$5*КОРЕНЬ(ABS(D4)))

или при применении имен «=ЕСЛИ(X<-1;a*SIN(X);b*КОРЕНЬ(ABS(X)))»

Можно создать, а затем применить пользовательскую функцию, написанную в VBA, код которой для последней рассматриваемой задачи будет иметь вид:

Public Function Развилка(a, b, x) As Double

Dim y As Double

If x < -1 Then

y = a * Sin(x)

Else

y = b * Sqr(Abs(x))

End If

Развилка = y

End Function

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

Б1.В.ОД.6 «Программирование и программное обеспечение» - student2.ru

При построении графика функции, имеющей три условия, применяется вложенная развилка. Например, при условии:

Y=a*sin(x) если x<-1

Y=b*√│x│ если -1<= x <0,5

Y= x если x>=0,5

формула при применении адресов следующая:

=ЕСЛИ(D4<-1;$B$4*SIN(D4);ЕСЛИ(И(D4>-1;D4<=0,5);$B$5*КОРЕНЬ(ABS(D4));D4))

Здесь для условия -1<=x<0,5 применена логическая функция

И(логическое_значение1; логическое_значение2; ...)

возвращающая значение ИСТИНА, если все аргументы имеют значение ИСТИНА; значение ЛОЖЬ, если хотя бы один аргумент имеет значение ЛОЖЬ.

Задание к лабораторной работе № 6

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

Основы программирования в VBA.

Процедуры

Процедура— это именованный блок операторов VBA, расположенная в модуле

В VBA можно выполнить только тот программный код, который содержится в какой-либо процедуре. Вне процедуры, в начале модуля, могут располагаться только установка опций(например Option Explicit - требование обязательного объявления переменных) и объявление переменных и констант, общих для модуля или проекта.

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

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

· Детали вычислений заменяются в основной программе оператором вызова соответствующей процедуры пользователя

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

Свойства процедуры

· Каждая процедура имеет один вход. При вызове процедуры управление передается ее первой инструкции.

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

· После завершения процедуры управление всегда возвращается в вызывающую процедуру на инструкцию, следующую непосредственно за вызовом процедуры.

В VBA предусмотрены следующие типы процедур:

• процедура типа Sub(подпрограмма)— универсальная процедура для выполнения каких-либо действий, типа ввода данных(например массива), вывода, изменения элементов массива и т.п..

Синтаксис инструкции Sub

[Private | Public] Sub имяПроцедуры ([списокАргументов])

[инструкции]

[Exit Sub]

[инструкции]

End Sub

процедура типа Function(функция) — набор инструкций для вычисления сложного выражения.

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

Синтаксис инструкции Function

[Private | Public] Function имяФункции ([список_Аргументов]) [As тип]

[инструкции]

[имяФункции =выражение]

[Exit Function]

[инструкции]

[имяФункции = выражение]

End Function

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

Постановка задачи следующая:

Заполнить вектор (одномерный массив) B кубическими корнями элементов вектора А. размерность векторов, разумеется, одинаковые.

Private Sub main() 'Главная процедура

Dim A() As Double, B() As Double, n As Integer, i As Double

n = InputBox("Введи размер вктора")

ReDim A(1 To n)

ReDim B(1 To n)

ВводВектКлав A, n

ПечатВект A, n

ЗаполнВект B, A, n

ПечатВект B, n

End Sub

Private Sub ЗаполнВект(вект1, вект2, размер)

Dim i As Integer

For i = 1 To размер

вект1(i) = фунКубКорень(вект2(i))

Next

End Sub

Public Sub ВводВектКлав(вектор, размер As Integer)

Dim i As Integer

For i = 1 To размер

вектор(i) = InputBox("Введи элемент №" & i)

Next

End Sub

Public Sub ПечатВект(вектор, размер As Integer)

Dim i As Integer

Debug.Print

For i = 1 To размер

Debug.Print вектор(i),

Next

Debug.Print

End SubPublic Sub ЗаполнВект(вект1, вект2, размер)

Dim i As Integer

For i = 1 To размер

вект1(i) = фунКубКорень(вект2(i))

Next

End Sub

Public Function фунКубКорень(x)

If x >= 0 Then фунКубКорень = x ^ (1 / 3): Exit Function

If x < 0 Then фунКубКорень = -Abs(x) ^ (1 / 3)

End Function

В главной (основной) процедуре main объявляются два вещественных вектора A и B, а так же размерность векторов n.

Размер вектора n вводится с клавиатуры, а затем вызывается процедура пользователя ВводВектКлав с фактическими параметрами: имя вектора А размерностью n. Вызванная процедура заполняет вектор числами, введенными с клавиатуры, и возвращает управление в основную процедуру. Затем вызывается процедура ПечатВект с фактическими параметрами А и n. После печати вектора А вызывается процедура заполнения, куда передаются: вектор В для заполнения, вектор А и их размерность.

Так как в VBA не существует функции кубического корня, то

Наши рекомендации