【问题标题】:Raise matrix to complex power将矩阵提升到复数幂
【发布时间】:2015-06-08 12:16:10
【问题描述】:

我正在实现一个使用 GSL 进行矩阵运算的库。我现在处于需要将事物提升到任何力量的地步,包括想象的力量。我已经有了处理矩阵负幂的代码,但现在我需要处理虚幂,因为我库中的所有数字都是复数。

GSL 是否已经具备执行此操作的功能,或者我是否即将进入循环地狱尝试为此创建算法?我不仅需要能够提高虚数,还需要能够提高复数,例如 3+2i。由于对整个矩阵的经验有限,我什至不确定手动操作的过程,更不用说使用计算机了。

【问题讨论】:

    标签: c matrix complex-numbers gsl exponentiation


    【解决方案1】:

    嗯,我从没想过我上过的电气工程课程会在这里帮助我,但你知道吗?因此,将某些东西提升到复杂功能的过程并不复杂,我相信您可以相当容易地编写一些东西(我对您使用的库不太熟悉,但这仍然适用于任何具有一些基本复数函数的库)。

    首先,您需要将数字更改为极坐标(即 3 + 3i 将变为 (3^2 + 3^2) ^(1/2) 角 45 度。请原谅糟糕的符号。如果您感到困惑在更改数字的过程中,只需快速搜索一下从笛卡尔到极坐标的转换。

    所以现在你已经将它更改为极坐标,你将在角度 a 处获得一些半径 r。现在让我们将其提高到 n 次方。然后你会得到 r^n * e^(jan).

    如果您需要更多这方面的示例,请研究“复数的一般幂规则”。祝你好运。我希望这会有所帮助!

    只需重新阅读问题,我发现您需要提出既复杂又虚构的问题。只需使用指数规则多走一步,那么复杂和虚数将是相同的。此链接将快速解释如何将某些内容提升到复杂的http://boards.straightdope.com/sdmb/showthread.php?t=261399

    【讨论】:

    • 这个答案似乎是在描述如何将复数提升到复数幂,但问题是如何将矩阵提升到复数幂。
    【解决方案2】:

    一种方法是计算(如果可能)矩阵的对数,将其乘以(复数)指数,然后取幂。 那是你可以有

    mat_pow( M, z) = mat_exp( z * mat_log( M));
    

    但是 mat_log 甚至 mat_exp 都很棘手。

    【讨论】:

    • 嗯,WolframAlpha 内部似乎有与这个不同的公式。当您使用此公式计算 A[3x3]^0 时,您会得到 [3x3] 矩阵而不是 I
    【解决方案3】:

    如果它仍然与您相关,我已经扩展了我的软件包的功能,以便现在您可以将任何可对角化矩阵提升到任何幂(尤其包括复数幂)。该函数的名称是“Matpow”,可以在包“powerplus”中找到。此外,此软件包适用于 R 语言,而不是 C,但如果需要,您可以在 R 中进行计算。

    编辑:3.0 版也将功能扩展到(某些)非对角矩阵。

    希望对你有帮助!

    【讨论】:

    • 在哪里可以找到这个功能?
    • 我已经编辑了帖子,以便更清楚地知道在哪里可以找到函数“Matpow”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    相关资源
    最近更新 更多