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

\[\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. 统计 SQL Server中的 Job 情况

    SELECT J.name 作业名称, P.step_id'步骤编号',P.step_name'步骤名称',p.SubSystem '步骤类型',P.command'执行命令', CASE freq_ ...

  2. iOS | NSProxy

    Objective-C作为一种动态消息型语言,其机制不同于Java ,C#等编译型语言. 它将数据类型的确定等工作推迟到了运行时期来执行,并且它调用方法的方式实质是像对象发送消息,根据selector ...

  3. zabbix基本监控各指标简解

    监控项目及使用模板 监控http和https: Template App HTTP Service     Template App HTTPS Service 监控cpu,内存,网络等: Templ ...

  4. 前台页面上传data image图片,java后台接收图片保存

    最近在项目中有这么一个需求,就是上传一个视频文件,然后要获取视频文件的第一帧图片,这个可以通过canvas获取得到,得到的是一个dataURL,之后还要将这个图片上传到云,这个时候如何操作就不清楚了, ...

  5. SkipList 之详细分析

    SkipList 俗称跳表,跳表是一种随机化的数据结构,目前开源软件 Redis 和 LevelDB 都有用到它,它的效率和红黑树以及 AVL 树不相上下,但跳表的原理相当简单,只要你能熟练操作链表, ...

  6. 配置一个nginx+php-fpm的web服务器

    一.基本信息 系统(L):CentOS 6.9 #下载地址:http://mirrors.sohu.com 反代&负载均衡(N):NGINX 1.14.0 #下载地址:http://nginx ...

  7. python3网络爬虫系统学习:第二讲 基本库requests(一)

    之前,我们学习了基本库urllib的相关用法,但是在网页验证.Cookies处理等方面是比较繁琐的,需要用到Handler并且还需自己构建Opener.requests库的出现很好的解决了这个问题,下 ...

  8. Jenkins中Publish Over SSH插件使用

    Publish Over SSH插件安装 进入插件管理安装插件,我这里已经安装过了所以在installed里面,没安装过去available里面搜索. 系统设置中配置Publish Over SSH ...

  9. 深入理解@RequestBody注解

    我写文章历来追求通俗易懂,今天来深入探讨一下@RequestBody注解.提起这个,所有做过mvc开发的同学应该都不陌生,使用上面肯定也是信手拈来. 所以我这里就简单的提一下这个注解的使用: 1.当客 ...

  10. Scratch入门课程(1)——把工具准备好

    为了让更多的同学了解少儿编程,从今天开始,我将以每周1次的频率发布Scratch的入门课程,大约在30课时左右. 几点情况说明: 1.这批课程主要面向2-4年级的同学,难度都不大,按照教程可以很轻松地 ...