Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
1 / 1 / 0
Регистрация: 12.05.2011
Сообщений: 9
1

Произведение матриц?

27.05.2011, 10:42. Показов 5224. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Кто помнит хорошо матрицы из VBA, помогите исправить алгоритм.
Задание:
1. Составить программу для ввода двух матриц A kxm и B mxn. Вычислить матрицу C kxn как произведение двух матриц A и B. C=AxB.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
Sub porizvedenie_matrix()
Dim n As Integer, m As Integer, k As Integer, S As Double
Dim i As Integer, j As Integer, z As Integer
k = InputBox("k=" & Str(k))
m = InputBox("m=" & Str(m))
n = InputBox("n=" & Str(n))
ReDim A(k, m) As Integer
ReDim B(m, n) As Integer
ReDim C(k, n) As Integer
'Vvod matrix
'Matrix A  kxm
For i = 1 To k
    For j = 1 To m
        A(i, j) = InputBox("A(" & Str(k) & "," & Str(m) & ")")
    Next j
Next i
For i = 1 To k
    For j = 1 To m
    Cells(1, 1).Value = A(k, m)
    Next j
Next i
'Matrix B  mxn
For i = 1 To m
    For j = 1 To n
        B(10, 10) = InputBox("B(" & Str(m) & "," & Str(n) & ")")
    Next j
Next i
'Proizved A*B=C
For i = 1 To k
    For j = 1 To n
        S = 0
        For z = 1 To m
        S = S + A(i, z) * B(z, j)
        Next z
        S = C(k, n)
    Next j
Next i
MsgBox ("C=" & Str(C(k, n)))
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2011, 10:42
Ответы с готовыми решениями:

Написать программу проверки - является ли произведение этих матриц перестановочным
Заданы две матрицы A(3,3) и B(3,3). Написать программу проверки - является ли произведение этих...

Произведение матриц?
Кто помнит хорошо матрицы из VBA, помогите исправить алгоритм. Задание: 1. Составить программу...

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

Используя функцию произведения двух матриц, найдите произведение трех матриц А(3,4) В(4,3) С(3,3)
Используя функцию произведения двух матриц, найдите произведение трех матриц А(3,4) В(4,3) С(3,3).

2
Заблокирован
27.05.2011, 12:25 2
Код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub P1()
'Чтобы матрицы можно было перемножить, нужно, чтобы количество
'столбцов одной матрицы совпадало с количеством строк другой матрицы.
Dim Матрица1(1 To 3, 1 To 5) As Double
Dim Матрица2(1 To 5, 1 To 4) As Double
'Результатом умножения двух матриц будет новая матрица.
Dim Матрица3(1 To 3, 1 To 4) As Double
Dim i As Long, j As Long, k As Long
Dim Сумма As Double
'Заполняем матрицы из разных листов Excel (чтобы было удобнее)
'числами (ну чтобы было с чем работать).
For i = 1 To 3 Step 1
    For j = 1 To 5 Step 1
        Матрица1(i, j) = Worksheets(1).Cells(i, j).Value
    Next j
Next i
For i = 1 To 5 Step 1
    For j = 1 To 4 Step 1
        Матрица2(i, j) = Worksheets(2).Cells(i, j).Value
    Next j
Next i
'Собственно решение задачи.
'Каждая строка первой матрицы умножается на каждый столбец второй матрицы.
For i = 1 To 3 Step 1
    For j = 1 To 4 Step 1
        For k = 1 To 5 Step 1
            Сумма = Сумма + Матрица1(i, k) * Матрица2(k, j)
        Next k
        Матрица3(i, j) = Сумма
        Сумма = 0
    Next j
Next i
'Выводим полученный массив, представляющий собой произведение двух массивов,
'в Excel на третий лист.
For i = 1 To 3 Step 1
    For j = 1 To 4 Step 1
        Worksheets(3).Cells(i, j).Value = Матрица3(i, j)
    Next j
Next i
End Sub
1
1 / 1 / 0
Регистрация: 12.05.2011
Сообщений: 9
29.05.2011, 16:59  [ТС] 3
Что-то я совсем помоему тормоз... с цифрами-то все рабготает, но у меня то размерности k x m и m x n (общий вид), как мне их подставить?

Добавлено через 1 час 7 минут
Догадался, спасибо, тему можно закрыть, кому надо, вот так сойти может:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Option Explicit
 
Sub porizvedenie_matrix()
Dim n As Integer, m As Integer, k As Integer, S As Double
Dim i As Integer, j As Integer, z As Integer
Dim Proizvedenie As Double
k = InputBox("k=")
m = InputBox("m=")
n = InputBox("n=")
ReDim A(1 To k, 1 To m) As Integer
ReDim B(1 To m, 1 To n) As Integer
ReDim C(1 To k, 1 To n) As Integer
MsgBox ("Vvod matix A & B")
MsgBox ("Matrix A k x m")
For i = 1 To k
    For j = 1 To m
        A(i, j) = InputBox("A(" & Str(i) & "," & Str(j) & ")")
    Next j
Next i
For i = 1 To k
    For j = 1 To m
    Worksheets(1).Cells(i, j).Value = A(i, j)
    Next j
Next i
MsgBox ("Matrix B m x n")
For i = 1 To m
    For j = 1 To n
        B(i, j) = InputBox("B(" & Str(i) & "," & Str(j) & ")")
    Next j
Next i
For i = 1 To m
    For j = 1 To n
    Worksheets(2).Cells(i, j).Value = B(i, j)
    Next j
Next i
MsgBox ("Proizvedenie matix A x B = C")
For i = 1 To k
    For j = 1 To n
        For z = 1 To m
            Proizvedenie = Proizvedenie + A(i, z) * B(z, j)
        Next z
        C(i, j) = Proizvedenie
    Next j
Next i
'Matrix C
For i = 1 To 2
    For j = 1 To 3
        Worksheets(3).Cells(i, j).Value = C(i, j)
    Next j
Next i
End Sub
0
29.05.2011, 16:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2011, 16:59
Помогаю со студенческими работами здесь

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

Транспонирование матриц. Произведение транспонированных матриц
Найти матрицу С: C=ATBTB; A=\begin{bmatrix}1\\ 1\\ 1\end{bmatrix} B=\begin{bmatrix}1 &...

Произведение матриц
Найти произведение матриц. Вывести матрицу. Если кому не сложно, помогите с решением.

Произведение матриц
Всем привет. Пожалуйста подскажите, в чем ошибка? #include <iostream> using namespace std; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru