本节的核心是将常系数微分方程转化为线性代数问题。

\[\frac{du}{dt}=\lambda u \quad 的解为 \quad u(t) = Ce^{\lambda t}\]

代入 \(t=0\),可得 \(u(0) = C\),因此有 \(u(t) = u(0)e^{\lambda t}\)。这是只有一个变量的情况,在线性代数里,我们扩展到 \(n\) 个方程的情况。

\[\frac{d\boldsymbol u}{dt}=A \boldsymbol u \quad 初始条件为向量 \quad \boldsymbol u(0)_{t=0} \]

注意,这里 \(A\) 是常矩阵,不随时间而改变。而且这些方程是线性的,如果 \(\boldsymbol u(t)\) 和 \(\boldsymbol v(t)\) 都是方程组的解,那么它们的线性组合 \(C\boldsymbol u(t)+D\boldsymbol v(t)\) 也是解,我们需要 \(n\) 个这样的常数来匹配方程组的初始条件。

1. \(\frac{d\boldsymbol u}{dt}=A \boldsymbol u\) 的解

其中一个解是 \(e^{\lambda t} \boldsymbol x\),\(\lambda\) 是矩阵 \(A\) 的特征值,而 \(\boldsymbol x\) 是特征向量。将这个解代入原方程,利用 \(A\boldsymbol x=\lambda \boldsymbol x\) 可得

\[\frac{d\boldsymbol u}{dt} = \lambda e^{\lambda t} \boldsymbol x = A e^{\lambda t} \boldsymbol x=A \boldsymbol u\]

这个解的所有部分都有 \(e^{\lambda t}\),当 \(\lambda>0\) 时,解会增长;当 \(\lambda<0\) 时,解会衰减。而当 \(\lambda\) 为虚数时,则它的实部决定解是增长还是衰减。

  • 例 1

求解 \(\frac{d\boldsymbol u}{dt}=A \boldsymbol u = \begin{bmatrix}0&1 \\ 1&0\end{bmatrix}\boldsymbol u,\boldsymbol u_0 = \begin{bmatrix}4 \\ 2\end{bmatrix}\)。

矩阵 \(A\) 的特征值为 1 和 -1,特征向量为 (1, 1) 和 (1, -1),因此两个纯指数解为:

\[\boldsymbol u_1(t) = e^{\lambda_1 t} \boldsymbol x_1 = e^t\begin{bmatrix}1 \\ 1\end{bmatrix}\]

\[\boldsymbol u_2(t) = e^{\lambda_2 t} \boldsymbol x_2 = e^{-t}\begin{bmatrix}1 \\ -1\end{bmatrix}\]

这些 \(\boldsymbol u\) 依然是矩阵的特征向量,它们满足 \(A\boldsymbol u_1 = \boldsymbol u_1\) 和 \(A\boldsymbol u_2 = -\boldsymbol u_2\),只不过是系数随着 \(t\) 改变罢了。方程组的全解为这些特解的线性组合。

利用初始条件我们可以确定出系数 \(C\) 和 \(D\)。

因此,我们可以通过以下三个步骤来求解 \(\frac{d\boldsymbol u}{dt}=A \boldsymbol u\)。

  • 将 \(\boldsymbol u_0\) 写成特征向量的线性组合,\(\boldsymbol u_0 = c_1 \boldsymbol x_1+\cdots+c_n \boldsymbol x_n\);
  • 将每个特征向量 \(\boldsymbol x_i\) 乘以 \(e^{\lambda_i t}\);
  • 全解就是 \(e^{\lambda t}\boldsymbol x\) 的线性组合,\(\boldsymbol u(t) = c_1 e^{\lambda_1 t}\boldsymbol x_1+\cdots+c_ne^{\lambda_n t} \boldsymbol x_n\)。

注意,如果两个特征值相同而只有一个对应的特征向量,那么我们就需要另外一个解 \(te^{\lambda t}\boldsymbol x\)。

  • 例 2

2. 二阶方程组

针对二阶方程 \(my''+by'+ky=0\),我们将之转化为矩阵形式,假设 \(m=1\)。

因此,我们需要先求解出矩阵的特征值和特征向量。

3. 2×2 矩阵的稳定性

针对方程组的解,我们想知道随着 \(t \to \infty\),解是否趋向于 \(\boldsymbol u = 0\),也就是问题是否是稳定的。这取决于矩阵的特征值。

全解是由 \(e^{\lambda t}\boldsymbol x\) 构建出来的。如果特征值 \(\lambda\) 是实数,只有当 \(\lambda<0\) 时,解才会趋向 0。如果特征值 \(\lambda\) 是复数,那么有 \(\lambda=r+is\),那么其实部必须小于零。

对 2×2 矩阵 \(\begin{bmatrix}a&b \\ c&d\end{bmatrix}\) 来说,如果其两个特征值满足上面的两个条件,则一定有:

\[\lambda_1 + \lambda_2 < 0 \to 矩阵的迹 \quad T = a + d < 0 \]

\[\lambda_1 \lambda_2 > 0 \to 矩阵的行列式 \quad D = ad - bc > 0 \]

4. 矩阵的指数次方

最后,我们想将方程组的解写成一个新的形式 \(\boldsymbol u(t) =e^{At}\boldsymbol u_0\)。

\[e^x = 1 + x+\frac{1}{2}x^2+\frac{1}{6}x^3 + \cdots\]

我们将 \(x\) 换成矩阵,可得:

\[e^{At} = I + At+\frac{1}{2}(At)^2+\frac{1}{6}(At)^3 + \cdots\]

它的导数为 \(Ae^{At}\):

\[A + A^2t+\frac{1}{2}A^3t^2+\frac{1}{6}A^4t^3 + \cdots =Ae^{At} \]

它的特征值是 \(e^{\lambda t}\):

\[(I + At+\frac{1}{2}(At)^2+\frac{1}{6}(At)^3 + \cdots)x = (1+\lambda t + \frac{1}{2}(\lambda t)^2+\frac{1}{6}(\lambda t)^3 + \cdots)x\]

假设 \(A\) 有 \(n\) 个线性不相关的特征向量,将 \(A=S\Lambda S^{-1}\) 代入 \(e^{At}\) 可得:

\[e^{At} = I + At+\frac{1}{2}(At)^2+\frac{1}{6}(At)^3 + \cdots\]

\[= I + S\Lambda S^{-1}t+\frac{1}{2}(S\Lambda S^{-1}t)(S\Lambda S^{-1}t)+ \cdots\]

将 \(S\) 和 \(S^{-1}\) 提取出来有

\[= S(I + \Lambda t+\frac{1}{2}(\Lambda t)^2+\cdots)S^{-1} = Se^{\Lambda t}S^{-1}\]

这和之前解的形式是一模一样的!

  • 例 3

\(e^{At}\) 满足下面三个规则:

  • \(e^{At}\) 总有逆矩阵 \(e^{-At}\);
  • \(e^{At}\) 的特征值总是 \(e^{\lambda t}\);
  • 如果 \(A\) 是反对称矩阵,即 \(A^T=-A\),那么 \(e^{-At}\) 是一个正交矩阵,转置等于逆。

  • 例 4

获取更多精彩,请关注「seniusen」!

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

  1. 线性代数笔记24——微分方程和exp(At)

    原文:https://mp.weixin.qq.com/s/COpYKxQDMhqJRuMK2raMKQ 微分方程指含有未知函数及其导数的关系式,解微分方程就是找出未知函数.未知函数是一元函数的,叫常 ...

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

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

  3. Matlab基础

    基本运算: 一,矩阵的生成 clc ; clear all; close all; 1.直接输入 A = [ 1 ,2 ,3,4;2,3,4,5;3,4,5,6] A = 1 2 3 4 2 3 4 ...

  4. (转载)Ubuntu 安装GNU Scientific library(GSL)

    背景: Blei的hlda的C语言实现需要使用C语言的科学计算包GSL,因此决定安装.由于在windows下安装极其繁琐,先在Linux上安装之. 系统环境: Linux version 2.6.35 ...

  5. ubuntu14.04 下安装 gsl 科学计算库

    GSL(GNU Scientific Library)作为三大科学计算库之一,除了涵盖基本的线性代数,微分方程,积分,随机数,组合数,方程求根,多项式求根,排序等,还有模拟退火,快速傅里叶变换,小波, ...

  6. Ubuntu 安装GNU Scientific library(GSL)

    注: 此系列为自己之前所搭建网站内容. 由于论文数据处理的需要,需要使用libeemd这个包,需要安装gsl科学库,windows下没有办法,只能转战ubuntu进行科学计算. GSL(GNU Sci ...

  7. 面向对象软件构造 (Bertrand Meyer 著)

    Part A: The Issues 议题 第一章 软件品质 第二章 面向对象的标准 Part B: The Road To Object Orientation 通向面向对象之路 第三章 模块性 第 ...

  8. MATLAB求解代数方程、微分方程的一些常用指令

    MATLAB版本:R2015b 1.求解符号矩阵的行列式.逆.特征值.特征向量 A = sym('[a11, a12; a21, a22]');deltaA = det(A)invA = inv(A) ...

  9. 龙哥库塔法or欧拉法求解微分方程matlab实现

    举例:分别用欧拉法和龙哥库塔法求解下面的微分方程 我们知道的欧拉法(Euler)"思想是用先前的差商近似代替倒数",直白一些的编程说法即:f(i+1)=f(i)+h*f(x,y)其 ...

随机推荐

  1. Reading Notes : 180214 计算机的总线结构

    读书<计算机组成原理>,百度百科 基本上接触过计算机的人,都多少知道计算机的具体构成,但是真正能讲明白的却说了很多,本节将讲解一下计算机的基本硬件构成和一些基本信息,简单认识,以后再深入了 ...

  2. sql中UNION和UNION ALL的区别

    写sql时我们经常会遇到需要把从多张表查询的集果集进行合并.这时就用到了union.使用union或union all 时一定要保证查询的列的一致性 .不然sql会报错.字段不一致的话可以用单引号来占 ...

  3. python多线程知识-实用实例

    python多线程使用场景:IO操作,不适合CPU密集操作型任务   1.多个线程内存共享 2.线程同时修改同一份数据需要加锁,mutex互斥锁 3.递归锁:多把锁,锁中有锁 4.python多线程, ...

  4. C++常用的系统函数

    数学<math.h>: 1 三角函数 double sin (double); double cos (double); double tan (double); 2 反三角函数 doub ...

  5. 安装mysql zip 安装包 Navicat连接

    笔者在安装mysql时一直出现各种问题,今天难得成功一次,决定记录一下,留作纪念与参考 安装第一步,下载mysql https://dev.mysql.com/downloads/mysql/ 以在w ...

  6. RAID磁盘阵列的原理

    RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意.磁盘阵列是由很多价格较便宜的磁盘,以硬件(R ...

  7. springboot+layui实现增删查改

    本文描述springboot和layui的结合,采用了springboot内置的jdbc,根据不同需要可以进行修改:分页采用了layui中自带分页格式! ----------------------- ...

  8. python教程(一)·简介

    先简单介绍下python.(真的很简单) python是什么? Python是Guido van Rossum发布于1991年的一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,是一种解释型的 ...

  9. 《PHP实用问题解决案例》系列分享专栏

    <PHP实用问题解决案例>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201725.html 文章 PHP汉字拼音转换和公历农历 ...

  10. #include stdio.h(B)

    #include <stdio.h> int main() { //***********一.循环语句*************** //什么叫做循环: //重复的做某件事情,重复的执行一 ...