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

傅里叶级数与傅里叶变换

背景

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

公式

  • 傅里叶级数:给定周期函数 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 的各种操作和快捷键,用户可以显著提高工作效率,专注于解决实际问…

HNU操作系统2020年期中考试试卷及参考答案

1.(15分) 什么是多道程序技术,它带来了什么好处? 答: 多道程序设计,就是在内存中存放多个进程来执行人们赋予计算机的任务,这些在内存中的多个进程共享计算机的硬件资源,如CPU&…

C++函数作为参数

C++函数作为参数 在C++中,函数作为另一个函数的参数是非常常见的做法,特别是在处理回调函数和泛型编程时。我们展示了如何在C++中将函数作为参数传递给另一个函数,包括普通函数、std::function 和 std::bind、lambda表达式以及类成员函数。每种方法都有其独特的优势,可以根…

shell脚本中set -e用途

在shell脚本中,set -e 是一个命令,用于设置shell的退出行为。具体来说,当在脚本中执行一个命令,并且该命令返回非零退出状态时(通常表示错误),set -e 会导致整个脚本立即退出,而不是…

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.刷新…

【loadrunner】生成指定长度随机字符串

#include “web_api.h” char* randstring(int slen) { char* result (char*)malloc(slen 1); //在loadrunner使用的C98语法&#xff0c;需要将所有定义都定义在函数头部&#xff0c;否则提示报错illegal statement termination char character_set[] "ABCDEFGHI…

IEC104文件传输协议

2024/6/19 20:25:07 IP Address 127.0.0.1 Port number 2404: (选择文件) T -> 68 11 08 00 18 00 7a 01 0d 00 01 00 00 00 00 01 00 00 01 2024/6/19 20:25:07 IP Address 127.0.0.1 Port number 2404: (文件准备就绪)R <- 68 13 18 00 0a 00 78 01 …

复分析——第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的用途&…

Web开发模式总结

Web开发模式总结如下&#xff1a; 一、基于服务器端渲染的传统Web开发模式 1. 介绍 服务器端渲染开发模式是指&#xff1a;服务器端通过字符串拼接&#xff0c;动态生成HTML结构和数据&#xff0c;交由客户端浏览器直接渲染的方式。客户端不需要使用Ajax等前后端交互技术额外…

[机器学习算法] 主成分分析

主成分分析&#xff08;Principal Component Analysis, PCA&#xff09;是一种用于降维和特征提取的统计方法。它可以将高维数据投影到较低维度的空间中&#xff0c;同时尽量保留数据的变异性。以下是详细的学习步骤&#xff0c;包括理论和实际操作。 一、了解PCA的基本概念 数…

看广告收益小游戏app平台搭建

搭建一个看广告收益小游戏APP平台是一个复杂且涉及多个方面的过程。以下是一个大致的搭建流程&#xff1a; 市场调研与定位&#xff1a; 首先&#xff0c;进行市场调研&#xff0c;了解目标用户群体的需求和偏好&#xff0c;以及现有市场的竞争情况123。根据调研结果&#xff0…

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、该串口…

【深度学习驱动流体力学】采集OpenFOAM仿真的流体力学数据送入到LSTM模型训练

具体参考上一篇文章: 【深度学习驱动流体力学】采集OpenFOAM仿真数据作为AI模型训练数据集与卷积神经网络搭建到预测(一站式完整代码实现) 原理介绍 数据处理与预处理 该代码首先导入必要的库,包括用于读取和处理VTK文件的pyvista,用于数值计算的numpy,用于路径操作的os,…

win10 安装PowerShell

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