Разработка объектно-ориентированного анализа и моделирование оказывает значительное влияние на применение совместного проектирования и проектирования
вплоть до текущего информационного моделирования продуктов и зданий (BIM) Численные модели особенно важны для моделирования физических процессов в твердом теле
и механика жидкости решающую роль в понимании сложных взаимодействий в природе и технологиях. В целом физические основы преобразуются в надежные алгоритмы различных методов аппроксимации с использованием методов тензорного анализа, матричного исчисления и числовых программных структур, таких как: B. Разностные методы или методы конечных элементов
Алгоритмы в объектно-ориентированных структурах весьма актуальны, поскольку лежащие в их основе парадигмы инкапсуляции и наследования обеспечивают прозрачность формулировки и надежность методов, а также четко определяют связь с объектами. Объектная ориентация, в частности, открывает новые возможности для объединения теоретических основ тензорного анализа с численными преимуществами матричного исчисления и алгоритмами вычислительных программ в единую методологическую единицу.
Потому что классический матричный расчет : C_{ikl} = A_{ikl}+ B_{ikl} или '''C''' = '''A''' + '''B'''
или
: f^{ilk} = k^{isl} * {v^k}_s или '''f''' ≠ '''k''' * '''v'' ' ^T
и где, к сожалению, не работает символьная матричная запись.
С другой стороны, концепция объектно-ориентированного класса создает подходящие структуры для новых тензорных и матричных классов, которые позволяют определять матричные операции на основе индексов для многомерных матриц, обобщать вычисление матриц на объекты более высокого уровня и унифицировать номенклатура тензоров, матриц и полей. Перегрузка арифметических и функциональных стандартных операторов для матричных объектов также существенно повышает удобство интерфейсов.
Эта статья иллюстрирует эту проверенную концепцию в следующих главах с использованием удобных примеров линейной алгебры с использованием четко структурированных прототипов программных структур. Это означает, что процессы представлены в прозрачной, понятной форме и проверены численно. Методы объектно-ориентированного программирования находятся в .
== Матричные объекты и перегруженные операторы ==
Далее предполагается, что '''''матрицы второго уровня''''' хранятся "по столбцам", как это принято в научных и технических приложениях и языках алгоритмического программирования, таких как FORTRAN.< бр / >
:
\mathbf{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.
«Внутреннее хранилище» в матричных объектах осуществляется путем последовательного присвоения элементов матрицы одномерному векторному полю:
:
\mathbf{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} .
''Дескриптор'' объекта представления матрицы, по-видимому, не зависит от внутреннего последовательного хранения элементов и лишь внешне управляет специальным представлением формы матрицы.
Если вы сократите матрицу \mathbf {M} до одной строки, будет создан вектор-строка M_{0k} , то же самое относится и к вектору-столбцу M_ {i0} . Это показывает, что с помощью «индексной записи» можно вставлять в номенклатуру «0-индексы», не меняя места хранения векторов или матриц.
Это касается и вектора
V_{z} := V_{0z} := V_{z0}
как и для любых матриц:
M_{ik} := M_{0ik} := M_{i0k} := M_{ik0} .
'''''Конструктор''''' M(N_i,N_k,N_l,N_m) используется для преобразования базовой математической формы в '''''матрицы более высокого уровня'''' объектно-ориентированным образом», расширяется и определяется выбором измерений. Изначально допускается до четырех измерений, которых обычно достаточно для инженерных приложений, тем более, что с помощью приведенных выше цифр можно суммировать несколько соседних индексов, что используется в программном коде.
В следующем примере программы на C++ сначала объясняется, как новые '''''матричные классы''''' структурируются семантически, чтобы создавать соответствующие матричные объекты ("экземпляры") и использовать их с "индексной арифметикой". ' используя ''перегруженные стандартные операторы'' для синтаксической обработки. Конструкторы классов Vector, MATRIX, delta_MATRIX, e_MATRIX могут использоваться для создания статических или динамических объектов с элементами типа double. Используя поле (массив) в обозначениях языка программирования Си, также можно заранее присвоить числовые значения векторным и матричным элементам. Ввод/вывод осуществляется через перегруженные стандартные операторы ''>>'' или ''
Матричные и тензорные объекты более высокого уровня для численного моделирования. ⇐ Васина Википедия
-
Автор темыwiki_de
- Всего сообщений: 42840
- Зарегистрирован: 13.01.2023
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение