0 / 0 / 0
Регистрация: 29.11.2023
Сообщений: 32
|
||||||
Возведение матрицы в степень29.03.2024, 10:07. Показов 999. Ответов 7
Возведение матрицы в степень.
0
|
29.03.2024, 10:07 | |
Ответы с готовыми решениями:
7
Возведение матрицы в степень. Возведение в степень
|
Модератор
10228 / 5516 / 3372
Регистрация: 17.08.2012
Сообщений: 16,868
|
|
29.03.2024, 11:32 | |
Но это не совсем процедура перемножения. Матрица b непонятно зачем транспонируется.
Плюс к этому, использование глобальных переменных (в данном случае матриц) - это, мягко говоря, очень плохой стиль программирования. От этого возникают трудно локализуемые ошибки из-за перекрытия областей видимости глобальных и локальных переменных. Плюс к этому, возвести матрицу в мало-мальски большую степень не получится: матрицы целочисленные, и поэтому, скорее всего, результат перемножения будет неверным из-за целочисленного переполнения. Чтобы не пришлось делать лишней работы, пожалуйста, напишите задание в том виде, в котором Вам его выдали.
0
|
Модератор
![]() ![]() ![]() |
|
29.03.2024, 18:32 | |
0
|
0 / 0 / 0
Регистрация: 29.11.2023
Сообщений: 32
|
|||||||||
29.03.2024, 22:20 [ТС] | |||||||||
Добавлено через 2 минуты Добавлено через 32 секунды
0
|
Модератор
10228 / 5516 / 3372
Регистрация: 17.08.2012
Сообщений: 16,868
|
|||||||||
30.03.2024, 12:13 | |||||||||
Пусть показатель степени есть натуральное число N. Переведём N в двоичную систему счисления (разложим его на сумму степеней числа 2): где 2t - это степени числа 2 (1, 2, 4, 8, 16 и так далее. Не благодарите, всегда Ваш Captain Obvious). Число p на единицу меньше количества значащих двоичных разрядов числа N, а kt есть веса двоичных разрядов, и равны 0 или 1, поскольку СС двоичная. Тогда Это и есть формула быстрого возведения в степень. При обычном возведении в степень требуется N-1 умножений, при быстром - максимум 2(log2(n))+1 умножений. Например: если N=1000, то понадобится всего 15 умножений вместо 999, поскольку 100010=11111010002. Заметим, что Обратите внимание на правые части равенств. Видно, что каждое следующее X2t равно квадрату предыдущего. Вот и алгоритм нарисовался. Перевод N в двоичную СС можно производить "на лету": если текущее N нечётное, то младший разряд N равен 1, что означает, что kt=1, если число чётное - то kt=0. После делим N нацело на 2, в результате чего младшим станет следующий разряд, и далее по этому новому N можно будет определить kt+1. Алгоритм:
Tenmaa, В той темпе, откуда Вы взяли код, я накосячил, а вслед за мной - и bormant тоже. bormant, дружище, дико извиняюсь. Позже отпишусь в ту тему. Правильно будет, например, так (минимальная тестовая программа):
1
|
0 / 0 / 0
Регистрация: 29.11.2023
Сообщений: 32
|
|||||||
31.03.2024, 14:12 [ТС] | |||||||
0
|
Модератор
![]() ![]() ![]() |
||||||
31.03.2024, 17:53 | ||||||
Tenmaa,
Чтобы в приведенном варианте вычислений от транспонирования был толк, а не одни только тормоза, должно было быть что-то такое:
1
|
Модератор
![]() ![]() ![]() |
||||||
04.04.2024, 16:51 | ||||||
Если правильно путаю, использование транспонированного множителя для быстрого возведения в степень могло быть таким:
Добавлено через 1 минуту Стоило ли разворачивать циклы (to -> downto) вопрос открытый, стоило бы проверить (не в PascalABC)...
0
|
04.04.2024, 16:51 | |
Помогаю со студенческими работами здесь
8
Возведение в степень Возведение в степень tg
Возведение в степень Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
![]() |
||||
Квантовые алгоритмы и обработка строк в Q#
EggHead 07.06.2025
Квантовые вычисления перевернули наше представление о том, как работать с данными, а Q# стал одним из ключевых языков для разработки квантовых алгоритмов. В традиционых системах мы оперируем битами —. . .
|
NUnit и C#
UnmanagedCoder 07.06.2025
В . NET существует несколько фреймворков для тестирования: MSTest (встроенный в Visual Studio), xUnit. net (более новый фреймворк) и, собственно, NUnit. Каждый имеет свои преимущества, но NUnit. . .
|
с++ Что нового?
russiannick 06.06.2025
Продолжаю обзор dev-cpp5. 11. Посмотрев на проекты, предоставленные нам для обучения, становится видно, что они разные по содержащимся файлам
где:
. dev обязательно присутствует
. cpp/ . c один из них. . .
|
WebAssembly в Kubernetes
Mr. Docker 06.06.2025
WebAssembly изначально разрабатывался как бинарный формат инструкций для виртуальной машины, обеспечивающий высокую производительность в браузерах. Но потенциал технологии оказался гораздо шире - она. . .
|
Как создать первый микросервис на C# с ASP.NET Core, step by step
stackOverflow 06.06.2025
Если говорить простыми словами, микросервисная архитектура — это подход к разработке, при котором приложение строится как набор небольших, слабо связанных сервисов, каждый из которых отвечает за. . .
|
Рисование коллайдеров Box2D v2 на Three.js с помощью порта @box2d/core
8Observer8 06.06.2025
Используется порт Box2D v2 под названием @box2d/ core - пакет NPM. Загрузил документацию Box2D v2 на Netlify: https:/ / box2d-v2-docs. netlify. app/ Документацию Box2D v2 можно скачать с официального. . .
|
Как создать стек в Python
AI_Generated 05.06.2025
Как архитектор с более чем десятилетним опытом работы с Python, я неоднократно убеждался, что знание низкоуровневых механизмов работы стеков дает конкурентное преимущество при решении сложных задач. . . .
|
Server-Sent Events (SSE) в Node.js
run.dev 05.06.2025
Потоковая передача данных с сервера прямо в браузер стала повседневной потребностью - от биржевых графиков и спортивных трансляций до чатов и умных дашбордов. Много лет разработчики полагались на. . .
|
Создаем RESTful API на Golang с Fiber
golander 04.06.2025
Я перепробовал десятки фреймворков для создания RESTful API за последние годы, и когда впервые столкнулся с Fiber, понял, что это совсем другой уровень. Нет, я не собираюсь рассказывать сказки о. . .
|
Как работать с куки в ASP.NET Core
UnmanagedCoder 04.06.2025
Когда я впервые начал работать с куки в ASP. NET Core, меня поразило, насколько отличается работа с ними от классического ASP. NET. В Core все стало более декомпозированным - больше нет удобного. . .
|