我是靠谱客的博主 活力天空,最近开发中收集的这篇文章主要介绍用matlab自动dsolve函数求原函数,matlab中使用dsolve函数求一常微分方程解析解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

dsolve函数是matlab中自带的可以用来解决部分常微分方程的函数(方法),下面以物理学中的热传导问题为例展示如何使用这个函数。

热力学模型假设物体和恒温的环境接触,温度随时间的变化率和温差成正比,我们假设环境温度为m=20,物体的初始温度为100(刚好假设这个物体是烧开的沸水),比例系数k为-0.05,由此我们可以得到以下常微分方程:

y’ = k(y-m)

y0=100

k=-0.05

我们就可以把以上数学公式转换成matlab代码如下:

syms y(t)

eqn = diff(y,t) == -0.05*(y-20);

con = y(0) == 100;

yS = dsolve(eqn,con)

我们注意到,这里用eqn存储了微分方程的表达式,用cond存储了变量y的初始值。方程式用==表示等号,用diff(y,t)表示y关于t的一阶导数;初始条件表达式 用y(0)表示了y的初始值,并且将它与100用两个=连起来,并且把这个等式赋值给con这个变量。eqn和con正式dsolve函数所需要的两个变量。也就是我们常说的给定了方程和初始条件,就可以得到这个方程的解,我们运行之后,可以得到一下解析解:

yS =

80*exp(-t/20) + 20

非常漂亮,我们还可以把代码稍微修改一下,用字符串的形式来存储方程式和初始变量等式,用Dy来表示y’,此时我们可以改写matlab代码如下:

equa = 'Dy = -0.05*(y-20)';

cond = 'y(0) = 100';

ys = dsolve(equa,cond,'t')

注意到这个时候,dsovle函数增加了一个参数’t’,用来表示Dy是y对t的求导,我们同样可以得到运行结果如下:

ys =

80*exp(-t/20) + 20

可以看到,两种方法得到的结果是一样的,这样我们就完成了最简单的一个常微分方程解析解的求解。不过我们要注意的是,高等数学告诉我们只有特定形式的方程才具有解析解,因此使用dsolve方法有以下局限性:

仅有特定形式的微分方程(组) ,才有解析解;在没有解析解的微分方程(组)的时候dsolve 无能为力

最后

以上就是活力天空为你收集整理的用matlab自动dsolve函数求原函数,matlab中使用dsolve函数求一常微分方程解析解的全部内容,希望文章能够帮你解决用matlab自动dsolve函数求原函数,matlab中使用dsolve函数求一常微分方程解析解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部