将矩阵提升到复杂的功率

时间:2015-06-08 12:16:10

标签: c matrix complex-numbers gsl exponentiation

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

GSL是否已经具备了这方面的设施,或者我是否准备进入循环地狱试图为此创建算法?我需要能够不仅提高虚数而且提高数字,例如3 + 2i。由于对整个矩阵的经验有限,我甚至不确定手动执行此过程,更不用说计算机了。

3 个答案:

答案 0 :(得分:0)

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

首先你需要将数字改为极坐标(即3 + 3i将成为(3 ^ 2 + 3 ^ 2)^(1/2)角度45度。原谅可怕的符号。如果你感到困惑关于改变数字的过程,只需做一些关于从笛卡儿转换为极地的快速谷歌搜索。

现在您已将其更改为极坐标,您将获得角度为a的半径r。让我们现在把它提升到第n个力量。然后你会得到r ^ n * e ^(j a n)。

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

重读这个问题,我发现你需要提升到复杂和想象。使用指数规则只需要一个额外的步骤,复杂和想象就会变得相同。此链接将快速解释如何将某些内容提升到复杂的http://boards.straightdope.com/sdmb/showthread.php?t=261399

答案 1 :(得分:0)

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

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

然而,mat_log甚至mat_exp都很棘手。

答案 2 :(得分:0)

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

编辑:版本3.0也将功能扩展到(某些)不可对角化的矩阵。

我希望它有所帮助!