【发布时间】:2021-02-03 03:36:42
【问题描述】:
我尝试在 Julia 中重现我在图中显示并取自 Matrix Exponentiation 的示例
我向您展示了我在 Julia 中重现该练习的程度。但我不知道如何引入向量 t,对于感兴趣的范围,例如 t = -3: 0.25: 3. 在矩阵中: [exp (u1 * t 0; 0 exp (u2 * t], u1 u2 特征值。
Julia>A=[0 1;1 0]
2×2 Array{Int64,2}:
0 1
1 0
F=eigen(A)
Eigen{Float64,Float64,Array{Float64,2},Array{Float64,1}}
values:
2-element Array{Float64,1}:
-1.0
1.0
vectors:
2×2 Array{Float64,2}:
-0.707107 0.707107
0.707107 0.707107
D = diagm(exp.(F.values))
2×2 Array{Float64,2}:
0.367879 0.0
0.0 2.71828
P = F.vectors
13:06:08->>2×2 Array{Float64,2}:
-0.707107 0.707107
0.707107 0.707107
【问题讨论】:
-
只需使用
exp(A*t)*u0。没有更多的了。 -
请注意,如果你看看它做了什么,它最终会做你本来想写的事情
-
是否可以改进代码?
-
C=[0 1;1 0] x0=[1 0] ∆t = .25 T = exp(C*∆t) x = x0 x1 =x0 for i = 1:100 x = x*T #repeatedly multiply by T x1=vcat(x1, x) # & store current x1(t) in the array x1 end
标签: arrays matrix julia differential-equations exponentiation