Я занимался простой практикой линейной алгебры в Джулии.
Вот как были определены переменные
H = (1/sqrt(2)) * [1.0 + 0.0im 1.0 + 0.0im; 1.0 + 0.0im -1.0 + 0.0im;]
X = [0.0im 1.0 + 0.0im; 1.0 + 0.0im 0.0im;]
H
вычисляется до
2×2 Array{Complex{Float64},2}:
0.707107+0.0im 0.707107+0.0im
0.707107+0.0im -0.707107+0.0im
и X
вычисляет до
2×2 Array{Complex{Float64},2}:
0.0+0.0im 1.0+0.0im
1.0+0.0im 0.0+0.0im
Матрица идентификации определяется как I = [1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im;]
Теперь и X * X
, и H * H
return
2×2 Array{Complex{Float64},2}:
1.0+0.0im 0.0+0.0im
0.0+0.0im 1.0+0.0im
As ожидается. Но
I == X * X # returns true
I == H * H # returns false
X * X - I
возвращает
2×2 Array{Complex{Float64},2}:
0.0+0.0im 0.0+0.0im
0.0+0.0im 0.0+0.0im
, как и ожидалось, в то время как то же самое, что сделано с H, дает
2×2 Array{Complex{Float64},2}:
-2.22045e-16+0.0im 0.0+0.0im
0.0+0.0im -2.22045e-16+0.0im
Я довольно новичок в Джулии. Почему это происходит?