Главная       Скачать       Коммерческая поддержка       FAQ       Forum       О нас       Английская версия

Генерация случайных матриц с заданными свойствами

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

Содержание

    1 Генерация случайных ортогональных матриц
    2 Умножение на случайную ортогональную матрицу
    3 Симметричное/Эрмитово умножение на случайную ортогональную матрицу
    4 Генерация матрицы с заданным числом обусловленности и требуемыми свойствами
    5 Manual entries

Генерация случайных ортогональных матриц

Эта задача решается с использованием функций rmatrixrndorthogonal и cmatrixrndorthogonal. Результатом работы является случайная вещественная, либо комплексная матрица, равномерно распределенная по Хаару. Эти функции умеренно устойчивы, в том числе и при использовании на больших матрицах, однако ортогональность матриц в пределах машинной точность не гарантируется (возможна умеренная потеря точности). Также следует отметить, что генерация ортогональной матрицы - сложный процесс, трудоемкость которого равна O(N 3). Технически генерация ортогональной матрицы реализована через умножение единичной матрицы на случайную ортогональную матрицу (см. следующий раздел).

Умножение на случайную ортогональную матрицу

Функции rmatrixrndorthogonalfromtheleft, rmatrixrndorthogonalfromtheright, cmatrixrndorthogonalfromtheleft, cmatrixrndorthogonalfromtheright умножают заданную прямоугольную матрицу справа или слева на случайную ортогональную матрицу. Эти функции разделяют все ограничения функций генерации случайных ортогональных матриц, изложенные выше. В случае, если размерность умножаемой матрицы M*N, а случайной матрицы - N*N, то трудоемкость задачи составит O(M·N 2)

Симметричное/Эрмитово умножение на случайную ортогональную матрицу

В случае, если требуется умножить Эрмитову (симметричную) матрицу на случайную ортогональную матрицу с сохранением симметрии, т.е. осуществить операцию вида B=Q'·A·Q, где Q - случайная ортогональная матрица, то можно использовать функции smatrixrndmultiply/hmatrixrndmultiply.

Замечание #1
Следует отметить, что, в отличие от многих функций для работы с симметричными/Эрмитовыми матрицами, эти функции требуют задание ПОЛНОЙ матрицы A, а не только верхней или нижней половины.

Генерация матрицы с заданным числом обусловленности и требуемыми свойствами

Функции cmatrixrndcond/rmatrixrndcond/smatrixrndcond/hmatrixrndcond/spdmatrixrndcond/hpdmatrixrndcond позволяют генерировать случайные матрицы с заданным числом обусловленности. Генерируемая матрица при этом относится к одному из следующих классов: комплексная, вещественная, симметричная вещественная, Эрмитова, симметричная положительно определенная, Эрмитова положительно определенная.

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

Manual entries

C++ matgen subpackage   
C# matgen subpackage   

This article is intended for personal use only.

Скачать ALGLIB

C#

Исходный код на C#

Downloads page

 

C++

Исходный код на C++

Downloads page

 

C++, арифметика высокой точности

Исходный код на C++, использующий библиотеки MPFR/GMP.

Исходный код GMP доступен на сайте gmplib.org. Исходный код MPFR доступен на сайте www.mpfr.org.

Downloads page

 

FreePascal

Исходный код на Free Pascal.

Downloads page

 

Delphi

Исходный код на Delphi.

Downloads page

 

VB.NET

Исходный код на VB.NET.

Downloads page

 

VBA

Исходный код на VBA.

Downloads page

 

Python

Исходный код на Python (CPython и IronPython).

Downloads page

 

 

ALGLIB® - numerical analysis library, 1999-2017.
ALGLIB is registered trademark of the ALGLIB Project.