首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的傅里叶级数求和

Python中的傅里叶级数求和
EN

Stack Overflow用户
提问于 2013-09-25 10:47:25
回答 2查看 1.3K关注 0票数 2

我正在尝试用Python绘制傅里叶级数求和图。到目前为止,我有这样的想法:

代码语言:javascript
复制
#! /usr/bin/env python

from sympy import *
import numpy
import matplotlib.pyplot as plt

n = Symbol('n')
x = Symbol('x')

L_1 = -1
L_2 = 1
f = -x

a_0 = (1 / L_2) * integrate(f, (x, L_1, L_2))
a_n = (1 / L_2) * integrate(f * cos(n * pi * x / L_2), (x, L_1, L_2))
b_n = (1 / L_2) * integrate(f * sin(n * pi * x / L_2), (x, L_1, L_2))

F = (a_0 / 2) + mpmath.fsum((a_n * cos(n * pi * x / L_2)) + (b_n * sin(n * pi * x / L_2)), [0, 20])
print(F)

然而,fsum抛出了一个错误:

代码语言:javascript
复制
F = (a_0 / 2) + mpmath.fsum((a_n * cos(n * pi * x / L_2)) + (b_n * sin(n * pi * x / L_2)), [0, 20])
File "C:\Program Files\Python\lib\site-packages\sympy\mpmath\ctx_mp_python.py", line 831, in fsum
for term in terms:
TypeError: 'Mul' object is not iterable

我不清楚Mul对象是什么,也不清楚我的问题到底是什么。有没有人对这个求和有什么建议呢?正如我所说的,最终目标是为x插入一些值,并在n次迭代中求和,在本例中为20次。

EN

回答 2

Stack Overflow用户

发布于 2014-01-12 10:54:37

我不确定为什么抛出Mul对象错误,这个错误意味着对象是单项的,不能迭代。

关于您尝试使用的mpmath.fsum方法,签名与documentation不匹配。

代码语言:javascript
复制
mpmath.fsum(terms, absolute=False, squared=False)

您正在使用的方法似乎与nsum相匹配。

代码语言:javascript
复制
mpmath.nsum(ctx, f, *intervals, **options)

如果你想用python实现傅里叶变换,你可以使用python和here查看实现。

票数 0
EN

Stack Overflow用户

发布于 2016-04-13 05:05:01

SymPy 1.0已经包含在fourier_series函数中,它可以让你计算函数的傅里叶级数。文档可以在here上找到。

例如:

代码语言:javascript
复制
>>> f = fourier_series(-x, (x, -1, 1))
>>> f.truncate(5)
-2*sin(pi*x)/pi + sin(2*pi*x)/pi - 2*sin(3*pi*x)/(3*pi)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18995368

复制
相关文章

相似问题

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