第7章 符号计算——7.9 符号微分方程求解

简介: 第7章 符号计算——7.9 符号微分方程求解

7.9  符号微分方程求解


从数值计算角度看,与初值问题求解相比,微分方程边值问题的求解显得复杂和困难。对于应用数学工具去求解实际问题的科研人员来说,此时不妨通过符号计算指令进行求解尝试。因为对于符号计算来说,不论是初值问题还是边值问题,其求解微分方程的指令形式都相同,且相当简单。

当然,符号计算可能花费较多的计算机资源,可能得不到简单的解析解或封闭形式的解,甚至无法求解。既然没有万能的微分方程一般解法,那么,求解微分方程的符号法和数值法就有很好的互补作用。

函数dsolve用来求常微分方程的符号解。在方程中,用大写字母D表示一次微分,D2D3分别表示二次、三次微分运算。以此类推,符号D2y表示d2y/dt2。函数dsolved后面的字符当作因变量,并默认所有这些变量对符号t进行求导。函数dsolve的调用格式如下。

● r=dsolve('eq1,eq2,…','cond1,cond2,…','v'):求由eq1,eq2,…指定的常微分方程的符号解。常微分方程以变量v作为自变量,参数cond1,cond2,…用于指定方程的边界条件或者初始条件。如果v不指定,将默认t为自变量。

● r=dsolve('eq1','eq2',…,'cond1','cond2',…,'v'):求由eq1,eq2,…指定的常微分方程的符号解。这些常微分方程都以v作为自变量。这些单独输入的方程的最大允许个数为12。其他参数与上一种调用方式相同。微分方程的初始条件或边界条件都以变量v作为自变量,其形式为y(a)=bDy(a)=b,其中y是微分方程的因变量,ab是常数。如果指定的初始条件和边界条件比方程中的因变量个数少,那么所得的解中将包含积分常数C1C2等。


dsolve函数的输出结果同solve函数类似,既可以用和因变量个数相同数目的输出参数分别接收每个变量的解,也可以把方程的解写入一个结构数组中。


7-34:符号微分方程求解示例。

在命令行窗口中输入:

syms a b x(t);
f = sym(a * diff(x, t) + b * x == 0)
dsolve(f)

输出结果:

f(t) =
a*diff(x(t), t) + b*x(t) == 0
ans =
C1*exp(-(b*t)/a)

在命令行窗口中输入:

dsolve(f, 'x(0) = 1')

输出结果:

ans =
exp(-(b*t)/a)


在命令行窗口中输入:

dsolve(f, 'x(0) = 1', 'm')

输出结果:

ans =
exp(-(b*m)/a)


在命令行窗口中输入:

clear
syms x(t) y(t);
f1 = sym(diff(x, t) - 3 * x + 2 * y == 0)
f2 = sym(diff(y, t) - 2 * x + y == 0)
[x, y] = dsolve(f1, f2)

输出结果:

f1(t) =
2*y(t) - 3*x(t) + diff(x(t), t) == 0
f2(t) =
y(t) - 2*x(t) + diff(y(t), t) == 0
x =
2*C1*exp(t) + C2*(exp(t) + 2*t*exp(t))
y =
2*C1*exp(t) + 2*C2*t*exp(t)

在命令行窗口中输入:

[x, y] = dsolve(f1, f2, 'x(0) = -1', 'y(0) = 1')

输出结果:

x =
- exp(t) - 4*t*exp(t)
y =
exp(t) - 4*t*exp(t)


提示:dsolve函数并不总能得到显式解,如果不能得到显式解,则dsolve函数会尝试求隐式解。如果也不能够得到隐式解,则应当采用ODE来求微分方程的数值解。


相关文章
|
Web App开发 存储 监控
|
7月前
|
安全 Linux
安装EPEL Repository Centos 7.9
记住,行走在Linux的世界,把“学习”作为你不可或缺的随身宝典。今天你学会了如何将EPEL这座外来的宝库接入你的系统,明天,你或许就能在这座宝库中发现一款能领你走向Linux大师之路的神器。
525 7
python并发执行request请求
选择哪种并发方式取决于我们的具体需求。对于I/O密集型任务,多线程或异步I/O通常是更好的选择;对于CPU密集型任务,多进程可能是更好的选择。此外,异步I/O通常比多线程具有更好的性能,特别是在高并发的网络应用中。
|
存储 监控 安全
智慧社区可视化解决方案:科技引领社区服务与管理新篇章
智慧社区通过现代科技整合区域资源,提升治理和服务水平,为居民提供便捷、高效、安全的生活环境。其特点包括科技赋能、资源整合和以人为本,旨在实现社区现代化管理,提高居民满意度。未来将应用更多创新技术,推动社区治理现代化。
632 16
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
433 1
|
传感器 监控 数据可视化
手把手教你用IoT设备监控家庭环境数据
本实验带您体验如何通过六合一传感器(温度、湿度、二氧化碳、PM2.5、PM10、甲醛)实现家庭环境数据实时采集,并搭建可视化大屏实时监控。
|
JSON 数据格式
Sublime Text 查找的内容 高亮显示
Sublime Text 查找的内容 高亮显示
1768 0
Sublime Text 查找的内容 高亮显示
|
存储 人工智能 弹性计算
倚天使用|倚天性能优化—YCL AI计算库在resnet50上的优化
本文介绍了x86软件迁移到Arm过程中可能遇到的弱内存序问题的解决方案,解析了弱内存序问题的根因,介绍了Hawkeyes的架构和实现原理。欢迎有需求的团队发送邮件咨询
|
存储 SQL 测试技术
Entity Framework Core 中的存储过程超厉害!从定义到调用全攻略,提升性能与安全性!
【8月更文挑战第31天】在现代软件开发中,数据库操作效率至关重要。Entity Framework Core(EF Core)作为强大的对象关系映射(ORM)框架,支持存储过程,可提升数据库操作的性能、安全性和可维护性。本文详细介绍如何在 EF Core 中定义、配置及调用存储过程,并提供最佳实践建议,包括性能优化、安全性增强、代码可维护性提升以及参数化查询等。通过遵循这些指导原则,开发者能够充分利用存储过程的优势,显著提高应用程序质量和性能。附带完整示例代码,展示从定义实体类到调用存储过程的全过程。
946 0
|
文字识别 并行计算 JavaScript
PaddleOCR + Django 实现一个OCR在线识别网站,一起来玩呀
除了PaddleOCR之外,之前还介绍过一些其它好玩的开源项目,例如老照片修复 Bringing-Old-Photos-Back-to-Life 、黑白照片上色DeOldify 。因此,最近准备启动一个项目,做一个在线网站,将之前一些好玩的功能都陆续集成在这个网站中
PaddleOCR + Django 实现一个OCR在线识别网站,一起来玩呀