Матричные/тензорные алгоритмыВасина Википедия

Новости с планеты OGLE-2018-BLG-0677
Что вы не только не знали, но и не хотели знать
Автор темы
wiki_en
Всего сообщений: 93862
Зарегистрирован: 16.01.2024
 Матричные/тензорные алгоритмы

Сообщение wiki_en »

= '''Тензорные/матричные алгоритмы''' =

=== '''1.0 Введение'''===

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

Ниже представлена ​​концепция, которая объединяет матричное исчисление, тензорное исчисление и программирование с объектно-ориентированными методами.

Традиционное матричное исчисление основано на концепции схемы двумерного расположения вычислительных величин, зародившейся еще до появления цифровых компьютеров. Однако сейчас в программировании стало стандартом использовать многомерные массивы для динамического хранения и обработки числовых значений и текста. Чтобы оптимизировать эти ресурсы, необходимо расширить матричное исчисление до многомерных матриц и применить в программировании подходящий синтаксис и семантику, соответствующую математическим методам.

Хорошо зарекомендовавшее себя тензорное исчисление в индексной записи обеспечивает идеальную форму для этой цели; потому что индексированные величины более высокого порядка также могут обрабатываться так же, как матрицы. Это приводит к единой концепции программирования с использованием массивов и процедур.

К сожалению, существует немного языков программирования, которые напрямую реализуют синтаксис и семантику для непосредственной обработки элементов матрицы и связанной с ней матричной арифметики. Однако эту проблему можно решить, используя объектно-ориентированные методы программирования матричных/тензорных алгоритмов. Здесь пользователи имеют возможность объявлять свои собственные объекты матриц и тензоров и связанные с ними функции-члены, что позволяет использовать единую концепцию для обработки различных типов тензоров/матриц. В этой статье для этой цели используется язык программирования C++; поскольку он также позволяет перегружать стандартные операторы программирования для арифметики и функции для тензорных и матричных операций, позволяя реализовать традиционную матричную арифметику, как, например,

C_{i} = A_{i}+ B_{i} соотв. '''C''' = '''A''' + '''B'''

или

f^{i} = k^{ik} * v_{k} соотв. '''f''' = '''k''' * '''v''',

в ясной форме и с использованием свойств тензорного исчисления.

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

Следующая статья разделена на следующие разделы:

''- 2.0 Матричные объекты и элементарные операторы'',

''- 3.0 Список декартовых базисов и матрично-векторных умножений'',

''- 4.0 Перечислить базисные векторы и метрики в евклидовом пространстве'',

''- Преобразования тензора списка 5-0''.

Теория матриц и тензоров, тексты программ и результаты вычислений изложены в синтетической форме.

=== 2.0 Матричные объекты и элементарные операторы ===

Ниже предполагается, что прямоугольные матрицы хранятся \textbf{\textit{по столбцам, как это принято в научных и технических приложениях и алгоритмических языках программирования, таких как FORTRAN.


\textbf{M} =

\begin{vmatrix}
a_{0,0} & a_{1,1} & ... & a_{1,N_{k-1 \\
... \\
... \\
... \\
... \\
a_{N_{i-1},0} & a_{N_{i-1},1} & ... & a_{N_{i-1},N_{k-1
\end{vmatrix}

= M_{ik} с размерами (N_{i}\times N_{k}).

Здесь первый индекс i проходит по строкам, а второй индекс k — по столбцам матрицы M_{ik.

Внутренне матрицы сохраняются путем присвоения элементов матрицы в последовательном порядке одномерному векторному полю:

'''В''' :=

\begin{матрица

( a_{0,0} & a_{1,0} &... & a_{N_{i-1},0} & a_{0,1} & a_{1,1} & ... & a_ {N_{i-1},1} и
... & ... &
a_{0,N_{i-1 & a_{1,N_{i-1 & ... & a_{N_{i-1},N_{k-1 )
\end{matrix}


=
\begin{матрица
( v_{0} & v_{1} & ... & v_ {N_ {i-1 & ... & ... & v_{N_{i}*N_{k}-1} )
\end{matrix}
= V_{z} с размерностью N_{z} = N_{i} * N_{k},

аналогично тому, как это делается внутри компьютерных архитектур фон Неймана.

Соответствующие «биективные отображения» определяются следующим образом:

Сопоставление

V_{z} := M\underbrace{_{ik_z
определяется как z = k * N_{i} + i
,

и обратное отображение


M\underbrace{_{ik_z := V_{z}
задается как k = \text{Entier}(z/N_{i}) и i = z - k * N_{i} .

Дескриптор объекта для представления матрицы не зависит от внутреннего последовательного хранения элементов и управляет только внешним отображением формы матрицы.

Если матрица '''{M}''' сокращается до одной строки, она становится вектором-строкой M_{0k} ; то же самое относится и к вектору-столбцу M_{i0} . Это демонстрирует, что можно включать \textbf{0-index} в нотацию без изменения места хранения векторов или матриц.

Это справедливо и для вектора '''V''':

V_{z} := V_{0z} := V_{z0}

и для любых матриц \textbf{M}:

M_{ik} := M_{0ik} := M_{i0k} := M_{ik0} \;.

Конструктор '''MATRIX M''' (N_i,N_k,N_l,N_m) определяет математическую форму прямоугольной матрицы в программном коде путем выбора размеров. В настоящее время разрешено до четырех измерений, которых обычно достаточно для инженерных приложений. Кроме того, соседние индексы могут быть объединены с помощью сопоставлений, используемых в программном коде.

В следующем примере программы на C++ объясняется, как обрабатываются матричные классы для создания соответствующих матричных объектов (экземпляров).
\newline
Конструкторы классов VEKTOR, MATRIX, delta_MATRIX, e_MATRIX могут использоваться для создания статических или динамических объектов с элементами типа double. Используя обозначение массива в стиле C, векторные и матричные элементы могут быть предварительно загружены числовыми значениями. Ввод/вывод осуществляется с помощью перегруженных стандартных операторов «>>» и «

Подробнее: https://en.wikipedia.org/wiki/Matrix/Tensor_Algorithms
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ, комментарий, отзыв

Изменение регистра текста: 
Смайлики
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение