matlab学习-第六、七章-微分方程部分

到了最麻烦的部分了,matlab比较重要的一点就是做计算,换句话说就是解方程。
经常会遇到非线性的、非齐次的、高次的、微分的、多元的方程组,哪些可以解,哪些不能解,程序怎么写,有没有近似解法,算法怎么设计,等等,都是问题,需要系统整理。
学习之后完成三个任务,整理方程求解方法、解决遇到的那个非线性方程组、解决泊松方程的求解。

极限计算

MATLAB 可以使用 limit 命令计算极限。最基本的使用方法就是输入你要计算的表达式。
MATLAB 将会帮你找出独立变量趋于零时的极限。
(isequal(A,k)可以判断两个值是否相等)

如果在特定的点就写成limit(f, a)
无穷就写成inf

左极限和右极限

在后面加left,或者right,注意还要加上变量名,即对哪个变量求极限:
a = limit(f,x,3,‘left’)

获得渐近线
略。。。

求导计算

命令为diff(),可以先写成表达式a=f(x),然后diff(a)

计算高阶导数:diff(f,n),n为阶数,diff的结果也可以赋值给变量来保存

指令subs(f,c),计算f(c)

具体等用到再说。。。。

dsolve命令

在 MATLAB 中我们可以使用 dsolve 命令求解符号微分方程
使用 dsolve 求某个方程的解的语法是 dsolve(‘equ’)
我们还能够为方程指定初始和边界条件,不管有多少条件,这些条件用逗号隔开并附带在“equ”后面,形式如dsolve(‘eqn’, ‘cond1’, ‘cond2’…)

可以注意下微分方程的写法:
在这里插入图片描述
这样的话可以处理大多数常见的微分方程。

常微分方程(ODE)求解

对于一般的情况,我们可以使用 dsolve 命令求解,只需把方程传递给它即可
与上面的方法相同

求出通解后,可以自己给C1、C2等值赋值,得到特解,方法是利用subs()函数
s = C1exp(at)
C1 = 2; a = 4;
f = subs(s) 注意一般情况下需要赋值给某个变量,可以是f,也可以是其他的
会得到 f = 2exp(4t)

意思是对于
C1和a,虽然工作区没有显示两个变量,但是仍然是有名字的变量,赋值再subs,会自动的得到特解

有边界条件时,直接写在dsolve后面, 格式类似:
dsolve(‘Dy = y*t/(t-5)’,‘y(0) = 2’)
dsolve(‘D2y - y = 0’,‘y(0) = -1’,‘Dy(0) = 2’)

方程组和相平面图

开始解决方程组的问题,就是把多个方程写在dsolve里面
相图就略了,估计用不到,,,,,


使用ODE23 和ODE45 求解一阶方程

这里的格式一下给我整蒙了。。。书上的例子是先写了个函数,然后用ode23什么什么的,实在没看懂,还是先对照着官方的文档来学习一下。

1、[t,y] = ode23(odefun,tspan,y0)

①具有一个解分量的ode

这里,odefun是一个式子,tspan是一个范围,yo为初始条件,这个式子用来求微分方程组 y’=f(t,y) 从 t0 到 tf 的积分
也就是说,用这个指令时,方程必须能写成y’=f(t,y) 的形式,然后求出数值解。

这里产生了一个问题,求出来的t和y是离散的数组,那么怎么得到任意t下的y值??

②求解范德波方程
在这里插入图片描述
此方程为二阶方程、非线性、常微分方程
可以写成两个一阶微分方程:
在这里插入图片描述
这样可以写出方程组,方程组需要写成列向量的形式,每个元素是一个式子
这里也用到了函数形式,不知道为什么,还是试着写一写吧。。。。
在这里插入图片描述

格式如上,先写一个函数,返回值是eqn,会返回一个方程,或者方程组(列向量),如果是方程组,y就不止一个,y也是向量,y1、y2用数组访问规则来访问。
解方程时,格式是[t,y] = ode23(@函数名称,范围,初值)
最终得到的t是一个列向量,y是两列列向量

画图时,利用点线比较直观。。。

这里的vdp叫做句柄,这个概念在之前听过但是不知道是什么意思,有时间整理一下。

③向ODE函数传递额外的参数

ode23 仅适用于使用两个输入参数(t 和 y)的函数。但是,通过在函数外部定义参数并在指定函数句柄时传递这些参数,可以传入额外参数。例如如下的方程:
在这里插入图片描述
此时需要写一个函数odefcn(t,y,A,B),存在四个参量
然后给参量赋值后使用ode23即可
在这里插入图片描述
这里还有两个不太理解的地方,一个是dydt为什么是两行一列的列向量,另外一个是为什么有.*出现。。。。先放一下吧。这个例子主要就是演示了一下形式相同,参数不同的方程组的求解。

④具有宽松误差阈值的ode

与 ode45 相比,ode23 求解器可以更好地解算具有宽松误差容限的问题。
不知什么叫宽松误差容限,看了一眼例子好像也用不到,就算了。。。

二阶方程求解

现在我们看看如何求解二阶方程的数值解。这里使用的窍门是把一个方程分解为有两个方程的方程组。
不过刚刚的例子里,已经有过二阶方程的了。。。就先略过了。

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值