原文:https://mp.weixin.qq.com/s/COpYKxQDMhqJRuMK2raMKQ

  微分方程指含有未知函数及其导数的关系式,解微分方程就是找出未知函数。未知函数是一元函数的,叫常微分方程;未知函数是多元函数的,叫做偏微分方程。常微分方程有时也简称方程。微分方程是一门复杂的学科,对于常微分方程来说,可以使用特征值和特征向量的知识求解。

 

  相关前置知识:

    微分方程:单变量微积分11——常微分方程和分离变量

    泰勒公式:单变量微积分30——幂级数和泰勒级数

    泰勒公式在0点展开的原因:多项式函数能够拟合非线性问题原理

    求逆矩阵:线性代数笔记8——求解逆矩阵

    求行列式:线性代数20——行列式和代数余子式

    特征值和特征向量:线性代数22——特征值和特征向量

      矩阵对角化:线性代数笔记23——矩阵的对角化和方幂

常微分方程的一般解法

  根据概念构造一个常微分方程:

  目标是求得原函数u=u(t)的具体形式。通过积分求解:

  这就是最终答案的通解,C是任意常数。实际上这种解法就是利用了不定积分的知识:

  

  如果du/dt=u,可以使用分离变量法的求解方式:

  也就是说,当函数的导数是函数本身的时候,这个函数就是型如Aet的函数,由于A=eC是任意常数,所以经常用C代替A,写成u=Cet的形式。

  同理,对于du/dt=λu,微分方程的解是u(t)=Ceλt。当t=0时:

  由于C是任意常数,因此可以取C=u(0),得到u(t)= u(0)eλt,这样做可以去掉常数C。在实际问题中,u可以表示关于时间t的函数,对于时间来说,通常可以把t=0看作初始条件。

常微分方程与矩阵

  现在将常微分方程扩展为常微分方程组,u1=u1(t),u2=u2(t),初始条件是t=0,初始值是u(0)=(1,0),求解微分方程:

  可以把微分方程组写成向量矩阵的形式:

  相当于将常微分方程中转换成了du/dt = Au的线性形式。

常微分方程的线性代数解法

  对于du/dt = Au来说,u1和u2之间存在耦合(没有耦合就没必要写成方程组了),A表示它们的耦合关系:

  A可以用特征值和特征向量对角化,因此方程的解和矩阵A的特征值和特征向量存在关联关系。先求矩阵A的特征值。

  或许你可以马上看出A是个奇异矩阵,因此一个特征值是λ1=0。特征值之和是矩阵的迹,迹是矩阵主对角线元素和,因此可以求得另一个特征值是λ2=(-1-2)-0=-3。

  当然也可以用正统的方法求解:

  接下来根据特征方程求得特征向量。

特解

  微分方程组有两组特解:

  这是两个纯指数解的组合。需要注意的是,这里x1和x2都是二维向量,因此v1和v2也是二维的。

  来验证一下v1,如果u=v1是方程的解,把v1代入原方程:

  只要验证①=②是否成立就可以了,假设等式成立:

  x1和λ1是Ax=λx的一组特征向量和特征值,因此①=②成立,v1是微分方程的解。同理,v2也是微分方程的解。

通解

  对于du/dt = Au来说,如果v1和v2是方程的解,那么它们的线性组合也是方程的解,因此微分方程的通解是:

  验证的方法和验证特解类似:

  只要验证③=④是否成立就可以了,假设等式成立:

  x1和λ1是Ax=λx的一组特征向量和特征值,因此⑤成立。同理,⑥也成立,因此通解成立。

  最后将λ和x的值代入通解:

  如果没有初始条件,到这里就结束了,这就是u(t)的形态。本例给出了初始值,可以由此继续计算出C1和C2

  当t→∞时:

  随着t的增加,u(t)逐渐收敛到一个定值,我们称u(t)为稳态。

  通解指出了当A是2×2矩阵时u(t)达到稳态的条件:A的其中一个特征值是0,且另一个特征值小于0(如果是复数,则复数的实部小于0)。如果λ1=0, λ2>0,u(t)是发散的。

解耦

  回顾上一节的内容,在通过初始值求解C的时候:

  如果用S表示特征向量矩阵,则上式可以写成Sc=u(0),即通过Sc=u(0)可以求得c。

  常微分方程组du/dt = Auu=(u1, u2),u1, u2是两个互相耦合的未知函数,A表明了它们的耦合关系,求解微分方程组的关键是如何解耦,而解耦的方式正是利用特征值和特征向量。现在的问题是,能否把微分方程的解表示成S和Λ的形式(Λ是特征值矩阵,参考上一章内容)?

  既然u是通过A耦合的,A又能通过S和Λ对角化(A=SΛS-1),因此u可以用特征向量矩阵S解耦,令u=Sv,v(t)是某个未知的常微分方程组:

  S是常矩阵,因此:

  根据上一章矩阵对角化的内容:

  这实际上是得到了没有耦合的新方程组:

  每个方程都可以套用一开始讲过的内容:du/dt=λu,微分方程的解是u(t)=Ceλt,再代入初始条件t=0,u(t)=u(0)eλt

  将二者合并:

  v(0)的具体值我们不知道也不关心,只知道是个常向量,Sc=u(0),c是任意常向量,设c=v(0):

  更进一步:

  接下来解释为什么会得到这个结论。

矩阵指数exp(At)

  A是矩阵,eAt是以矩阵为指数的表达式,它代表什么意思呢?

  我们知道f(x)在x=0点处的泰勒展开式:

  ex在x0=0点处的泰勒展开式是:

  0的阶乘是1。展开式是收敛的,越靠后的项对总体的影响越小,越接近于0。证明起来较为容易:

  因此ex是收敛的。

  同样,eAt也在At=O点处进行泰勒展开,注意这里的OA的同阶零矩阵,eO等于单位矩阵:

  eAt也是收敛的。

  上一章已经讲过矩阵的对角化:

  代入到eAt中:

  中间的一大堆正好是e∧t的泰勒展开式,因此eAt最终可以写成:

  这就是矩阵指数的公式,当然,上式成立的前提是A可以对角化,即An×n存在n个独立的特征向量。

  最后再来看看e∧t是什么。

  和通解的形式一致,如果有初始值,可以根据初始值计算出具体的C。

二阶常微分方程

  现在有一个二阶常微分方程:

  求解时需要把方程转换成矩阵的形式:

  这就又变成了du/dt=Au的形式,可以用矩阵直接求解。

综合示例

  求解三阶常微分方程并构建eAt

  接下来需要求得A的特征值和特征矩阵。根据特征方程可得到:

  接下来通过3个特征值求的特征向量:

  第1个特征向量的特解是:

  类似的方式求得另外两个特征向量:

  u(t)的通解:

  最后来构建eAt

  

  

 相关前置知识:

    微分方程:单变量微积分11——常微分方程和分离变量

    泰勒公式:单变量微积分30——幂级数和泰勒级数

    泰勒公式在0点展开的原因:多项式函数能够拟合非线性问题原理

    求逆矩阵:线性代数笔记8——求解逆矩阵

    求行列式:线性代数20——行列式和代数余子式

    特征值和特征向量:线性代数22——特征值和特征向量

      矩阵对角化:线性代数笔记23——矩阵的对角化和方幂


  作者:我是8位的

  出处:http://www.cnblogs.com/bigmonkey

  本文以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,非商业用途!

  扫描二维码关注作者公众号“我是8位的”

线性代数笔记24——微分方程和exp(At)的更多相关文章

  1. JAVA自学笔记24

    JAVA自学笔记24 1.能使用同步代码块就使用同步代码块,除非锁对象是this,就可以考虑使用同步方法.静态方法的锁是类的字节码对象. 2.JDK5新特性 1)接口Lock void Lock()/ ...

  2. 线性代数笔记13——Ax=b的通解

    关于最简行阶梯矩阵和矩阵秩,可参考<线性代数笔记7——再看行列式与矩阵> 召唤一个方程Ax = b: 3个方程4个变量,方程组有无数解,现在要关注的是b1b2b3之间满足什么条件时方程组有 ...

  3. 【线性代数】6-3:微分方程的应用(Applications to Differential Equations)

    title: [线性代数]6-3:微分方程的应用(Applications to Differential Equations) categories: Mathematic Linear Algeb ...

  4. 【线性代数】2-4:矩阵操作(Matrix Operations)

    title: [线性代数]2-4:矩阵操作(Matrix Operations) toc: true categories: Mathematic Linear Algebra date: 2017- ...

  5. 线性代数之——微分方程和 exp(At)

    本节的核心是将常系数微分方程转化为线性代数问题. \[\frac{du}{dt}=\lambda u \quad 的解为 \quad u(t) = Ce^{\lambda t}\] 代入 \(t=0\ ...

  6. Linux实战教学笔记24:SSH连接原理及ssh-key

    目录 第二十四节 SSH连接原理及ssh-key讲解 第1章 SSH服务 1.1 ssh介绍 1.2 知识小结 第2章 ssh结构 2.1 SSH加密技术 第3章 ssh服务认证类型 3.1 基于口令 ...

  7. Ext.Net学习笔记24:在ASP.NET MVC中使用Ext.Net

    在前面的笔记中已经介绍了如何在ASP.NET WebForm中使用Ext.Net,由于这个系列一直在WebForm中使用,所以并没有涉及到ASP.NET MVC中的用法. 如果你要在ASP.NET M ...

  8. Java学习笔记24(Map集合)

    Map接口: Map接口与Collection接口无继承关系. 区别:Collection中的元素是孤立的,一个一个存进去的. Map作为一个映射集合,每一个元素包含Key-value对(键-值对). ...

  9. 线性代数笔记10——矩阵的LU分解

    在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积).LU分解主要应用在数值分析 ...

随机推荐

  1. 记录开发基于百度地图API实现在地图上绘制轨迹并拾取轨迹对应经纬度的工具说明

    前言: 最近一直在做数据可视化方面的工作,其中平面可视化没什么难度,毕竟已经有很多成熟的可供使用的框架,比如百度的echart.js,highcharts.js等.还有就是3D可视化了,整体来说难度也 ...

  2. Python中Pyyaml模块的使用

    一.YAML是什么 YAML是专门用来写配置文件的语言,远比JSON格式方便. YAML语言的设计目标,就是方便人类读写. YAML是一种比XML和JSON更轻的文件格式,也更简单更强大,它可以通过缩 ...

  3. 松软科技web课堂:随机Math.random()

    Math.random() 返回 0(包括) 至 1(不包括) 之间的随机数: 实例 Math.random(); // 返回随机数 JavaScript 随机整数 Math.random() 与 M ...

  4. Dynamics 365 Customer Enagement中的更改跟踪(change tracking)

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  5. Android框架式编程之ViewModel

    一.ViewModel介绍 ViewModel类是被设计用来以可感知生命周期的方式存储和管理 UI 相关数据.ViewModel中数据会一直存活即使 Activity Configuration发生变 ...

  6. RMAN RECOVER TABLE 功能是 Oracle Database 12c 的新增功能 (Doc ID 1521524.1)

    RMAN RECOVER TABLE Feature New to Oracle Database 12c (Doc ID 1521524.1) APPLIES TO: Oracle Database ...

  7. redhat 6.5 更换yum源

    新安装了redhat6.5.安装后,登录系统,使用yum update 更新系统.提示: Loaded plugins: product-id, security, subscription-mana ...

  8. vue.set( target, key, value ) this.$set(对象获数组,要更改的具体数据,重新赋值)用法

    调用方法:Vue.set( target, key, value ) target:要更改的数据源(可以是对象或者数组) key:要更改的具体数据 value :重新赋的值 具体用法js代码: //设 ...

  9. Python生成requirements.txt方法

    在查看别人的Python项目时,经常会看到一个requirements.txt文件,里面记录了当前程序的所有依赖包及版本号,其作用是用来在另一个环境上重新构建项目所需要的运行环境依赖. require ...

  10. 进制转换器V1.0_Beta

    一.截图部分 二.代码部分: char2num() 作用:将字符转化成对应的数字        e.g.   '9'->9    'A'->10 int char2num(char ch) ...