matlab画微分方程的矢量场图_一维波动方程数值解 Matlab 教程(从入门到出图)——3数值计算的Matlab实现...

3a4bfec0cd45d1eaee4301057356c5c8.png

最近在计算波动方程数值解时,发现网上很难找到比较详细实用的Matlab教程,所以我打算自己写一个,以一维弦的波动为例,从理论推导到代码实现,跟大家分享一下。

杜帅:一维波动方程数值解 Matlab 教程(从入门到出图)——1波动方程基本概念​zhuanlan.zhihu.com
51871a7ba58e1f9c096008a61aea3059.png
杜帅:一维波动方程数值解 Matlab 教程(从入门到出图)——2差分方程基本概念​zhuanlan.zhihu.com
51871a7ba58e1f9c096008a61aea3059.png
杜帅:一维波动方程数值解 Matlab 教程(从入门到出图)——3数值计算的Matlab实现​zhuanlan.zhihu.com
51871a7ba58e1f9c096008a61aea3059.png

前两篇已经讲了一维波动方程以及差分方法数值计算的基本知识,最后我们来看看如何用Matlab实现二阶偏微分方程的数值计算[1]

一、一维波动方程的差分形式

微分方程

我们将自变量 x 和 t 离散化,分别均分为

份,步长分别为
,其中第 i 个 x 和 第 j 个 t 对应的位移为

根据二阶差商的写法,改写为差分形式

整理得

这样等号右边都是关于时间

的位移,只有左边是关于
的。

而对于位置

,初始条件里已经全部给出,所以只需要带入上式就可以循环计算出所有结果。

边界条件的差分形式

位移边界条件

应力边界条件

差分形式

二、Matlab程序实现

1、参数离散化

c 

2、初始条件

我们设置初始位移 和初始速度均为零。

u = zeros(Nx, Nt);

3、循环计算

只需要从 j=2 开始循环时间,带入初始条件,计算下一时刻所有位置的位移。

其中二次差分可以利用Matlab的向量运算,避免再套循环。由于二次差分后少了两个元素,我们在两端补零即可,因为后边边界条件还会对两端进行修正,所以没有影响。

for 

4、边界条件

上边代码中采用一端固定一端自由的边界条件。

若两端自由,可改为

u

若右端守恒力,可改为

u

5、图像显示

画出不同时刻的位移图,并存为动画

h

d30663bcb1a8f4bbee9832883943a9bd.png

视频:

知乎视频​www.zhihu.com

教材推荐

高等应用数学问题的Matlab求解,豆瓣9.2分。

高等应用数学问题的MATLAB求解(豆瓣评分9.2)​book.douban.com

参考

  1. ^一维波动方程的数值解 http://wuli.wiki/online/W1dNum.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值