'''Матричные и тензорные объекты более высокого уровня для численного моделирования''' - это ....
== Введение ==
Численные методы с матрицами и тензорами предлагают базовую концепцию теоретических моделей в физике и особенно в технике. На основе этого создаются математико-численные модели для надежного моделирования физических процессов и проектирования технических конструкций на цифровых вычислительных машинах.
Ниже представлена концепция, которая реализует интеграцию тензорного исчисления, матричного расчета и программирования с объектно-ориентированными методами для объектов более высокого уровня. Подробные основы объектно-ориентированного моделирования и проектирования можно найти по адресу .
Традиционный матричный расчет основан на концепции схемы двумерного расположения расчетных величин, пришедшей из времен, когда еще не было цифровых компьютеров. Однако сейчас в программировании стало стандартом использовать многомерные поля (массивы) для динамического хранения и обработки числовых значений и текста. Чтобы оптимально использовать эти ресурсы, необходимо распространить матричные вычисления на многомерные матрицы и найти подходящий синтаксис и семантику в программировании, которые адаптируют математические методы к этой концепции. Для этой цели идеально подходит проверенное и проверенное тензорное исчисление в индексной записи; Потому что при обозначении индексированных величин более высокого уровня обработка матриц также возможна. Это также приводит к единой концепции программирования с классами и связанными с ними функциями-членами.
К сожалению, едва ли существуют языки программирования, которые напрямую реализуют соответствующий синтаксис и семантику для непосредственной обработки элементов матрицы и связанной с ней матричной арифметики. Однако такого решения можно достичь, используя объектно-ориентированные методы программирования матричных/тензорных алгоритмов. Это дает пользователю возможность объявлять свои собственные матричные и тензорные объекты и связанные с ними функции-члены, с помощью которых можно определить единую концепцию обработки различных типов тензоров/матриц. В этой статье используется язык программирования C++; поскольку это также дает возможность перегрузить стандартные операции программирования для арифметики и функции для тензорных и матричных операций таким образом, что обычную матричную арифметику можно также использовать для многомерных объектов, таких как
C_{ikl} = A_{ikl}+ B_{ikl} или '''C''' = '''A''' + '''B'''
или
f^{ilk} = k^{isl} * {v^k}_s или '''f''' ≠ '''k''' * '''v''' < math>^T, может быть реализован близко к обычному тексту и может использовать свойства тензорного исчисления, где символьная запись матрицы не работает.
Этот подход реализован в .
Эта концепция была специально разработана в ходе исследовательского проекта, финансируемого Немецким исследовательским фондом (DFG) в 1991-98 годах, и проверена на лекциях и упражнениях по численным методам и конечным элементам в Техническом университете Дармштадта, чтобы предоставить студентам четкий доступ к теоретическому тензору. и обеспечить практические матричные методы и объектно-ориентированное моделирование.
Ниже в интегративной форме представлены теория, основанная на выбранной тензорной и матричной алгебре, а также связанные с ними прототипы классов и функций принадлежности, а также численные тесты для доказательства эффективности и точности алгоритмов.
== Матричные объекты и элементарные операторы ==
Далее предполагается, что прямоугольные матрицы \textbf{\textit{хранятся в столбцах, как это принято в научно-технических приложениях и алгоритмических языках программирования - таких как FORTRAN.
:
\textbf{M} =
\влево(
\begin{array}{ccc}
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{array}
\справа)
= M_{ik} с размерами (N_{i}\times N_{k}).
Первый индекс i проходит по строкам, а второй индекс k — по столбцам матрицы M_{ik}.
Внутреннее хранение в матричных объектах осуществляется путем последовательного присвоения элементов матрицы одномерному векторному полю:
:
\textbf{V} :=
\влево(
\begin{array}{ccc}
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{array}
\справа)
:
=
\влево(
\begin{array}{ccc}
v_{0} & v_{1} & ... & v_{N_{i-1 & ... & ... & v_{N_{i}*N_{k}-1
\end{array}
\справа)
= 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-indices} в номенклатуру без изменения места хранения векторов или матриц.
Это также относится и к вектору '''V'''
V_{z} := V_{0z} := V_{z0}
а также для любых матриц '''M''':
:
M_{ik} := M_{0ik} := M_{i0k} := M_{ik0}.
Конструкция '''MATRIX M''' bisr (N_i,N_k,N_l,N_m) используется для определения математической формы прямоугольной матрицы в программном коде путем выбора размерностей. Здесь на данный момент разрешено до четырех измерений, чего обычно достаточно для инженерных приложений, тем более, что несколько соседних индексов можно суммировать с помощью иллюстраций, что используется в программном коде.
В следующем примере программы на C++ сначала объясняется, как обрабатываются матричные классы для создания соответствующих матричных объектов (экземпляров).
С помощью конструкций классов Vector, MATRIX, delta_MATRIX, e_MATRIX можно создавать статические или динамические объекты с элементами типа double. Используя поле (массив) в нотации языка программирования Си, можно заранее присвоить числовые значения векторным и матричным элементам. Ввод/вывод осуществляется через перегруженную стандартную команду '>>' или '
Матричные и тензорные объекты более высокого уровня для численного моделирования. ⇐ Васина Википедия
-
Автор темыwiki_de
- Всего сообщений: 42827
- Зарегистрирован: 13.01.2023
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение