首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python指数函数

Python指数函数
EN

Stack Overflow用户
提问于 2018-11-06 02:56:31
回答 1查看 568关注 0票数 0

我定义了以下符号矩阵:

代码语言:javascript
复制
def DFT(d):    
    a = symbols('pi')    
    DFT = Matrix(d, d, lambda i,j: exp((2*I/d)*i*j*a))    
    return(DFT)

现在,我想将指数简化为相应的1,-1,I,-I,当它的参数是整数或半整数值时,但在其余情况下,我想保留符号表达式。有什么我可以使用的方法吗?我怎么发动汽车呢?

致以问候!

EN

回答 1

Stack Overflow用户

发布于 2018-11-06 03:21:18

如果我在DFT的定义中使用预定义的符号sympy.pi而不是a,它会自动简化这些值:

代码语言:javascript
复制
In [27]: from sympy import *

In [28]: def DFT(d):    
    ...:     DFT = Matrix(d, d, lambda i,j: exp((2*I/d)*i*j*pi))
    ...:     return(DFT)
    ...: 

In [29]: DFT(4)
Out[29]: 
Matrix([
[1,  1,  1,  1],
[1,  I, -1, -I],
[1, -1,  1, -1],
[1, -I, -1,  I]])

In [30]: DFT(6)
Out[30]: 
Matrix([
[1,             1,              1,  1,              1,              1],
[1,   exp(I*pi/3),  exp(2*I*pi/3), -1,  exp(4*I*pi/3),  exp(5*I*pi/3)],
[1, exp(2*I*pi/3),  exp(4*I*pi/3),  1,  exp(8*I*pi/3), exp(10*I*pi/3)],
[1,            -1,              1, -1,              1,             -1],
[1, exp(4*I*pi/3),  exp(8*I*pi/3),  1, exp(16*I*pi/3), exp(20*I*pi/3)],
[1, exp(5*I*pi/3), exp(10*I*pi/3), -1, exp(20*I*pi/3), exp(25*I*pi/3)]])

In [31]: DFT(8)
Out[31]: 
Matrix([
[1,             1,  1,              1,  1,              1,  1,              1],
[1,   exp(I*pi/4),  I,  exp(3*I*pi/4), -1,  exp(5*I*pi/4), -I,  exp(7*I*pi/4)],
[1,             I, -1,             -I,  1,              I, -1,             -I],
[1, exp(3*I*pi/4), -I,  exp(9*I*pi/4), -1, exp(15*I*pi/4),  I, exp(21*I*pi/4)],
[1,            -1,  1,             -1,  1,             -1,  1,             -1],
[1, exp(5*I*pi/4),  I, exp(15*I*pi/4), -1, exp(25*I*pi/4), -I, exp(35*I*pi/4)],
[1,            -I, -1,              I,  1,             -I, -1,              I],
[1, exp(7*I*pi/4), -I, exp(21*I*pi/4), -1, exp(35*I*pi/4),  I, exp(49*I*pi/4)]])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53160474

复制
相关文章

相似问题

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