Вы находитесь на странице: 1из 13

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ


ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ им. Р.Е. АЛЕКСЕЕВА»

Кафедра «Электроэнергетика, электроснабжение и силовая электроника»

СЛОЖЕНИЕ, ВЫЧИТАНИЕ, УМНОЖЕНИЕ МАТРИЦ


СРЕДСТВАМИ VBA В MICROSOFT OFFICE EXCEL
Методические указания к практической работе
по курсу «Оптимизация в ЭЭС»
для студентов по направлению
13.03.02 Электроэнергетика и электротехника.
Профиль подготовки «Электроснабжение и релейная защита»,
«Электроэнергетические системы, сети электропередачи, их режимы,
устойчивость и надежность»

Нижний Новгород
2020
Составители:

УДК 621.311.1

Сложение, вычитание, умножение матриц средствами VBA в Microsoft


Office Excel: методические указания к практической работе по курсу
«Оптимизация в ЭЭС» для студентов по направлению 13.03.02
Электроэнергетика и электротехника. Профиль подготовки
«Электроснабжение и релейная защита», «Электроэнергетические
системы, сети электропередачи, их режимы, устойчивость и надежность» /
НГТУ им. Р.Е. Алексеева; сост.: - Н.Новгород, 2020. – 12 с.

Научный редактор

Редактор

Подписано в печать 2020. Формат 60х84/16. Печать офсетная.


Бумага газетная. Усл. печ. л. 1,5. Тираж 250 экз. Заказ
________________________________________________________________
Нижегородский государственный технический университет им. Р.Е. Алексеева.
Типография НГТУ, 603950, г. Нижний Новгород, ул. Минина, 24.

© Нижегородский государственный
технический университет им.
Р.Е. Алексеева, 2020
©, 2020

2
СОДЕРЖАНИЕ

Цель...............................................................................................................................4
Задание..........................................................................................................................4
Порядок выполнения, примеры.................................................................................4
1. Линейные матричные операции.........................................................................4
2. Выполнение макросов средствами VBA............................................................6
2.1. Макрос, выполняющий операцию ввода информации о матрицах.......7
2.2. Макрос, определяющий границы ввода данных.....................................7
2.3. Макрос, выполняющий операцию сложения матриц.............................8
2.4. Макрос, выполняющий операцию вычитания матриц...........................8
2.5. Макрос, выполняющий операцию умножения матриц..........................9
2.6. Макрос, выполняющий операцию очистки листа Excel.........................9
Содержание отчета....................................................................................................10
Контрольные вопросы...............................................................................................11
Библиографический список......................................................................................12

3
Цель
Целью работы является повторение основных операций над
матрицами, построение макроса, позволяющего выполнять сложения,
умножения, вычитания матриц средствами VBA в MS Office Excel.
Задание
Составить макрос для ввода данных строк и столбцов, макросы
сложения, вычитания и умножения матриц.
Порядок выполнения, примеры
1. Линейные матричные операции
Матрицей размерности m ∙ n называется прямоугольная таблица 
m ∙ n чисел aij, i = 1, ... , m, j = 1, ... , n, расположенных в m строках
и n столбцах. Матрица называется квадратной, если m =
n (n - порядок матрицы).

 a11 a12 ... a1n 


 
a a22 ... a2 n 
A   21
 ... ... ... ... 
 
 am1 am 2 ... amn 

По определению, чтобы умножить матрицу на число, нужно


умножить на это число все элементы матрицы. Суммой (разностью) двух
матриц одинаковой размерности, называется матрица той же размерности,
каждый элемент которой равен сумме (разности) соответствующих
элементов слагаемых.
Произведение матриц определяется следующим образом. Пусть
заданы две матрицы A и B, причем число столбцов первой из них равно
числу строк второй. Если:

 a11 a12 ... a1n   b11 b12 ... b1k 


   
a a22 ... a2 n  b b22 ... b2 k 
A   21 B   21
 ... ... ... ...   ... ... ... ... 
   
 am1 am 2 ... amn   bn1 bn 2 ... ank 
,
то произведением матриц A и B, называется матрица элементы
которой вычисляются по формуле:
c  ij =a  i1 b  1j + a  i2 b  2j + ... +a  in b  nj , i = 1, ..., m, j=1, ..., k.

4
 c11 ... c1k 
 
c ... c2 k 
C   21
 ... ... ... 
 
 cm1 ... cmk 
.
Произведение матриц зависит от порядка сомножителей. Если
AB=BA, то матрицы A и B называются перестановочными.
  Для квадратных матриц определена единичная матрица - квадратная
матрица, все диагональные элементы которой единицы, а остальные -
нули:
1 0 ... 0 
0 1 ... 0 
C 
 ... ... ... ... 
 
0 0 ... 1  .

Единичная матрица чаще всего обозначается буквой E или En, где n -


порядок матрицы. Непосредственным вычислением проверяется
основное свойство единичной матрицы:
AE=EA=A.
Скалярной матрицей называется диагональная матрица с
одинаковыми числами на главной диагонали; единичная матрица -
частный случай скалярной матрицы.
Для квадратных матриц определена операция возведения в целую
неотрицательную степень:
A  0 = E, A  1 =A, A 2 =AA, ..., A  n =A  n-1 A, ....
Для прямоугольных матриц определена операция транспонирования.
Рассмотрим произвольную прямоугольную матрицу A. Матрица,
получающаяся из матрицы A заменой строк столбцами,
называется транспонированной по отношению к матрице и
 T
обозначается A :
 a11 a12 ... a1n   a11 a12 ... am1 
   
a a22 ... a2 n  a a22 ... am 2 
A   21 A   21
T
 ... ... ... ...   ... ... ... ... 
   
 am1 am 2 ... amn   a1n a2 n ... amn 

Верны соотношения:
(AT )T = A;

5
(A+B)T=AT + BT ;
(AB)T =BT AT.
Квадратная матрица A, для которой A  T =A,
называется симметричной. Элементы такой матрицы, расположенные
симметрично относительно главной диагонали, равны.
Квадратная матрица A называется обратимой, если существует такая
матрица X, что AX = XA = E. 
Матрица X называется обратной к матрице A и обозначается A  -1:
A A  -1 = A  -1A = E.
Если матрица A невырождена (т.е. ее определитель отличен от нуля),
то у нее существует обратная матрица A  -1.
Верно соотношение: (A-1)T =(AT)  -1.
Квадратная матрица U, для которой U-1= UT, называется
ортогональной матрицей.
Свойства ортогональной матрицы:
1) Модуль определителя ортогональной матрицы равен единице.
2) Сумма квадратов элементов любого столбца ортогональной
матрицы равна единице.
3) Сумма произведений элементов любого столбца ортогональной
матрицы на соответствующие элементы другого столбца равна
нулю. Такими же свойствами обладают строки ортогональной
матрицы.
2. Выполнение макросов средствами VBA
В ходе работы были использованы элементы управления формы-
кнопка. Выбор этого элемента происходит следующим образом:
На панели разработчика необходимо нажать кнопку «Вставить»,
после чего выбрать элемент «Кнопка». Этот элемент размещается там, где
необходимо, предварительно изменяя его геометрические размеры до
необходимых, также задается его имя (см. Рис. 2.1).

6
Рис. 2.1. Выполнение элемента «Кнопка»
Щелкнув правой кнопкой по «Кнопке 7», появится выпадающие
меню, в котором выбирается команда «Назначить макрос». После нажатия
на команду «Назначить макрос», появится окно, где будет необходимо
задать имя макроса и написать его вновь самому или выбрать из уже
написанных макросов, которым будет управлять «Кнопка 7».

Рис. 2.2. Выполнение макроса

2.1. Макрос, выполняющий операцию ввода информации о


матрицах
Sub Упр_Матр()
Cells(2, 1).Value = "Матрица1"
Cells(3, 1).Value = "Матрица1"
Cells(1, 2).Value = "Строки"
Cells(1, 3).Value = "Столбцы"
Cells(2, 2).Value = Val(InputBox("Введите количество строк матрицы1",
"количество строк")) 'Строки Матрицы1
Cells(3, 2).Value = Val(InputBox("Введите количество строк матрицы2",
"количество строк")) 'Столбцы Матрицы1
Cells(2, 3).Value = Val(InputBox("Введите количество столбцов матрицы1",
"количество столбцов")) 'Строки Матрицы2
Cells(3, 3).Value = Val(InputBox("Введите количество столбцов матрицы2",
"количество столбцов"))
7
Call Матрицы
MsgBox "Введите в закрашенные поля данные, соответствующие
Матрицам 1 и 2", vbOKOnly
End Sub
2.2. Макрос, определяющий границы ввода данных
Option Explicit
Public Sub Матрицы()
Dim i, j, k, g, n1, n2, n3, n4 as Double
n1 = Cells(2, 2) 'Строки Матрицы1
n2 = Cells(3, 2) 'Столбцы Матрицы1
n3 = Cells(2, 3) 'Строки Матрицы2
n4 = Cells(3, 3) 'Столбцы Матрицы2
For i = 1 to n1 Step 1
For j = 1 to n2 Step 1
Cells(i + 3, j).Interior.ColorIndex = 6
Next j
Next i
For k = 1 to n3 Step 1
For g = 1 to n4 Step 1
Cells(k + n1 + 3, g).Interior.ColorIndex = 8
Next g
Next k
End Sub
2.3. Макрос, выполняющий операцию сложения матриц
Option Explicit
Public Sub Сложение()
Dim i, j, k, g, n1, n2, n3, n4 as Double
n1 = Cells(2, 2) 'Строки Матрицы1
n2 = Cells(3, 2) 'Столбцы Матрицы1
n3 = Cells(2, 3) 'Строки Матрицы2
n4 = Cells(3, 3) 'Столбцы Матрицы2
If (n1 = n3) and (n2 = n4) Then
For i = 1 to n1 Step 1
For j = 1 to n2 Step 1
Cells(i + n3 + n2 + 3, j) = Cells(i + 3, j) + Cells(i + n1 + 3, j)
Cells(i + n3 + n2 + 3, j).Interior.ColorIndex = 24
Next j
Next i
Else

8
MsgBox "Расчет не возможнет. Не совпадение строк и столбцов у
складываемых матриц", vbOKOnly
End If
End Sub
2.4. Макрос, выполняющий операцию вычитания матриц
Sub Вычитание()
Dim i, j, k, g, n1, n2, n3, n4 As Double
n1 = Cells(2, 2) 'Строки Матрицы1
n2 = Cells(3, 2) 'Столбцы Матрицы1
n3 = Cells(2, 3) 'Строки Матрицы2
n4 = Cells(3, 3) 'Столбцы Матрицы2
If (n1 = n3) and (n2 = n4) Then
For i = 1 to n1 Step 1
For j = 1 to n2 Step 1
Cells(i + 3 * n1 + 3, j) = Cells(i + 3, j) - Cells(i + n1 + 3, j)
Cells(i + 3 * n1 + 3, j).Interior.ColorIndex = 29
Next j
Next i
Else
MsgBox "Расчет невозможен", vbOKOnly
End If
End Sub
2.5. Макрос, выполняющий операцию умножения матриц
Sub Умножение()
Dim i, j, k, g, n1, n2, n3, n4, m as Double
n1 = Cells(2, 2) 'Строки Матрицы1
n2 = Cells(3, 2) 'Столбцы Матрицы1
n3 = Cells(2, 3) 'Строки Матрицы2
n4 = Cells(3, 3) 'Столбцы Матрицы2
m=1
If n2 = n3 Then
For i = 1 To n1 Step 1
k=0
For m = 1 To n4 Step 1
Cells(i + 3 + 4 * n1, m) = 0
For j = 1 To n2 Step 1
k = Cells(i + 3, j) * Cells(j + n1 + 3, m)
Cells(i + 3 + 4 * n1, m) = Cells(i + 3 + 4 * n1, m) + k
Cells(i + 3 + 4 * n1, m).Interior.ColorIndex = 4
Next j
Next m
9
Next i
Else
MsgBox "Расчет невозможен", vbOKOnly
End If
End Sub
2.6. Макрос, выполняющий операцию очистки листа Excel
Dim i, j, k, g, n1, n2, n3, n4 as Double
n1 = Cells(2, 2) 'Строки Матрицы1
n2 = Cells(3, 2) 'Столбцы Матрицы1
n3 = Cells(2, 3) 'Строки Матрицы2
n4 = Cells(3, 3) 'Столбцы Матрицы2
For i = 1 To n1 Step 1
For j = 1 To n2 Step 1
Cells(i + 3, j) = ""
Cells(i + 3, j).Interior.ColorIndex = 0
Next j
Next i
For k = 1 To n3 Step 1
For g = 1 To n4 Step 1
Cells(k + n1 + 3, g) = ""
Cells(k + n1 + 3, g).Interior.ColorIndex = 0
Next g
Next k
For i = 1 To n1 Step 1
For j = 1 To n2 Step 1
Cells(i + n3 + n2 + 3, j) = ""
Cells(i + n3 + n2 + 3, j).Interior.ColorIndex = 0
Cells(i + 3 * n1 + 3, j) = ""
Cells(i + 3 * n1 + 3, j).Interior.ColorIndex = 0
Next j
Next i
For i = 1 To n1 Step 1
For m = 1 To n4 Step 1
Cells(i + 3 + 4 * n1, m) = " "
Cells(i + 3 + 4 * n1, m).Interior.ColorIndex = 0
Next m
Next i
Cells(2, 1).Value = ""
Cells(3, 1).Value = ""
Cells(1, 2).Value = ""
Cells(1, 3).Value = ""

10
Cells(2, 2).Value = ""
Cells(3, 2).Value = ""
Cells(2, 3).Value = ""
Cells(3, 3).Value = ""
Содержание отчета
Отчет должен содержать титульный лист, цель работы, методику
выполнения операций над матрицами, код макроса, выводы по работе; к
отчёту должен быть приложен файл MS Office Excel с выполненными
макросами.

11
Контрольные вопросы
1. Какие существуют операции над матрицами. 
2. Дать определение скалярной матрицы.
3. Транспонирование матриц.
4. Какая матрица является обратимой?
5. Возведение матрицы в степень.
6. Дать определение ортогональной матрицы.
7. Какие существуют свойства ортогональной матрицы?
8. Невырожденная и вырожденная матрицы.
9. Умножение матриц на число, произведение матриц.?
10. Дать определение несимметричной матрицы.

12
Библиографический список

1. Идельчик В.И. Расчеты и оптимизация режимов электрических сетей.


1988 г.
2. Идельчик В.И. электрические системы и сети: Учебник для вузов. -М.:
Энергоатомиздпт, 1989. - 592 с.: ил.
3. Турчак Л.И., Плотников П.В. Основы численных методов: Учебное
пособие. -2-е изд., перераб. и доп.-М.: ФИЗМАТЛИТ, 2003. -304 с.-ISBN5-
9221-0153-6.

13