MIT线性代数笔记-第23讲-微分方程,exp(At)

目录

23.微分方程, e x p ( A t ) exp(At) exp(At)

用矩阵求解微分方程

例: { d u 1 d t = − u 1 + 2 u 2 d u 2 d t = u 1 − 2 u 2 \left \{ \begin{matrix} \dfrac{du_1}{dt} = -u_1 + 2u_2 \\ \dfrac{du_2}{dt} = u_1 - 2u_2 \end{matrix} \right. dtdu1=u1+2u2dtdu2=u12u2,其中 u 1 , u 2 u_1 , u_2 u1,u2 t t t的两个不同函数且 u 1 ( 0 ) = 1 , u 2 ( 0 ) = 0 u_1(0) = 1 , u_2(0) = 0 u1(0)=1,u2(0)=0

​   令 A = [ − 1 2 1 − 2 ] , u ⃗ = [ u 1 u 2 ] A = \begin{bmatrix} -1 & 2 \\ 1 &-2 \end{bmatrix} , \vec{u} = \begin{bmatrix} u_1 \\ u_2 \end{bmatrix} A=[1122],u =[u1u2],则有 d u ⃗ d t = A u ⃗ , u ⃗ ( 0 ) = [ 1 0 ] \dfrac{d \vec{u}}{dt} = A \vec{u} , \vec{u}(0) = \begin{bmatrix} 1 \\ 0 \end{bmatrix} dtdu =Au ,u (0)=[10]

​   先求 A A A的特征向量和特征值,因为 A A A已经是一个奇异矩阵,所以 A A A有一个特征值为 λ 1 = 0 \lambda_1 = 0 λ1=0,又主对角线元素和为 − 3 -3 3,所以另一个特征值为 λ 2 = − 3 \lambda_2 = -3 λ2=3,两个特征值分别对应特征向量 x 1 ⃗ = [ 2 1 ] , x 2 ⃗ = [ 1 − 1 ] \vec{x_1} = \begin{bmatrix} 2 \\ 1 \end{bmatrix} , \vec{x_2} = \begin{bmatrix} 1 \\ -1 \end{bmatrix} x1 =[21],x2 =[11]

​   求出特征值和特征向量后便可以得到方程的两个特解 e λ 1 t x 1 ⃗ , e λ 2 t x 2 ⃗ e^{\lambda_1 t} \vec{x_1} , e^{\lambda_2 t} \vec{x_2} eλ1tx1 ,eλ2tx2 ,可以验证一下

​   将 u ⃗ = e λ 1 t x 1 ⃗ \vec{u} = e^{\lambda_1 t} \vec{x_1} u =eλ1tx1 代入得: d u ⃗ d t = d e λ 1 t x 1 ⃗ d t = λ 1 e λ 1 t x 1 ⃗ = e λ 1 t λ 1 x 1 ⃗ = e λ 1 t A x 1 ⃗ = A e λ 1 t x 1 ⃗ \dfrac{d \vec{u}}{dt} = \dfrac{de^{\lambda_1 t} \vec{x_1}}{dt} = \lambda_1 e^{\lambda_1 t} \vec{x_1} = e^{\lambda_1 t} \lambda_1 \vec{x_1} = e^{\lambda_1 t} A \vec{x_1} = A e^{\lambda_1 t} \vec{x_1} dtdu =dtdeλ1tx1 =λ1eλ1tx1 =eλ1tλ1x1 =eλ1tAx1 =Aeλ1tx1 e λ 2 t x 2 ⃗ e^{\lambda_2 t} \vec{x_2} eλ2tx2 同理

​   但是这两个特解仅仅满足了方程成立,并不一定满足 u ⃗ ( 0 ) = [ 1 0 ] \vec{u}(0) = \begin{bmatrix} 1 \\ 0 \end{bmatrix} u (0)=[10],不过容易证得这两个特解的任意线性组合也是方程的解,而且这两个特解线性无关,无论给出的 u ⃗ ( t 0 ) \vec{u}(t_0) u (t0)是什么均可以表示

​   所以设 u ⃗ = c 1 e λ 1 t x 1 ⃗ + c 2 e λ 2 t x 2 ⃗ \vec{u} = c_1 e^{\lambda_1 t} \vec{x_1} + c_2 e^{\lambda_2 t} \vec{x_2} u =c1eλ1tx1 +c2eλ2tx2 ,将 u ⃗ ( 0 ) = [ 1 0 ] \vec{u}(0) = \begin{bmatrix} 1 \\ 0 \end{bmatrix} u (0)=[10]代入得: [ 1 0 ] = c 1 e 0 [ 2 1 ] + c 2 e 0 [ 1 − 1 ] \begin{bmatrix} 1 \\ 0 \end{bmatrix} = c_1 e^{0} \begin{bmatrix} 2 \\ 1 \end{bmatrix} + c_2 e^{0} \begin{bmatrix} 1 \\ -1 \end{bmatrix} [10]=c1e0[21]+c2e0[11],解得: c 1 = c 2 = 1 3 c_1 = c_2 = \dfrac{1}{3} c1=c2=31

​   因而 u ⃗ = 1 3 [ 2 1 ] + 1 3 e − 3 t [ 1 − 1 ] \vec{u} = \dfrac{1}{3} \begin{bmatrix} 2 \\ 1 \end{bmatrix} + \dfrac{1}{3} e^{-3t} \begin{bmatrix} 1 \\ -1 \end{bmatrix} u =31[21]+31e3t[11]

​   将 u 1 , u 2 u_1 , u_2 u1,u2视作两个容器,将 t t t视作时间,由 u ⃗ ( 0 ) = [ 1 0 ] \vec{u}(0) = \begin{bmatrix} 1 \\ 0 \end{bmatrix} u (0)=[10]可知刚开始 u 1 u_1 u1中有 1 1 1的货物, u 2 u_2 u2中没有货物,但是随着 t t t的增大,即时间的流逝,由于 u 1 ′ < 0 , u 2 ′ > 0 u_1^{'} < 0 , u_2^{'} > 0 u1<0,u2>0 u 1 u_1 u1中的货物渐渐流向了 u 2 u_2 u2

​   可以发现当 t → + ∞ t \to +\infty t+时, e − 3 t → 0 e^{-3t} \to 0 e3t0,所以 u ⃗ → 1 3 [ 2 1 ] \vec{u} \to \dfrac{1}{3} \begin{bmatrix} 2 \\ 1 \end{bmatrix} u 31[21],即 u ⃗ \vec{u} u 收敛于 1 3 [ 2 1 ] \dfrac{1}{3} \begin{bmatrix} 2 \\ 1 \end{bmatrix} 31[21],此时称 1 3 [ 2 1 ] \dfrac{1}{3} \begin{bmatrix} 2 \\ 1 \end{bmatrix} 31[21] u ⃗ \vec{u} u 的稳态

证明稳态存在的条件为所有特征值的实部均为非负数:

​    若特征值为实数, lim ⁡ t → + ∞ e a t = { 1 , a = 0 0 , a < 0 \lim_{t \to +\infty} e^{at} = \left \{ \begin{matrix} 1 , a = 0 \\ 0 , a < 0 \end{matrix} \right. limt+eat={1,a=00,a<0

​    若特征值为复数, e ( a + b i ) t = e a t ⋅ e b t i = e a t ( c o s   b t + i   s i n   b t ) e^{(a + bi)t} = e^{at} \cdot e^{bti} = e^{at} (cos\ bt + i\ sin\ bt) e(a+bi)t=eatebti=eat(cos bt+i sin bt),想要当 t → + ∞ t \to +\infty t+时该项对 u ⃗ \vec{u} u 的影响不会无限增大,就要让 ∣ e a t ( c o s   b t + i   s i n   b t ) ∣ |e^{at} (cos\ bt + i\ sin\ bt)| eat(cos bt+i sin bt)趋于稳定,而 ∣ c o s   b t + i   s i n   b t ∣ = 1 |cos\ bt + i\ sin\ bt| = 1 cos bt+i sin bt=1,所以只要让 e a t e^{at} eat趋于稳定,那么又回到了特征值为实数的情况,所以 a ≤ 0 a \le 0 a0即可

​    综上, R e   λ ≤ 0 Re\ \lambda \le 0 Re λ0即可

  • 容易证得所有特征值的实部均为负数时,稳态为 0 ⃗ \vec{0} 0

  • 考虑 A A A为二阶方阵时,满足什么 u ⃗ \vec{u} u 才能有稳态,设 A = [ a b c d ] A = \begin{bmatrix} a & b \\ c & d \end{bmatrix} A=[acbd],其实不用求出特征值就可以判断

    若特征值均为复数,因为 a + d = λ 1 + λ 2 a + d = \lambda_1 + \lambda_2 a+d=λ1+λ2 λ 1 , λ 2 \lambda_1 , \lambda_2 λ1,λ2为共轭复数,所以只需满足 a + d ≤ 0 a + d \le 0 a+d0即可

    若特征值均为实数,此时 { λ 1 + λ 2 ≤ 0 λ 1 ⋅ λ 2 ≥ 0 \left \{ \begin{matrix} \lambda_1 + \lambda_2 \le 0 \\ \lambda_1 \cdot \lambda_2 \ge 0 \end{matrix} \right. {λ1+λ20λ1λ20与稳态存在的条件等价,而 a + d = λ 1 + λ 2 , ∣ A ∣ = λ 1 ⋅ λ 2 a + d = \lambda_1 + \lambda_2 , |A| = \lambda_1 \cdot \lambda_2 a+d=λ1+λ2,A=λ1λ2,所以只要满足 { a + d ≤ 0 ∣ A ∣ ≥ 0 \left \{ \begin{matrix} a + d \le 0 \\ |A| \ge 0 \end{matrix} \right. {a+d0A0即可

    当特征值均为复数时,因为两个特征值为共轭复数,所以 ∣ A ∣ = λ 1 ⋅ λ 2 ≥ 0 |A| = \lambda_1 \cdot \lambda_2 \ge 0 A=λ1λ20恒成立

    综上只需满足 { a + d ≤ 0 ∣ A ∣ ≥ 0 \left \{ \begin{matrix} a + d \le 0 \\ |A| \ge 0 \end{matrix} \right. {a+d0A0即可


矩阵指数

A A A表示了 u ⃗ \vec{u} u 各个元素之间的耦合方式,求 A A A的特征值和特征向量即为解耦,接下来换一种解耦思路

u ⃗ = S v ⃗ \vec{u} = S \vec{v} u =Sv ,代入得: S d v ⃗ d t = A S v ⃗ S \dfrac{d \vec{v}}{dt} = AS \vec{v} Sdtdv =ASv ,左右同时乘 S − 1 S^{-1} S1得: d v ⃗ d t = S − 1 A S v ⃗ = Λ v ⃗ \dfrac{d \vec{v}}{dt} = S^{-1} AS \vec{v} = \Lambda \vec{v} dtdv =S1ASv =Λv

这样就转化为了关于 v ⃗ \vec{v} v 的方程,又因为 Λ \Lambda Λ为对角阵,所以 v ⃗ \vec{v} v 各个元素之间不存在耦合,因而 v n = c n ⋅ e λ n t v_n = c_n \cdot e^{\lambda_n t} vn=cneλnt,将 v n ( 0 ) v_n(0) vn(0)代入得: v n = v n ( 0 ) ⋅ e λ n t v_n = v_n(0) \cdot e^{\lambda_n t} vn=vn(0)eλnt,所以 v ⃗ = e Λ t v ⃗ ( 0 ) \vec{v} = e^{\Lambda t} \vec{v}(0) v =eΛtv (0),所以 u ⃗ = S v ⃗ = S e Λ t v ⃗ ( 0 ) = S e Λ t S − 1 u ⃗ ( 0 ) = e A t u ⃗ ( 0 ) \vec{u} = S \vec{v} = S e^{\Lambda t} \vec{v}(0) = S e^{\Lambda t} S^{-1} \vec{u}(0) = e^{At} \vec{u}(0) u =Sv =SeΛtv (0)=SeΛtS1u (0)=eAtu (0),是不是看不懂?没关系,现在就来解释

引入矩阵指数,即底数为 e e e,指数为矩阵

e x e^x ex的麦克劳林公式为 e x = 1 + x + x 2 2 ! + x 3 3 ! + ⋯ + x n n ! + ⋯ e^x = 1 + x + \dfrac{x^2}{2!} + \dfrac{x^3}{3!} + \cdots + \dfrac{x^n}{n!} + \cdots ex=1+x+2!x2+3!x3++n!xn+

指数为矩阵时也一样,即 e x = I + A + A 2 2 ! + A 3 3 ! + ⋯ + A n n ! + ⋯ e^x = I + A + \dfrac{A^2}{2!} + \dfrac{A^3}{3!} + \cdots + \dfrac{A^n}{n!} + \cdots ex=I+A+2!A2+3!A3++n!An+

拓展: 这用到了一个经典的麦克劳林级数 e x = ∑ 0 + ∞ x n n ! e^x = \sum_{0}^{+\infty} \dfrac{x^n}{n!} ex=0+n!xn,其实另一个经典的麦克劳林级数 1 1 − x = ∑ 0 + ∞ x n \dfrac{1}{1 - x} = \sum_{0}^{+\infty} x^n 1x1=0+xn也对矩阵适用,即 ( I − A ) − 1 = I + A + A 2 + ⋯ + A n + ⋯ (I - A)^{-1} = I + A + A^2 + \cdots + A^n + \cdots (IA)1=I+A+A2++An+,当 A A A的所有特征值的绝对值都小于 1 1 1(如果特征值为复数,则模小于 1 1 1)时,这可以很方便的用来求矩阵的逆的近似值

证明当 A A A为对角阵时 e i , i A = e a i , i : e^A_{i , i} = e^{a_{i , i}}: ei,iA=eai,i

​    对于对角阵有 A i , i k = a i , i k A^k_{i , i} = a_{i , i}^k Ai,ik=ai,ik,所以在用 A A A代入麦克劳林公式时, A A A的主对角线上的元素都分别代入了一次麦克劳林公 式,那么自然会变为 e e e的幂

所以 v ⃗ = [ e λ 1 t 0 ⋯ 0 0 e λ 2 t ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ e λ n t ] v ⃗ ( 0 ) = e Λ t v ⃗ ( 0 ) \vec{v} = \begin{bmatrix} e^{\lambda_1 t} & 0 & \cdots & 0 \\ 0 & e^{\lambda_2 t} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & e^{\lambda_n t} \end{bmatrix} \vec{v}(0)= e^{\Lambda t} \vec{v}(0) v = eλ1t000eλ2t000eλnt v (0)=eΛtv (0)

证明 e A t = S e Λ t S − 1 e^{At} = S e^{\Lambda t} S^{-1} eAt=SeΛtS1

​     e A t = I + A t + ( A t ) 2 2 ! + ( A t ) 3 3 ! + ⋯ + ( A t ) n n ! + ⋯ = I + S Λ S − 1 t + S Λ 2 S − 1 t 2 2 ! + ⋯ + S Λ n S − 1 t n n ! + ⋯ = S [ I + Λ t + ( Λ t ) 2 2 ! + ⋯ + ( Λ t ) n n ! + ⋯   ] S − 1 = S e Λ t S − 1 \begin{aligned} e^{At} & = I + At + \dfrac{(At)^2}{2!} + \dfrac{(At)^3}{3!} + \cdots + \dfrac{(At)^n}{n!} + \cdots \\ & = I + S \Lambda S^{-1} t + \dfrac{S \Lambda^2 S^{-1} t^2}{2!} + \cdots + \dfrac{S \Lambda^n S^{-1} t^n}{n!} + \cdots \\ & = S [I + \Lambda t + \dfrac{(\Lambda t)^2}{2!} + \cdots + \dfrac{(\Lambda t)^n}{n!} + \cdots] S^{-1} \\ & = S e^{\Lambda t} S^{-1} \end{aligned} eAt=I+At+2!(At)2+3!(At)3++n!(At)n+=I+SΛS1t+2!SΛ2S1t2++n!SΛnS1tn+=S[I+Λt+2!(Λt)2++n!(Λt)n+]S1=SeΛtS1

想要让 e A t → O e^{At} \to O eAtO,那么就需要 e Λ t → O e^{\Lambda t} \to O eΛtO,即 e λ t → 0 e^{\lambda t} \to 0 eλt0,即 R e   λ < 0 Re\ \lambda < 0 Re λ<0


二阶常微分方程

对于一个二阶常微分方程 y ′ ′ + b y ′ + k y = 0 y^{''} + b y^{'} + ky = 0 y′′+by+ky=0,令 u ⃗ = [ y ′ y ] \vec{u} = \begin{bmatrix} y^{'} \\ y \end{bmatrix} u =[yy],则 u ⃗ ′ = [ y ′ ′ y ′ ] \vec{u}^{'} = \begin{bmatrix} y^{''} \\ y^{'} \end{bmatrix} u =[y′′y]

所以 u ⃗ ′ = [ − b − k 1 0 ] u ⃗ \vec{u}^{'} = \begin{bmatrix} -b & -k \\ 1 & 0 \end{bmatrix} \vec{u} u =[b1k0]u ,设 A = [ − b − k 1 0 ] A = \begin{bmatrix} -b & -k \\ 1 & 0 \end{bmatrix} A=[b1k0],这样又可以利用矩阵求解

对于更高阶的微分方程也可以使用类似的方法

那样 u ⃗ , u ⃗ ′ \vec{u} , \vec{u}^{'} u ,u n n n阶向量, A A A n n n阶方阵且 A = [ _ _ ⋯ _ _ 1 0 ⋯ 0 0 0 1 ⋯ 0 0 ⋮ ⋮ ⋱ ⋮ ⋮ 0 0 ⋯ 1 0 ] A = \begin{bmatrix} \_ & \_ & \cdots & \_ & \_ \\ 1 & 0 & \cdots & 0 & 0\\ 0 & 1 & \cdots & 0 & 0\\ \vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & \cdots & 1 & 0\end{bmatrix} A= _100_010_001_000 ,所以 0 0 0一定不是 A A A的特征值

最后还是要注意,本章所讲的内容仅对 A A A可对角化时有效,不是所有方阵都可以


打赏

制作不易,若有帮助,欢迎打赏!
赞赏码

支付宝付款码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/218903.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是呼叫中心的语音通道?呼叫中心语音线路有几种?

什么是呼叫中心的语音通道&#xff1f; 呼叫中心的语音通道是指在呼叫中心中使用的语音信号传输通道&#xff0c;它是呼叫中心中至关重要的一部分&#xff0c;负责将客户的语音信息传递给客服代表&#xff0c;以及将客服代表的语音信息传递给客户。在呼叫中心的运营中&#xf…

【UE】UEC++委托代理

目录 【UE】UEC委托代理 一、委托的声明与定义 二、单播绑定与解绑 三、多播绑定与解绑 四、动态单播绑定与解绑 五、动态多播绑定与解绑 六、委托的调用 七、运行结果 1、运行开始 2、调用单播 3、调用多播 4、调用动态单播 5、调用动态多播 6、运行结束 【UE】…

傻傻分不清楚的分区、分库、分表

一、分区 MySQL 在 5.1 时添加了对 分区&#xff08;即水平分区&#xff09; 的支持。MySQL 的物理数据存储在表空间文件&#xff08;.ibdata1和.ibd&#xff09;中&#xff0c;分区 的意思是指将同一表中不同行的记录分配到不同的物理文件中。有几个分区就有几个 .idb 文件。…

到手价价格监测如何实现

渠道中的低价数据是品牌非常头疼的问题&#xff0c;治理低价、乱价也是在治理窜货&#xff0c;品牌需要长期执行&#xff0c;并且要有监测渠道价格的能力&#xff0c;监测价格不能只对页面价进行输出&#xff0c;要监测链接中的到手价&#xff0c;这就包含对所有促销信息内容的…

Netty01-NIO与BIO

NIO 什么是NIO Java NIO 全称 java non-blocking IO&#xff0c;是指JDK 1.4 及以上版本提供的新API&#xff08;New IO&#xff09;。从 JDK1.4 开始&#xff0c;Java 提供了一系列改进的输入/输出的新特性&#xff0c;为所有的原始类型&#xff08;boolean类型除外&#xf…

Hive的metastore服务的两种运行模式

Hive的metastore服务的作用是为Hive CLI或者Hiveserver2提供元数据访问接口 1.metastore运行模式 metastore有两种运行模式&#xff0c;分别为嵌入式模式和独立服务模式。下面分别对两种模式进行说明&#xff1a; &#xff08;1&#xff09;嵌入式模式 &#xff08;2&#x…

基于springboot + vue在线考试系统

qq&#xff08;2829419543&#xff09;获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;springboot 前端&#xff1a;采用vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xf…

【PID学习笔记 5 】控制系统的性能指标之一

写在前面 PID在实际工程中最重要的工作就是调参&#xff0c;那么首先就要了解控制系统的性能指标。上文最后简要介绍了控制系统的基本要求&#xff0c;本文开始将系统学习控制系统的性能指标&#xff0c;内容比较多&#xff0c;初步计划是分三节来讲解。本文重点介绍性能指标的…

Bishop新著 - 深度学习:基础与概念 - 前言

译者的话 十几年前&#xff0c;笔者在MSRA实习的时候&#xff0c;就接触到了Christopher M, Bishop的经典巨著《Pattern Recogition and Machine Learning》(一般大家简称为PRML)。Bishop大神是微软剑桥研究院实验室主任&#xff0c;物理出身&#xff0c;对机器学习的基本概念…

银行固定资产巡检管理盘点解决方案

随着金融业务的拓展&#xff0c;银行对办公设备、电子设备等固定资产的需求不断增加&#xff0c;因此&#xff0c;固定资产投入和资产生命周期的管理变得日益重要&#xff0c;由于管理体制、制度等因素不完全协调同步&#xff0c;银行在固定资产投入及管理方面面临诸多问题。 …

优雅草蜻蜓I即时通讯·水银版私有化部署之java服务端搭建教程-01

目录 前言1 1 安装 mongodb2 2 安装 redis3 3. 安装jdk3 4 解压 spring-boot-imapi3 5.开始安装 消息队列组件 rocket4 6. 安装推送服务5 7. 安装 message-push5 8. 安装uplooad 服务5 9&#xff1a; 安装nginx 服务7 1.不需要SSL7 2.需要SSL7 五&#xff1a;编译…

数字图像处理(实践篇)十八 人脸检测

目录 一 使用opencv进行人脸检测 二 使用face_recognition进行人脸检测 一 使用opencv进行人脸检测 1 haarcascade_frontalface_default.xml 方法① 下载 地址&#xff1a;https://github.com/opencv/opencv/tree/master/data/haarcascades 点击haarcascade_frontalface_d…

Java零基础——RocketMQ篇

1.RocketMQ简介 官网&#xff1a; http://rocketmq.apache.org/ RocketMQ是阿里巴巴2016年MQ中间件&#xff0c;使用Java语言开发&#xff0c;RocketMQ 是一款开源的分布式消息系统&#xff0c;基于高可用分布式集群技术&#xff0c;提供低延时的、高可靠的消息发布与订阅服…

Cyanine7-NHS ester荧光染料的化学结构、光谱性质和荧光特性

Cyanine7-NHS ester的结构包括一个靛菁环结构和一个NHS ester活性基团。NHS ester官能团是一种活化基团&#xff0c;用于将染料共价结合到含有游离氨基官能团的生物分子上。 **光谱性质&#xff1a;**Cyanine7-NHS ester的光谱性质通常包括&#xff1a; **激发波长&#xff08…

如何利用MES系统加强对仓库的管理

相比于ERP对库存数量的统计查看&#xff0c;MES系统对于仓库的管理则更加具体。在这个快速变革的时代&#xff0c;仓库管理对于企业的运营效率和客户满意度至关重要&#xff0c;单靠ERP系统已经很难应对新的挑战&#xff0c;所以为了提高仓库管理的效率和准确性&#xff0c;许多…

Twincat功能块使用经验总结

控制全局变量&#xff1a; //轴控制指令 bi_Power: BOOL; //使能 bi_Reset: BOOL; //复位 bi_Stop: BOOL; //停止 bi_JogForward: BOOL; //正向点动 bi_JogBackwards: BOOL; //反向点动 bi_MoveAdditive: BOOL; //增量位…

Java 数据结构篇-二叉树的深度优先遍历(实现:递归方式、非递归方式)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 二叉树的说明 1.1 二叉树的实现 2.0 二叉树的优先遍历说明 3.0 用递归方式实现二叉树遍历 3.1 用递归方式实现遍历 - 前序遍历 3.2 用递归方式实现遍历 - 中序遍…

RabbitMq整合Springboot超全实战案例+图文演示+源码自取

目录 介绍 简单整合 简单模式 定义 代码示例 work模式 定义 代码示例 pubsub模式 定义 代码示例 routing模式 定义 代码示例 top模式 定义 代码 下单付款加积分示例 介绍 代码 可靠性投递示例 介绍 代码 交换机投递确认回调 队列投递确认回调 ​延迟消…

创作涌动·CSDN·21天创作挑战赛·第三期,正式开启报名!

​ 文章目录 ⭐️ 活动介绍⭐️ 活动详情⭐️ 活动奖品⭐️ 活动流程⭐️ 评审规则⭐️ 报名&投稿事项⭐️ 关于活动组织 活动报名地址&#xff08;点击跳转&#xff09; 本次活动与官方活动及其他博主的创作型活动并不不冲突&#xff01; ⭐️ 活动介绍 亲爱的小伙伴们&a…

树莓派Python程序开机自启动(Linux下Python程序开机自启动)

前一阵子用python编写了一个驱动I2C程序读写屏幕&#xff0c;输出IP的小程序&#xff0c;程序编好后需要树莓派使能程序开机自启动。其实这些方法对任何Linux系统都适用。 方法一&#xff1a;此方法的缺点是不进入默认pi的账号&#xff0c;甚至不开hdmi开启桌面的话&#xff0…