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

傅里叶谱方法-傅里叶谱方法求解二维浅水方程组和二维粘性 Burgers 方程及其Matlab程序实现

3.3.2 二维浅水方程组

二维浅水方程组是描述水波运动的基本方程之一。它主要用于描述近岸浅水区域内的波浪、潮汐等水动力学现象。这个方程组由两个偏微分方程组成,一个是质量守恒方程,另一个是动量守恒方程。浅水方程描述了具有自由表面、密度均匀、深度较浅的液体在重力作用下的流动过程, 用于研究潮波和河流,具体形式如下:
{∂η∂t=−∂(ηu)∂x−∂(ηv)∂y∂u∂t=−v∂u∂y−u∂u∂x−g∂η∂x∂v∂t=−u∂v∂x−v∂v∂y−g∂η∂y(3-34)\left\{\begin{array}{l} \frac{\partial \eta}{\partial t}=-\frac{\partial(\eta u)}{\partial x}-\frac{\partial(\eta v)}{\partial y} \\ \frac{\partial u}{\partial t}=-v \frac{\partial u}{\partial y}-u \frac{\partial u}{\partial x}-g \frac{\partial \eta}{\partial x} \\ \frac{\partial v}{\partial t}=-u \frac{\partial v}{\partial x}-v \frac{\partial v}{\partial y}-g \frac{\partial \eta}{\partial y} \end{array}\right.\tag{3-34} tη=x(ηu)y(ηv)tu=vyuuxugxηtv=uxvvyvgyη(3-34)
其中, η\etaη 代表水深, ttt 为时间, xxxyyy 是水平面上的坐标, u、vu 、 vuvxxxyyy 方向上的流速, ggg 为重力加速度。物理上,这个方程组描述了水波在浅水区域内的传播和运动。它假设水深相对于波长很小,即波长远大于水深,这样就可以近似将水流速度视为垂直于水深方向的,这被称为“浅水近似”。

在实际应用中,二维浅水方程组被广泛用于预测海洋和河流等水动力学现象。例如,可以用它来预测风浪的形成和演变,或者用它来优化海岸线防护结构的设计。

需要注意的是,二维浅水方程组是一种近似模型,它对真实的水动力学现象只能提供近似的描述,实际情况可能更加复杂。因此,在具体应用中,需要根据实际情况选择合适的模型并对其进行修正和调整。对方程组 (3-34) 的等号两边做 x−yx-yxy 空间上的二维傅里叶变换, 得到偏微分方程组:
{∂η^^∂t=−ikxF{F−1[η^^]F−1[u~^]}−ikyF{F−1[η~^]F−1[v^]}∂u^^∂t=−F{F−1[v^^]⋅F−1[ikyu^^]+F−1[u⃗^]⋅F−1[ikxu^]}−igkxη^^∂v^∂t=−F{F−1[u^]⋅F−1[ikxv^]+F−1[v^]⋅F−1[ikyv^]}−igkyη^^(3-35)\left\{\begin{array}{l} \frac{\partial \hat{\hat{\eta}}}{\partial t}=-\mathrm{i} k_x F\left\{F^{-1}[\hat{\hat{\eta}}] F^{-1}[\hat{\tilde{u}}]\right\}-\mathrm{i} k_y F\left\{F^{-1}[\hat{\tilde{\eta}}] F^{-1}[\hat{v}]\right\} \\ \frac{\partial \hat{\hat{u}}}{\partial t}=-F\left\{F^{-1}[\hat{\hat{v}}] \cdot F^{-1}\left[\mathrm{i} k_y \hat{\hat{u}}\right]+F^{-1}[\hat{\vec{u}}] \cdot F^{-1}\left[\mathrm{i} k_x \hat{u}\right]\right\}-\mathrm{i} g k_x \hat{\hat{\eta}} \\ \frac{\partial \hat{v}}{\partial t}=-F\left\{F^{-1}[\hat{u}] \cdot F^{-1}\left[\mathrm{i} k_x \hat{v}\right]+F^{-1}[\hat{v}] \cdot F^{-1}\left[\mathrm{i} k_y \hat{v}\right]\right\}-\mathrm{i} g k_y \hat{\hat{\eta}} \end{array}\right.\tag{3-35} tη^^=ikxF{F1[η^^]F1[u~^]}ikyF{F1[η~^]F1[v^]}tu^^=F{F1[v^^]F1[ikyu^^]+F1[u^]F1[ikxu^]}igkxη^^tv^=F{F1[u^]F1[ikxv^]+F1[v^]F1[ikyv^]}igkyη^^(3-35)
g=1g=1g=1, 初始条件为 η(x,y,0)=0.1⋅exp⁡(−x2/10−y2/10)+0.1\eta(x, y, 0)=0.1 \cdot \exp \left(-x^2 / 10-y^2 / 10\right)+0.1η(x,y,0)=0.1exp(x2/10y2/10)+0.1u(x,y,0)=v(x,y,0)=0u(x, y, 0)=v(x, y, 0)=0u(x,y,0)=v(x,y,0)=0, 用傅里叶谱方法计算上述方程的代码如下:

主程序代码:

clear all; close all;
L=40; N=64;
x=L/N*[-N/2:N/2-1]; y=x;
kx=2*pi/L*[0:N/2-1 -N/2:-1]; ky=kx;
[X,Y]=meshgrid(x,y);
[kX,kY]=meshgrid(kx,ky);
%初始条件
e=0.1*exp(-X.^2/10-Y.^2/10)+0.1;
et=fft2(e); ut=zeros(N^2,1); vt=zeros(N^2,1);
euvt=[et(:); ut; vt;];
%求解
t=[0 5 10 25]; g=1;
[t,euvtsol]=ode45('shallow_water',t,euvt,[],kX,kY,N,g);
%画图
for n=1:4subplot(2,2,n)mesh(x,y,real(ifft2(reshape(euvtsol(n,1:N^2),N,N))))axis([-20 20 -20 20 0.1 0.2]), title(['t=' num2str(t(n))])xlabel x, ylabel y, zlabel \eta, view(-80,45)
end

程序输出结果如图所示, 从 t=0t=0t=0 时刻开始, 一个三维高斯形水柱在重力的作用下坍塌, 并激起了向四周传播的圆形水波。
浅水方程的计算结果

3.3.3 二维粘性 Burgers 方程

Burgers方程是一种非线性偏微分方程,它最初由荷兰数学家J. M. Burgers在20世纪30年代提出,用于描述一维粘性流体中的流动行为。

Burgers方程在物理学中具有广泛的应用。它可以用于模拟一维粘性流体中的多种现象,如激波、涡旋、湍流等。在流体力学中,Burgers方程常用于模拟流体中的湍流现象,如湍流尾流、湍流边界层等。在量子场论中,Burgers方程被用于描述费米子系统中的量子涡旋。

Burgers方程还是一些数值方法和数学工具的基础,如Shocks-capturing方法、Lax-Friedrichs格式等。这些方法可以有效地处理Burgers方程中出现的激波等非线性现象,从而得到比较精确的数值解。

Burgers方程也是非线性动力学中一个重要的模型。它的解可能会出现奇点和激波等非线性现象,这些现象为非线性偏微分方程的研究提供了新的思路和挑战。通过对Burgers方程的研究,可以深入了解非线性动力学中的一些重要现象和性质。

此外,Burgers方程还被应用于宏观经济学中的一些问题,如经济增长、通货膨胀等。通过对Burgers方程的应用,可以揭示一些经济现象的本质规律和机制。

除了上述介绍的应用和研究方向,Burgers方程还有以下一些特点和性质:

Burgers方程是一种具有非线性扰动传递性的方程。这意味着,当一个扰动在Burgers方程中传播时,它会不断地变形和扩散,从而形成复杂的结构。

Burgers方程可以通过一些数学方法和技巧来求解。其中比较常用的方法包括Burgers方程的相似变换、行波解法和反演公式等。
Burgers方程的解可能会出现激波、奇点等非线性现象。这些现象具有一定的物理意义,并且对于解决实际问题具有重要的作用。

Burgers方程可以被看作是Navier-Stokes方程的一维版本,它描述了粘性流体中的一些基本特性和行为。因此,Burgers方程在流体力学中有着重要的应用和研究价值。

Burgers方程还可以被拓展到更高维度或者更复杂的情形下。例如,二维Burgers方程、Burgers-Fisher方程等。

总之,Burgers方程在物理学、数学和工程学等领域具有广泛的应用和研究价值,它的研究和应用也带动了非线性动力学和偏微分方程等领域的发展。

Burgers 方程有钟行孤波和扭波两种形式的行波解(如图)

二维粘性 Burgers 方程的形式如下:
∂u∂t=v(∂2∂x2+∂2∂y2)u−u(∂∂x+∂∂y)u(3-36)\frac{\partial u}{\partial t}=v\left(\frac{\partial^2}{\partial x^2}+\frac{\partial^2}{\partial y^2}\right) u-u\left(\frac{\partial}{\partial x}+\frac{\partial}{\partial y}\right) u\tag{3-36} tu=v(x22+y22)uu(x+y)u(3-36)
其中, uuu 代表速度, x、yx 、 yxy 为空间坐标, ttt 为时间, vvv 为粘性系数。对上式做二维傅里叶变换, 得:

∂u^^∂t=−v(kx2+ky2)u^^−F{F−1[u^]⋅F−1[i(kx+ky)u^^]}(3-37)\frac{\partial \hat{\hat{u}}}{\partial t}=-v\left(k_x^2+k_y^2\right) \hat{\hat{u}}-F\left\{F^{-1}[\hat{u}] \cdot F^{-1}\left[\mathrm{i}\left(k_x+k_y\right) \hat{\hat{u}}\right]\right\}\tag{3-37}tu^^=v(kx2+ky2)u^^F{F1[u^]F1[i(kx+ky)u^^]}(3-37)
v=0.01v=0.01v=0.01, 初始条件 u(x,y,0)=sech⁡(4x2+4y2)u(x, y, 0)=\operatorname{sech}\left(4 x^2+4 y^2\right)u(x,y,0)=sech(4x2+4y2), 傅里叶谱方法的代码如下:

主程序代码:

clear all; close all;
L=4; N=64;
x=L/N*[-N/2:N/2-1]; y=x;
kx=2*pi/L*[0:N/2-1 -N/2:-1]; ky=kx;
[X,Y]=meshgrid(x,y);
[kX,kY]=meshgrid(kx,ky);
K2=kX.^2+kY.^2;
%初始条件
u=sech(4*X.^2+4*Y.^2);
ut=fft2(u);
%求解
v=0.01; t=0:0.4:1.2;
[t,utsol]=ode45('burgers',t,ut(:),[],N,kX,kY,K2,v);
%画图
for n=1:4subplot(2,2,n)mesh(x,y,real(ifft2(reshape(utsol(n,:),N,N))))axis([-2 2 -2 2 0 1]), xlabel x, ylabel y, zlabel uview(46,20), title(['t=' num2str(t(n))])
end

程序执行结果如图所示,初始波形逐渐演变成激波,这是符合实际情况的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L46WfgOw-1680611827553)(https://mweb-1307664364.cos.ap-chengdu.myqcloud.com/2023/04/04/untitled12.png)]
当Burgers方程中的初始波形是单峰的、集中在某一区域内的时候,它会随着时间的推移而逐渐演变成为一个激波。这个现象可以通过分析Burgers方程的解得到解释。

在初始时刻,Burgers方程的初始波形会随着时间的推移而扩散,并逐渐变得平缓。然而,由于Burgers方程是一个非线性方程,波形在演化过程中会发生非线性的相互作用,这些相互作用会导致波形逐渐变得不规则,并在某些区域内出现奇点。当波形的斜率超过一定阈值时,这些奇点会形成激波,即波形在激波前是平缓的,但在激波后却是陡峭的。

激波的形成可以用物理学中的震荡现象来解释。当初始波形逐渐演化为激波时,波前的部分会受到高压的压缩,而波后的部分则会受到低压的拉伸,这样就形成了一个压缩波和一个展开波,它们相互作用,最终形成了一个陡峭的激波。

总之,Burgers方程中的初始波形逐渐演变为激波的现象,是由于非线性相互作用导致的,它在物理学和工程学等领域中有着广泛的应用。

相关文章:

傅里叶谱方法-傅里叶谱方法求解二维浅水方程组和二维粘性 Burgers 方程及其Matlab程序实现

3.3.2 二维浅水方程组 二维浅水方程组是描述水波运动的基本方程之一。它主要用于描述近岸浅水区域内的波浪、潮汐等水动力学现象。这个方程组由两个偏微分方程组成,一个是质量守恒方程,另一个是动量守恒方程。浅水方程描述了具有自由表面、密度均匀、深…...

算法训练营 - 广度优先BFS

目录 从层序遍历开始 N 叉树的层序遍历 经典BFS最短路模板 经典C queue 数组模拟队列 打印路径 示例1.bfs查找所有连接方块 Cqueue版 数组模拟队列 示例2.从多个位置同时开始BFS 示例3.抽象最短路类(作图关键) 示例4.跨过障碍的最短路 从层序遍历…...

​​​​​​​判断两个字符串是否匹配(1个通配符代表一个字符)

目录 判断两个字符串是否匹配(1个通配符代表一个字符) 程序设计 程序分析...

用css画一个csdn程序猿

效果如下&#xff1a; 头部 我们先来拆解一下&#xff0c;程序猿的结构 两只耳朵和头是圆形组成的&#xff0c;耳朵内的红色部分也是圆形 先画头部&#xff0c;利用圆角实现头部形状 借助工具来快速实现圆角效果 https://9elements.github.io/fancy-border-radius/ <div…...

Java多线程编程—wait/notify机制

文章目录1. 不使用wait/notify机制通信的缺点2. 什么是wait/notify机制3. wait/notify机制原理4. wait/notify方法的基本用法5. 线程状态的切换6. interrupt()遇到方法wait()7. notify/notifyAll方法8. wait(long)介绍9. 生产者/消费者模式10. 管道机制11. 利用wait/notify实现…...

Three.js教程:旋转动画、requestAnimationFrame周期性渲染

推荐&#xff1a;将NSDT场景编辑器加入你3D工具链其他工具系列&#xff1a;NSDT简石数字孪生基于WebGL技术开发在线游戏、商品展示、室内漫游往往都会涉及到动画&#xff0c;初步了解three.js可以做什么&#xff0c;深入讲解three.js动画之前&#xff0c;本节课先制作一个简单的…...

租车自驾app开发有什么作用?租车便利出行APP开发

在线租车APP有哪些优势&#xff0c;租车APP开发的基本功能&#xff0c;租车自驾app开发有什么作用?租车便利出行APP开发&#xff0c;租车服务平台小程序有哪些功能&#xff0c;租车软件开发需要多少钱&#xff0c;租车app都有哪些&#xff0c;租车平台定制开发&#xff0c;租车…...

linux shell 文件分割

split 按照 10m 大小进行分割 split -b 10m large_file.bin new_file_prefix...

智慧农业系统开发功能有哪些?

农业从古至今都是备受关注的话题&#xff0c;新时代背景下农业发展已经融合了互联网&#xff0c;数字化技术等新型发展方式&#xff0c;形成了农业物联网管控系统&#xff0c;让农业生产更加科技化、智能化、高效化&#xff0c;对农业可持续发展有巨大的推动作用。所以&#xf…...

【C语言】 指针的进阶 看这一篇就够了

目录 1.字符指针 2.数组指针 3.指针数组 4.数组传参和指针传参 5.函数指针 6.函数指针数组 7.指向函数指针数组的指针 8.回调函数 9.qsort排序和冒泡排序 1.字符指针 让我们一起来回顾一下指针的概念&#xff01; 1.指针就是一个变量&#xff0c;用来存放地址&#xff0c;地址…...

redis set list

Listlist: 插入命令&#xff1a;lpush / rpush 查看list列表所有数据(-1 表示最后一个)&#xff1a;lrange key 0 -1 查看列表长度(key 不存在则长度返回0 ): llen key list长度 获取下表 为 0 的元素 修改下标为0的元素&#xff0c;改为haha 移除列表的第一个元素 或最后一…...

如何解决DNS劫持

随着互联网的不断发展&#xff0c;DNS(域名系统)成为了构建网络基础的重要组成部分。而DNS遭到劫持&#xff0c;成为一种常见的安全问题。那么DNS遭到劫持是什么意思呢?如何解决DNS劫持问题呢?下面就让小编来为您一一解答。 DNS遭到劫持是什么意思? DNS遭到劫持指的是黑客通…...

【LeetCode】剑指 Offer(28)

目录 题目&#xff1a;剑指 Offer 54. 二叉搜索树的第k大节点 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 55 - I. 二叉树的深度 - 力…...

「ML 实践篇」模型训练

在训练不同机器学习算法模型时&#xff0c;遇到的各类训练算法大多对用户都是一个黑匣子&#xff0c;而理解它们实际怎么工作&#xff0c;对用户是很有帮助的&#xff1b; 快速定位到合适的模型与正确的训练算法&#xff0c;找到一套适当的超参数等&#xff1b;更高效的执行错…...

域名解析协议-DNS

DNS&#xff08;Domain Name System&#xff09;是互联网上非常重要的一项服务&#xff0c;我们每天上网都要依靠大量的DNS服务。在Internet上&#xff0c;用户更容易记住的是域名&#xff0c;但是网络中的计算机的互相访问是通过 IP 地址实现的。DNS 最常用的功能是给用户提供…...

分享:包括 AI 绘画在内的超齐全免费可用的API 大全

AI 绘画已经火出圈了&#xff0c;你还不知道哪里可以用嘛&#xff1f;我给大家整理了超级齐全的免费可用 API&#xff0c;包括 AI 绘画在内&#xff0c;有需要的小伙伴赶紧收藏了。 AI 绘画/AI 作画 类 AI 绘画&#xff1a;通过AI 生成图片&#xff0c;包括图生文、文生图等。…...

虹科新闻 | 虹科与Overland-Tandberg正式建立合作伙伴关系

虹科Overland-Tandberg 近日&#xff0c;虹科与美国Overland-Tandberg公司达成战略合作&#xff0c;虹科正式成为Overland-Tandberg公司在中国区域的认证授权代理商。未来&#xff0c;虹科将携手Overland-Tandberg&#xff0c;共同致力于提供企业数据管理和保护解决方案。 虹科…...

架构设计三原则

作为程序员&#xff0c;很多人都希望成为一名架构师&#xff0c;但并非简单地通过编程技能就能够达成这一目标。事实上&#xff0c;优秀的程序员和架构师之间存在一个明显的鸿沟——不确定性。 编程的本质是确定性的&#xff0c;也就是说&#xff0c;对于同一段代码&#xff0c…...

Android 性能优化——ANR监控与解决

作者&#xff1a;Drummor 1 哪来的ANR ANR(Application Not responding):如果 Android 应用的界面线程处于阻塞状态的时间过长&#xff0c;会触发“应用无响应”(ANR) 错误。如果应用位于前台&#xff0c;系统会向用户显示一个对话框。ANR 对话框会为用户提供强制退出应用的选项…...

Machine Learning-Ex3(吴恩达课后习题)Multi-class Classification and Neural Networks

目录 1. Multi-class Classification 1.1 Dataset 1.2 Visualizing the data 1.3 Vectorizing Logistic Regression 1.3.1 Vectorizing the cost function&#xff08;no regularization&#xff09; 1.3.2 Vectorizing the gradient&#xff08;no regularization&#…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...