#vector #linear #matrix #n-way

bin+lib tensor

目前,Tensor 库的草图

3 个版本

使用旧的 Rust 2015

0.1.2 2015 年 6 月 28 日
0.1.1 2015 年 6 月 28 日
0.1.0 2015 年 6 月 21 日

#110 in #linear

Unlicense

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