3 个版本
使用旧的 Rust 2015
0.1.2 | 2015 年 6 月 28 日 |
---|---|
0.1.1 | 2015 年 6 月 28 日 |
0.1.0 | 2015 年 6 月 21 日 |
#110 in #linear
12KB
285 行
Tensor
目前,仅支持相同维度基向量的协变 Tensor。
此外,所有 Tensor 假设使用正交基(例如:欧几里得标准基)。
我们使用以下秩 Tensor 定义
T'α..'β = ( ∂x'α / ∂xγ )..( ∂x'β / ∂xμ ) Tγ..μ
假设正交基后,我们知道 ( ∂x'α / ∂xγ ) 对于所有 α != γ 的情况将是零。
且 α = γ 时为 1。同样,对于其他成分,例如 ( ∂x'β / ∂xμ ),关于 β != μ 也是如此。
这允许直接计算 Tensor 的外积和内积。
两个 Tensor 之间的内积目前定义为所有 Tensor 秩,只要秩相同,并且两个 Tensor 的索引都是相同维度的。我将逐渐放宽这些限制。
此代码作为草图。
// 3d Rank3 Tensor Example
let t3 = Tensor::build(3, 3, vec![
1, 2, 3,
4, 5, 6,
7, 8, 9,
10, 11, 12,
13, 14, 15,
16, 17, 18,
19, 20, 21,
22, 23, 24,
25, 26, 27
]);
let t = t3.inner_product(&t3.clone());
t.print();
上面的代码将执行 t3 与自身的内积,然后打印出最终 Tensor t 的每个分量。
更健壮的 Tensor 库正在路上。
依赖项
~240KB