Spec-Zone.ru › C++

Основные алгоритмы линейной алгебры (с C++26)

Основные алгоритмы линейной алгебры основаны на плотных базовых подпрограммах линейной алгебры (BLAS), которые соответствуют подмножеству стандарта BLAS. Эти алгоритмы, которые обращаются к элементам массивов, рассматривают эти элементы через std::mdspan, представляющие вектор или матрицу.

Алгоритмы BLAS разделены на три группы операций, называемые уровнями, которые, как правило, соответствуют степени многочлена в сложностях алгоритмов:

  • BLAS 1: Все алгоритмы с std::mdspan параметрами выполняют подсчёт std::mdspan обращений к элементам массива и арифметических операций, которые линейны по максимальному произведению размеров любого std::mdspan параметра. Эти алгоритмы содержат операции с векторами, такие как скалярное произведение, нормы и сложение векторов.
  • BLAS 2: Все алгоритмы имеют общую сложность в квадратичном времени. Эти алгоритмы содержат операции с матрицей-вектором, такие как умножение матрицы на вектор и решение треугольной системы линейных уравнений.
  • BLAS 3: Все алгоритмы имеют общую сложность в кубическом времени. Эти алгоритмы содержат операции с матрицей-матрицей, такие как умножение матриц и решение нескольких треугольных систем линейных уравнений.

Преобразования на месте

Определено в заголовке <linalg>
Определено в пространстве имен std::linalg
scaled_accessor
(C++26)
std::mdspan политика доступа, ссылка которой представляет собой произведение фиксированного масштабирующего коэффициента и ссылки вложенного std::mdspan доступа
(шаблон класса)
conjugated_accessor
(C++26)
std::mdspan политика доступа, ссылка которой представляет комплексно сопряжённую ссылку вложенного std::mdspan доступа
(шаблон класса)
layout_transpose
(C++26)
std::mdspan политика отображения структуры, меняющая местами два правых индекса, объёмы и шаги любой уникальной политики отображения структуры
(шаблон класса)
scaled
(C++26)
возвращает новый вид только для чтения std::mdspan, вычисленный как произведение масштабирующего коэффициента и соответствующих элементов заданного std::mdspan
(шаблон функции)
conjugated
(C++26)
возвращает новый вид только для чтения std::mdspan, элементы которого являются комплексно сопряжёнными соответствующим элементам заданного std::mdspan
(шаблон функции)
transposed
(C++26)
возвращает новый std::mdspan, представляющий транспонированную матрицу, используя заданный std::mdspan
(шаблон функции)
conjugate_transposed
(C++26)
возвращает вид сопряжённой транспонированной матрицы
(шаблон функции)

Функции BLAS 1

Определено в заголовке <linalg>
Определено в пространстве имен std::linalg
setup_givens_rotation
(C++26)
генерирует поворот по плоскости
(шаблон функции)
apply_givens_rotation
(C++26)
применяет поворот по плоскости к векторам
(шаблон функции)
swap_elements
(C++26)
меняет местами соответствующие элементы матрицы или вектора
(шаблон функции)
scale
(C++26)
перезаписывает матрицу или вектор результатом поэлементного умножения на скаляр
(шаблон функции)
copy
(C++26)
копирует элементы одной матрицы или вектора в другую
(шаблон функции)
add
(C++26)
поэлементно складывает векторы или матрицы
(шаблон функции)
dot
(C++26)
возвращает не сопряжённое скалярное произведение двух векторов
(шаблон функции)
dotc
(C++26)
возвращает сопряжённое скалярное произведение двух векторов
(шаблон функции)
vector_sum_of_squares
(C++26)
возвращает масштабированную сумму квадратов элементов вектора
(шаблон функции)
vector_two_norm
(C++26)
возвращает евклидову норму вектора
(шаблон функции)
vector_abs_sum
(C++26)
возвращает сумму абсолютных значений элементов вектора
(шаблон функции)
vector_idx_abs_max
(C++26)
возвращает индекс элемента с максимальным абсолютным значением в векторе
(шаблон функции)
matrix_frob_norm
(C++26)
возвращает норму Фробениуса матрицы
(шаблон функции)
matrix_one_norm
(C++26)
возвращает одну норму матрицы
(шаблон функции)
matrix_inf_norm
(C++26)
возвращает бесконечную норму матрицы
(шаблон функции)

Функции BLAS 2

Определено в заголовке <linalg>
Определено в пространстве имён std::linalg
matrix_vector_product
(C++26)
вычисляет произведение матрицы и вектора
(шаблон функции)
symmetric_matrix_vector_product
(C++26)
вычисляет произведение симметричной матрицы и вектора
(шаблон функции)
hermitian_matrix_vector_product
(C++26)
вычисляет произведение эрмитовой матрицы и вектора
(шаблон функции)
triangular_matrix_vector_product
(C++26)
вычисляет произведение треугольной матрицы и вектора
(шаблон функции)
triangular_matrix_vector_solve
(C++26)
решает треугольную систему линейных уравнений
(шаблон функции)
matrix_rank_1_update
(C++26)
выполняет несимметричное несопряжённое обновление матрицы ранга 1
(шаблон функции)
matrix_rank_1_update_c
(C++26)
выполняет несимметричное сопряжённое обновление матрицы ранга 1
(шаблон функции)
symmetric_matrix_rank_1_update
(C++26)
выполняет обновление симметричной матрицы ранга 1
(шаблон функции)
hermitian_matrix_rank_1_update
(C++26)
выполняет обновление эрмитовой матрицы ранга 1
(шаблон функции)
hermitian_matrix_rank_2_update
(C++26)
выполняет обновление симметричной матрицы ранга 2
(шаблон функции)
hermitian_matrix_rank_2_update
(C++26)
выполняет обновление эрмитовой матрицы ранга 2
(шаблон функции)

Функции BLAS 3

Определено в заголовке <linalg>
Определено в пространстве имён std::linalg
matrix_product
(C++26)
вычисляет произведение матриц
(шаблон функции)
symmetric_matrix_product
(C++26)
вычисляет произведение симметричных матриц
(шаблон функции)
hermitian_matrix_product
(C++26)
вычисляет произведение эрмитовых матриц
(шаблон функции)
triangular_matrix_producttriangular_matrix_left_producttriangular_matrix_right_product
(C++26)
вычисляет произведение треугольных матриц
(шаблон функции)
symmetric_matrix_rank_k_update
(C++26)
выполняет обновление симметричной матрицы ранга k
(шаблон функции)
hermitian_matrix_rank_k_update
(C++26)
выполняет обновление эрмитовой матрицы ранга k
(шаблон функции)
symmetric_matrix_rank_2k_update
(C++26)
выполняет обновление симметричной матрицы ранга 2k
(шаблон функции)
hermitian_matrix_rank_2k_update
(C++26)
выполняет обновление эрмитовой матрицы ранга 2k
(функция-шаблон)
triangular_matrix_matrix_left_solvetriangular_matrix_matrix_right_solve
(C++26)
решает несколько треугольных систем линейных уравнений
(функция-шаблон)

Вспомогательные элементы

Определено в заголовочном файле <linalg>
Определено в пространстве имён std::linalg
column_majorrow_majorcolumn_major_trow_major_t
(C++26)
описывают порядок элементов в std::mdspan с linalg::layout_blas_packed структурой расположения
(метка)
upper_trianglelower_triangleupper_triangle_tlower_triangle_t
(C++26)
определяют, должны ли алгоритмы и другие пользователи матрицы обращаться к верхней или нижней треугольной части матрицы
(метка)
implicit_unit_diagonalexplicit_diagonalimplicit_unit_diagonal_texplicit_diagonal_t
(C++26)
определяют, должны ли алгоритмы обращаться к диагональным элементам матрицы
(метка)
layout_blas_packed
(C++26)
политика отображения расположения std::mdspan, которая представляет квадратную матрицу, хранящую только элементы одного треугольника в упакованном смежном формате
(шаблон класса)

Примечания

Тест на наличие функции макрос Значение Std Функция
__cpp_lib_linalg 202311L (C++26) Основные алгоритмы линейной алгебры

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/linalg

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API