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函数求一常微分方程解析解相关推荐

  1. 【MATLAB自带的svmtrain和libsvm中的svmtrain函数的区别】

    MATLAB自带的svmtrain和libsvm中的svmtrain函数的区别 libsvm中的svmtrain是mex文件,调用c运行,由于MEX文件执行效率高,故matlab中如果有文件重名的话, ...

  2. python自带的sum()函数和numpy库中的sum()函数的区别

    在学习<机器学习实战>一书的第十章时,对 return np.sqrt(sum(np.power(vecA - vecB, 2))) 这样一条语句输出的结果老是不对,明明想要输出的是对两个 ...

  3. java中函数的调用,java中如何调用函数

    java动态调用函数,Java 中使用动态代码,java函数调用,java中如何调用函数 如何在 Java 中调用 C 函数 宗薇 [期刊名称]<网络新媒体技术> [年(卷),期]2000 ...

  4. python中lambda函数if用法-Python中关于Lambda函数的使用总结

    lambda表达式是一种匿名函数,对应python中的自定义函数def,是定义某个函数时比较高级的一种写法.作为python初学者,本文整理了lambda的一些基本用法和特点. lambda和def的 ...

  5. 频域串联滞后校正matlab,自动控制原理实验七基于MATLAB控制系统频域法串联校正设计.doc...

    自动控制原理实验七基于MATLAB控制系统频域法串联校正设计.doc 实验七 基于MATLAB控制系统频域法串联校正设计 一.实验目的 (1)对给定系统设计满足频域或时域指标的串联校正装置: (2)掌 ...

  6. MATLAB解决线性规划问题,学会使用linprog函数,在一个实例中演示linprog函数各参数的用法

    最近接触到了一个线性规划的题目,尝试用MATLAB解决,动手前想了很多思路,上网搜索了一下发现MATLAB中有专门的linprog函数专门解决线性规划问题,了解学习后果然十分方便.事实上,绝大部分的线 ...

  7. mysql数据库求平均值的函数_使用MySQL中的AVG函数求平均值的教程

    MySQL的AVG函数是用来求出各种记录中的字段的平均值. 要了解AVG功能考虑EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl; + ...

  8. html实现log函数,math。h中的log函数的应用

    以10为底的log函数: 形式为 double  log10(double  x) 以e为底的log函数(即 ln)double log (double x) 如何表达log 以a为底b的对数: 用换 ...

  9. python求一组数中最大数_python如何求一组数的最大值?_后端开发

    php中session用法详解_后端开发 PHP中的session默认情况下是使用客户端的Cookie,当客户端的Cookie被禁用时,会自动通过[Query_String]来传递,其中[sessio ...

  10. python中匿名函数的作用_Python 中的匿名函数,你会用吗

    原标题:Python 中的匿名函数,你会用吗 概念 我们从一个例子引入. 这里有一个元素为非空字符串的列表,按字符串最后一个字母将列表进行排序.如果原列表是 ['abc', 'g', 'def'],则 ...

最新文章

  1. (已解决)ImportError attempted relative import with no known parent package
  2. 面试真题:搜索旋转数组
  3. python语法错误常见原因_python3中open()的语法错误,不知道原因
  4. shell编程详解(一)
  5. 加载elementor时出现问题_不锈钢管在焊接时出现问题要怎么解决?
  6. 【Fudan DISC】一种无监督下利用多模态文档结构信息帮助图片-句子匹配的采样方法...
  7. Windows server 2019 - Raid1 搭建+测试
  8. ../bin/testCurveFitting 出现的错误以及解决办法
  9. 组合使用Memento模式与Command模式实现多级Redo和Undo
  10. PHP+mysql共享自行车租赁管理系统
  11. SEODONG Medical推出创新干眼症治疗仪器,深受海外消费者好评
  12. ios 提交错误 ITMS-90096
  13. 口袋妖怪金心银魂详细图文攻略(下)及游戏下载
  14. 赛效:Xmind思维导图怎么用 新手使用教程分享
  15. 文件打包zip 下载
  16. 华为鸿蒙pc系统试用版,华为开源操作系统 鸿蒙OS 升级版曝光,打通PC等一大批硬件...
  17. hdu 1232 并查集
  18. 为2020年的第一场雪锦上添花:用 matplotlib 绘制雪花和雪景
  19. 与Servlet斗智斗勇
  20. 华为初识IoT最全学习笔记

热门文章

  1. 手机不能上网原因分析及检测手段
  2. 计算机硬件选购与市场调查实验报告,计算机组装与维护实训报告范例-20210527010902.docx-原创力文档...
  3. linux下使用iptables NAT上网
  4. oracle 之除数不为0
  5. linux 中gnu的含义是,GNU是什么意思
  6. 如何将CHM文件翻译成中文
  7. 修改网站背景图html代码,HTML中更换或添加网站背景图片的代码怎么写?(示例)...
  8. thinkpad e480安装win7
  9. win10计算机磁盘图标,Win10系统硬盘图标怎么更换?Win10系统自定义硬盘图标的方法...
  10. 用flutter写一个抖音是什么体验?