首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有PDL的符号实现?

是否有PDL的符号实现?
EN

Stack Overflow用户
提问于 2020-05-06 06:29:09
回答 1查看 67关注 0票数 3

为了测试矩阵算法,我希望能够用变量来计算,而不仅仅是数字,而不是改变算法本身。

我假设有一个解决方案(但可能还有其他同样受欢迎的解决方案)的方向是在PDL中使用多态性,或者用与PDL相同的API替换PDL库。

为了说明我的观点,下面是一个使用PDL实现的简单算法:

代码语言:javascript
复制
use utf8;
use strict;
use warnings;
use PDL;

sub algorithm ($$) {
    my $alpha = shift;
    my $beta = shift;

    my $A = pdl(
        [ cos $alpha, -sin $alpha ],
        [ sin $alpha, cos $alpha ],
    );

    my $B = pdl(
        [ cos $beta, -sin $beta ],
        [ sin $beta, cos $beta ],
    );

    print $A x $B;
}

现在测试代码,而不是许多调用,如

代码语言:javascript
复制
algorithm 0.1, 0.1;
algorithm 0.2, 0.1;
algorithm 0.1, 0.2;
…

使用一个类似于

代码语言:javascript
复制
algorithm 'α', 'β';

或者--同样可以接受--类似

代码语言:javascript
复制
algorithm pdl('α'), pdl('β');

它最终会在命名变量αβ中输出一个术语矩阵(当然,拉丁变量名称ab应该是同样可能的)。

理想情况下,算法中没有任何东西需要为此改变;最后,我想测试算法本身,而不是一个不同的算法。在标题中添加一个use PDL::Symbolic qw( pdl );use SPDL qw( pdl );语句,作为use PDL;的扩展或替换,对于不更改任何内容的规则来说,似乎是一个可以接受的小例外。

我想到的唯一解决方案基本上是重新实现PDL,至少在我的算法中使用的函数不太考虑效率,而是使用一个符号对象而不是每个小单元格,并可能通过索引-命名功能来扩展更大范围内的单元格,以提高可用性。

还有比从头开始编写这个库更好的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-10 03:25:34

很简短的回答:不。

稍微有帮助的答案是:PDL的全部目的是在计算机内存中(使用“共享内存”模型)以极快的速度对二进制数据(如C或Fortran )进行操作。你描述的是一个完全不同的软件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61628764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档