当前位置: 首页 > news >正文

Fourier 级数展开(案例:级数展开 AND 求和)

前言

理论依据如上图所示。

首先我们需要定义了一个名为fseries的函数,用于计算函数的傅里叶级数展开。

函数功能

计算函数f(x)在区间[a,b]上的傅里叶级数展开式,返回前n项的系数和展开后的表达式。

参数说明

  • 输入:
    • f:需要展开的函数表达式
    • x:自变量
    • n:展开的项数
    • a,b:展开区间(默认[-pi, pi]
  • 输出:
    • A:傅里叶级数的余弦项系数(包括常数项)
    • B:傅里叶级数的正弦项系数
    • F:展开后的傅里叶级数表达式

代码逐行解释

函数定义

代码:

function [A,B,F]=fseries(f,x,n,a,b)

解释:定义函数fseries,指定输入输出参数

参数处理

代码:

if nargin==3,a=-pi;b=pi;end

解释:若只输入 3 个参数,默认展开区间为[-pi, pi]

计算区间长度

代码:

L=(b-a)/2;

解释:计算区间半长度,用于傅里叶级数的周期转换

变量替换(区间映射)

代码:

if a+b,f=subs(f,x+L+a);end

解释:

任意区间[a,b]映射到标准区间[-L,L],便于统一计算

  • 映射公式:x' = x + L + a

初始化系数和展开式

代码:

A=int(f,x,-L,L)/L;B=[];F=A/2;

解释:

  • 计算常数项系数A0(傅里叶级数中的a0/2项)
  • 初始化正弦系数数组B
  • 初始化展开式F,从常数项A/2开始

计算各阶傅里叶系数并构建展开式

代码:

for i=1:nan=int(f*cos(i*pi*x/L),x,-L,L)/L;  % 计算余弦项系数anbn=int(f*sin(i*pi*x/L),x,-L,L)/L;  % 计算正弦项系数bnA=[A,an];                          % 将an添加到系数数组AF=F+an*cos(i*pi*x/L)+bn*sin(i*pi*x/L);  % 累加傅里叶项
end;

解释:

  • 循环计算n项的余弦系数an和正弦系数bn
  • 系数计算公式符合傅里叶级数的定义:
    • an = (1/L)∫f(x)cos(iπx/L)dx (积分区间[-L,L]
    • bn = (1/L)∫f(x)sin(iπx/L)dx (积分区间[-L,L]
  • 逐步构建傅里叶级数展开式F

还原变量(逆映射)

代码:

if a+bF=subs(F,x,x-L-a);
end

解释:将变量从标准区间[-L,L]映射回原区间[a,b],得到最终的展开式

具体实现步骤

  1. 处理输入参数,设置默认区间
  2. 将任意区间映射到标准区间简化计算
  3. 按照傅里叶级数定义计算各阶系数
  4. 构建级数展开式并映射回原区间

使用时,需要传入符号函数f、自变量x和展开项数n,可指定展开区间[a,b],函数会返回系数数组和展开后的表达式。

完整代码

注意:这是两个文件,不是一个!!!

&&  test.m
clc,clear;
syms x;
f=x*(x+pi)*(x+2*pi);
[A,B,F]=fseries(f,x,12,0,2*pi);
F
%% fseries.m
function [A,B,F]=fseries(f,x,n,a,b)
if nargin==3,a=-pi;b=pi;end
L=(b-a)/2;
if a+b,f=subs(f,x+L+a);end
A=int(f,x,-L,L)/L;B=[];F=A/2;
for i=1:nan=int(f*cos(i*pi*x/L),x,-L,L)/L;bn=int(f*sin(i*pi*x/L),x,-L,L)/L;A=[A,an];F=F+an*cos(i*pi*x/L)+bn*sin(i*pi*x/L);
end;
if a+bF=subs(F,x,x-L-a);
end

http://www.xdnf.cn/news/1399519.html

相关文章:

  • Prompt Engineering:高效构建智能文本生成的策略与实践
  • 单例模式的mock类注入单元测试与友元类解决方案
  • Android15适配16kb
  • ros2 foxy没有话题问题解决
  • Axios 实例配置指南
  • Keil5 MDK_541官网最新版下载、安装
  • 从 0 到 1 构建零丢失 RabbitMQ 数据同步堡垒:第三方接口数据零丢失的终极方案
  • comfUI背后的技术——VAE
  • 线性代数理论——状态空间
  • 聊一聊耳机串扰-Crosstalk
  • Vue常用指令和生命周期
  • 118、【OS】【Nuttx】【周边】效果呈现方案解析:作用域?
  • 生成一份关于电脑电池使用情况、健康状况和寿命估算的详细 HTML 报告
  • 软考中级习题与解答——第一章_数据结构与算法基础(2)
  • 【Redisson 加锁源码解析】
  • VuePress添加自定义组件
  • 【MySQL数据库】索引 - 结构 学习记录
  • 加速智能经济发展:如何助力“人工智能+”战略在实时视频领域的落地
  • Swift 解法详解:LeetCode 367《有效的完全平方数》
  • Kafka入门
  • 开源 C++ QT Widget 开发(八)网络--Http文件下载
  • 《微服务架构从故障频发到自愈可控的实战突围方案》
  • CSDN博客语法(不常用但有用)
  • 谷歌 “Nano Banana“ 深度解析:AI 图像的未来是精准编辑,而非从零生成
  • ⚡ Linux find 命令参数详解
  • MySQL基础理解入门
  • 嵌入式硬件电路分析---AD采集电路
  • Spring Boot 自动配置原理深度解析:从启动流程到监听机制
  • 【Java EE进阶 --- SpringBoot】Spring Web MVC(Spring MVC)(二)
  • 设计模式之代理模式!