obsidian_backup/多体+耦合求解器/动态数组调研.md

66 lines
2.4 KiB
Markdown
Raw Normal View History

2025-01-13 17:02:16 +08:00
# 1、其他可能替代的方案
## [nalgebra](https://github.com/dimforge/nalgebra):支持动态数组+数组的计算+数组分解,求解
- 1. matrix_construction.rs文件中nalgebra支持多种矩阵创建方式
- 直接指定元素值创建固定大小矩阵Matrix2x3::new
- 从行向量或列向量创建矩阵from_rows, from_columns
- 从切片创建矩阵from_row_slice, from_column_slice
- 使用函数生成矩阵元素from_fn
- 从迭代器创建矩阵from_iterator
- 创建动态大小矩阵DMatrix
- 创建对角矩阵from_diagonal_element
- 创建单位矩阵identity
- 2. matrix.rs文件nalgebra支持多种矩阵操作
- 矩阵转置transpose
- 矩阵共轭转置adjoint
- 矩阵共轭conjugate
- 矩阵缩放scale, unscale
- 矩阵元素映射map, map_with_location
- 矩阵元素折叠fold, fold_with
- 矩阵元素交换swap
- 矩阵复制copy_from, copy_from_slice
- 矩阵迹trace
- 矩阵对称部分symmetric_part
- 矩阵厄米特部分hermitian_part
- 矩阵对角化diagonal, map_diagonal
- 矩阵齐次坐标转换to_homogeneous, from_homogeneous
- 矩阵叉积cross, perp
- 矩阵叉积矩阵cross_matrix
- 矩阵夹角angle
- 3. src/base/ops.rs文件实现了矩阵的以下主要操作
1. 索引操作:
- 实现了Index和IndexMut trait支持通过usize或(usize, usize)索引访问矩阵元素
- 支持一维和二维索引,会自动进行边界检查
2. 取反操作:
- 实现了Neg trait支持对矩阵进行取反操作
- 提供了neg_mut方法用于原地取反
3. 加法和减法操作:
- 通过componentwise_binop_impl宏实现了Add/Sub trait和AddAssign/SubAssign trait
- 支持矩阵与矩阵、矩阵与标量的加减运算
- 提供了add_to/sub_to等方法用于将结果存储到指定矩阵中
4. 乘法操作:
- 实现了Mul trait和MulAssign trait
- 支持矩阵与矩阵、矩阵与标量的乘法运算
- 提供了tr_mul/ad_mul等方法用于转置/共轭转置后的乘法
- 实现了Kronecker积运算
5. 其他操作:
- 实现了Sum和Product trait支持对矩阵序列求和或求积
- 提供了mul_to等方法用于将结果存储到指定矩阵中
# 2 本身方法的速度