【数学】什么是傅里叶级数与傅里叶变换?

傅里叶级数与傅里叶变换

背景

傅里叶级数和傅里叶变换是数学和工程领域中的重要工具,特别是在信号处理、图像处理和物理学中。傅里叶级数用于将周期函数表示为正弦和余弦函数的和,而傅里叶变换用于将任意函数表示为频率的函数。

公式

  • 傅里叶级数:给定周期函数 f ( t ) f(t) f(t),其傅里叶级数表示为:
    f ( t ) = a 0 + ∑ n = 1 ∞ ( a n cos ⁡ ( 2 π n t T ) + b n sin ⁡ ( 2 π n t T ) ) f(t) = a_0 + \sum_{n=1}^{\infty} \left( a_n \cos \left( \frac{2\pi n t}{T} \right) + b_n \sin \left( \frac{2\pi n t}{T} \right) \right) f(t)=a0+n=1(ancos(T2πnt)+bnsin(T2πnt))
    其中:
    a 0 = 1 T ∫ 0 T f ( t ) d t a_0 = \frac{1}{T} \int_{0}^{T} f(t) \, dt a0=T10Tf(t)dt
    a n = 2 T ∫ 0 T f ( t ) cos ⁡ ( 2 π n t T ) d t a_n = \frac{2}{T} \int_{0}^{T} f(t) \cos \left( \frac{2\pi n t}{T} \right) \, dt an=T20Tf(t)cos(T2πnt)dt
    b n = 2 T ∫ 0 T f ( t ) sin ⁡ ( 2 π n t T ) d t b_n = \frac{2}{T} \int_{0}^{T} f(t) \sin \left( \frac{2\pi n t}{T} \right) \, dt bn=T20Tf(t)sin(T2πnt)dt

  • 傅里叶变换:给定函数 f ( t ) f(t) f(t),其傅里叶变换表示为:
    F ( f ) ( ω ) = F ( ω ) = ∫ − ∞ ∞ f ( t ) e − i ω t d t \mathcal{F}(f)(\omega) = F(\omega) = \int_{-\infty}^{\infty} f(t) e^{-i\omega t} \, dt F(f)(ω)=F(ω)=f(t)etdt
    其逆变换为:
    f ( t ) = 1 2 π ∫ − ∞ ∞ F ( ω ) e i ω t d ω f(t) = \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega) e^{i\omega t} \, d\omega f(t)=2π1F(ω)etdω

示例题目

题目:求周期函数 f ( t ) = t f(t) = t f(t)=t 在区间 [ − π , π ] [-\pi, \pi] [π,π] 上的傅里叶级数表示。

详细讲解

  1. 计算 a 0 a_0 a0
    a 0 = 1 2 π ∫ − π π t d t = 0 a_0 = \frac{1}{2\pi} \int_{-\pi}^{\pi} t \, dt = 0 a0=2π1ππtdt=0
  2. 计算 a n a_n an
    a n = 1 π ∫ − π π t cos ⁡ ( n t ) d t = 0 a_n = \frac{1}{\pi} \int_{-{\pi}}^{\pi} t \cos(nt) \, dt = 0 an=π1ππtcos(nt)dt=0
  3. 计算 b n b_n bn
    b n = 1 π ∫ − π π t sin ⁡ ( n t ) d t = 2 ( − 1 ) n + 1 n b_n = \frac{1}{\pi} \int_{-\pi}^{\pi} t \sin(nt) \, dt = \frac{2(-1)^{n+1}}{n} bn=π1ππtsin(nt)dt=n2(1)n+1

因此,傅里叶级数为:
f ( t ) = ∑ n = 1 ∞ 2 ( − 1 ) n + 1 n sin ⁡ ( n t ) f(t) = \sum_{n=1}^{\infty} \frac{2(-1)^{n+1}}{n} \sin(nt) f(t)=n=1n2(1)n+1sin(nt)

Python代码求解

import numpy as np
import matplotlib.pyplot as plt# 定义周期函数
def f(t):return t# 定义傅里叶级数展开的项数
N = 10# 定义傅里叶级数
def fourier_series(t, N):result = np.zeros_like(t)for n in range(1, N + 1):result += (2 * (-1)**(n + 1) / n) * np.sin(n * t)return result# 生成时间点
t = np.linspace(-np.pi, np.pi, 1000)# 计算傅里叶级数近似
f_approx = fourier_series(t, N)# 绘图
plt.plot(t, f(t), label='Original function')
plt.plot(t, f_approx, label='Fourier series approximation')
plt.legend()
plt.xlabel('t')
plt.ylabel('f(t)')
plt.title('Fourier Series Approximation')
plt.grid(True)
plt.show()

实际生活中的例子

在实际生活中,傅里叶变换用于信号处理,例如将音频信号转换为频谱,以分析不同频率的声音成分。傅里叶级数则在分析周期信号(如振动和电波)时非常有用。通过将复杂的周期信号分解为简单的正弦和余弦分量,可以更容易地理解和处理这些信号。

一个python例子

import numpy as np
import matplotlib.pyplot as plt# 定义周期函数的频率和系数
T = 2 * np.pi  # 周期
N = 5  # 傅里叶级数的项数# 定义时间范围
t = np.linspace(-np.pi, np.pi, 1000)# 定义傅里叶级数的各项
def fourier_series_terms(t, N):terms = []for n in range(1, N + 1):term = (2 * (-1)**(n + 1) / n) * np.sin(n * t)terms.append(term)return terms# 计算傅里叶级数的各项
terms = fourier_series_terms(t, N)# 绘图
plt.figure(figsize=(12, 8))# 原始函数
plt.subplot(2, 1, 1)
plt.plot(t, t, label='Original function')
plt.title('Original Function')
plt.xlabel('t')
plt.ylabel('f(t)')
plt.legend()
plt.grid(True)# 各项的和
plt.subplot(2, 1, 2)
sum_terms = np.zeros_like(t)
for i, term in enumerate(terms):sum_terms += termplt.plot(t, sum_terms, label=f'Term {i+1}')
plt.title('Sum of Fourier Series Terms')
plt.xlabel('t')
plt.ylabel('Sum of terms')
plt.legend()
plt.grid(True)plt.tight_layout()
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/856630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习(十四)——优化器

前言 反向传播可以求出神经网路中每个需要调节参数的梯度(grad),优化器可以根据梯度进行调整,达到降低整体误差的作用。下面我们对优化器进行介绍。 1. 如何使用优化器 官方文档:torch.optim — PyTorch 2.0 documentation (1)构…

Nexus安卓木马分析报告

概述 2023年3月21日晚上,链安与中睿天下联合研发的监控系统检测到一种新型安卓木马。在经过睿士沙箱系统捕获样本之后,发现该安卓木马极有可能是原安卓网银盗号木马SOVA的变种。与此同时,意大利安全公司Cleafy发布了一篇题为《Nexus&#xf…

JupyterLab使用指南(三):JupyterLab的Cell详细介绍

JupyterLab Cell 使用教程 JupyterLab 的 cell 是一种强大的工具,提供了编写、执行、展示和记录的全方位支持,使得复杂的计算任务变得简单直观。通过熟练掌握 cell 的各种操作和快捷键,用户可以显著提高工作效率,专注于解决实际问…

2024/6/20 驱动day7GPIO子系统

GPIO子系统点六盏灯 #include <linux/init.h> #include <linux/module.h> #include <linux/of.h> #include <linux/gpio.h> #include <linux/of_gpio.h> struct device_node* node; struct device_node* child_node1; struct device_node* child…

Java实现俄罗斯方块——文本域组件

技术实现&#xff1a; 1.初始化游戏窗口&#xff1b; 2.初始化游戏界面&#xff1b; 3.初始化游戏的说明面板&#xff1b; 4.随机生成下落方块&#xff1b; 5.绘制方块&#xff1b; 6.清除方块&#xff1b; 7.清楚某一行方块&#xff0c;上方方块掉落&#xff1b; 8.刷新…

复分析——第5章——整函数(复可积函数)(E.M. Stein R. Shakarchi)

第5章 整函数(复可积函数)(Entire Functions) ...but after the 15th of October I felt myself a free man, with such longing for mathematical work, that the last two months flew by quickly, and that only today I found the letter of the 19th of October that…

STM32单片机-FLASH闪存

STM32单片机-FLASH闪存 一、FLASH简介二、FLASH工作原理三、读写内部FLASH四、读取芯片ID 一、FLASH简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&#xff0c;通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程读写FLASH的用途&…

ReF:斯坦福提出的新型语言模型微调方法

随着预训练语言模型&#xff08;LMs&#xff09;在各种自然语言处理&#xff08;NLP&#xff09;任务中的广泛应用&#xff0c;模型微调成为了一个重要的研究方向。传统的全参数微调方法虽然有效&#xff0c;但计算成本高昂&#xff0c;尤其是在大型模型上。为了解决这一问题&a…

解读代理 IP差异:ISP 代理与住宅代理

独立IP作为跨境必备工具&#xff0c;代理类型五花八门&#xff0c;今天IPFoxy全球代理将为搭建科普&#xff1a;ISP代理与住宅代理在理论上与使用上的区别。代理充当用户和互联网之间的中介&#xff0c;提供各种功能以增强安全性、隐私性和可访问性。在众多代理类型中&#xff…

嵌入式实验---实验四 DMA传输实验

一、实验目的 1、掌握STM32F103DMA传输程序设计流程&#xff1b; 2、熟悉STM32固件库的基本使用。 二、实验原理 1、利用外部按键KEY1来控制DMA的传送&#xff0c;每按一次KEY1&#xff0c;DMA就传送一次数据到USART1&#xff08;串口1&#xff09;&#xff1b; 2、该串口…

win10 安装PowerShell

总结: 直接下一步,下一步… 下载链接 https://download.csdn.net/download/qq_43071699/89462517

Qt扩展-轻量数学公式计算

轻量数学公式计算 一、概述二、代码结构三、简单使用四、解析支持1. 操作数2. 运算符3. 括号 一、概述 这个是我写得简单的一个数学计算公式工具。easy-math-parser 是一个用C编写的简单工具包&#xff0c;支持四个操作字符串的计算工具&#xff0c;灵感来自Muparser。 在这个…

Linux守护进程简介、创建流程、关闭和实例演示

1、什么是守护进程&#xff1f; 守护进程是一个后台运行的进程&#xff0c;是随着系统的启动而启动&#xff0c;随着系统的终止而终止&#xff0c;类似于windows上的各种服务&#xff0c;比如ubuntu上的ssh服务&#xff0c;网络管理服务等都是守护进程。 2、守护进程的创建流…

如何为自己的项目生成changelog

背景 在github上看到人家的更新日志感觉很cool&#xff0c;怎么能给自己项目来一套呢 环境信息 tdstdsdeMacBook-Pro demo-doc % node -v v14.18.1 tdstdsdeMacBook-Pro demo-doc % npm -v 6.14.15硬件信息 型号名称&#xff1a;MacBook Pro版本&#xff1a; 12.6.9芯片&…

QT自定义标题栏窗口其二:实现拖动及可拉伸效果 + 顶部全屏/侧边半屏

1、效果 2、核心代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent<

yolov10训练自己的数据集(没有显卡的替代方案)

1.没有显卡的替代方案 robflow https://github.com/tensorflow/models/tree/master/official 模型训练替代方案&#xff1a;嘉楠开发者社区

基于鲸鱼优化的DSN弱栅栏覆盖算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 for t1:Itersfor i1:Num%目标函数更新[pa(i),fgai] fitness(xwoa(…

全网最全!25届最近5年上海大学自动化考研院校分析

上海大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试科目…

Linux计划任务与日志

计划任务 主要用于完成一些周期性任务及定时任务&#xff0c;Windows中也有该功能&#xff1a; 单次调度执行 yum install -y at安装at工具&#xff0c;systemctl start atd启动服务&#xff0c;使用方法为at 选项 时间 执行内容时间可以自由设置&#xff0c;开启的栏目中输…

【SpringBoot + Vue 尚庭公寓实战】地区信息管理接口实现(九)

【SpringBoot Vue 尚庭公寓实战】地区信息管理接口实现&#xff08;九&#xff09; 文章目录 【SpringBoot Vue 尚庭公寓实战】地区信息管理接口实现&#xff08;九&#xff09;1、业务说明2、数据逻辑模型3、接口实现3.1、查询省份信息列表3.2、根据省份ID查询城市信息列表3…