Лидеры рейтинга

ID: 226425

Konstantin Shvetski

Модератор

768

Россия, Северодвинск


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

343

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Академик

278

Россия, Санкт-Петербург


ID: 325460

CradleA

Мастер-Эксперт

209

Беларусь, Минск


ID: 137394

Megaloman

Мастер-Эксперт

158

Беларусь, Гомель


ID: 400815

alexleonsm

6-й класс

130


ID: 400669

epimkin

Профессионал

120


8.8.15

09.05.2021

JS: 2.8.21
CSS: 4.5.5
jQuery: 3.6.0
DataForLocalStorage: 2021-05-15 03:46:17-standard


Установка, настройка и работа в пакете Microsoft Office.

Администратор раздела: Megaloman (Мастер-Эксперт)

Консультация онлайн # 200411

Раздел: Пакет MSOffice
Автор вопроса: 23071996 (Посетитель)
Дата: 13.03.2021, 18:21 Консультация закрыта
Поступило ответов: 1

Прошу помощи в данном вопросе, заранее извините что не пишу в виде формул (пытался, не получается)
Заранее спасибо

Ответ # 280818 от Megaloman
Здравствуйте, 23071996!
Вот первый способ:
Задача решена без привлечения макроса. Файл ya210313.xlsx (14.0 кб)
Получение размерности матрицы и её генерация осуществляется по клавише F9 (пересчет листа). Результат на экране:


Второй способ:
Задача решена посредством макроса. Файл ya210313.xlsm (25.4 кб)
Тут я был на распутье: то ли использовать стандартную функцию листа для перемножения матриц, то ли написать свою. Выбрал второй вариант. Определители считаются стандартной функцией листа: написать свою функцию вычисления определителя слишком трудоемко.
Код
Sub rrr()

Const Nmin = 7          ' Минимальная размерность матриц
Const Nmax = 15         ' Максимальная размерность матриц
Const R1A = "C6"        ' Адрес ячейки с элементом A11
Const R1B = "T6"        ' Адрес ячейки с элементом B11
Const RN = "B3"         ' Адрес ячейки для отображения размерности матрицы N
Const RDA = "H3"        ' Адрес ячейки для отображения определителя ||A||
Const RDB = "X3"        ' Адрес ячейки для отображения определителя ||B||

Dim N, i, j, k
Dim RRA, RRB

Randomize
N = Int((Nmax - Nmin + 1) * Rnd + Nmin)     ' Определение размерности матрицы случайным образом

RRA = R1A + ":" + Range(R1A).Offset(N - 1, N - 1).Address
RRB = R1B + ":" + Range(R1B).Offset(N - 1, N - 1).Address

ReDim A(1 To N, 1 To N)
ReDim B(1 To N, 1 To N)

For i = 1 To N              ' Заполнение матрицы A
    k = 1
    For j = 1 To N
        If j < i Then
            A(i, j) = 0
        Else
            k = k + 1
            A(i, j) = k
        End If
    Next
Next

Call Matrix(A, A, B, N)
Call Matrix(B, A, B, N)
Call Matrix(B, A, B, N)

Range(R1A + ":" + Range(R1A).Offset(Nmax - 1, Nmax - 1).Address).ClearContents
Range(R1B + ":" + Range(R1B).Offset(Nmax - 1, Nmax - 1).Address).ClearContents

Range(RN) = N
Range(RRA) = A
Range(RRB) = B
Range(RDA) = Application.WorksheetFunction.MDeterm(A)
Range(RDB) = Application.WorksheetFunction.MDeterm(B)

End Sub

Sub Matrix(M1, M2, M12, N)      ' Процедура перемножения квадратных матриц.
    ReDim TMP(1 To N, 1 To N)
    Dim i, j, k
    For i = 1 To N
        For j = 1 To N
            TMP(i, j) = 0
            For k = 1 To N
                TMP(i, j) = TMP(i, j) + M1(i, k) * M2(k, j)
            Next
        Next
    Next
    
    For i = 1 To N
        For j = 1 To N
            M12(i, j) = TMP(i, j)
        Next
    Next
End Sub
Результат сюда не вывожу. Я использовал в этой книге форматирование из первого способа+добавил кнопочку для запуска макроса, так что вид результата отличается очень мало. Однако этот макрос можно запустить на любом рабочем листе, при этом форматирование для удобочитаемости ответа ляжет на Вас: задача форматирования результатов макросом не ставилась.

Megaloman

Мастер-Эксперт
14.03.2021, 14:33
5
Мини-форум консультации # 200411

q_id

Megaloman

Мастер-Эксперт

ID: 137394

1

= общий =    13.03.2021, 20:05
23071996:

Объясните, что Вам нужно: написать макрос?
B=A4=A*A*A*A; ?
||A|| и ||B|| - определители? Методика вычисления как-то определена?

Последнее редактирование 13.03.2021, 20:10 Megaloman (Мастер-Эксперт)

=====
Нет времени на медленные танцы

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

Лучшие эксперты раздела

CradleA

Мастер-Эксперт

Рейтинг: 209

Megaloman

Мастер-Эксперт

Рейтинг: 158

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 74

solowey

Профессор

Рейтинг: 21

SFResid

Мастер-Эксперт

Рейтинг: 2

Степанов Иван /REDDS

4-й класс

Рейтинг: 1