😊

Juliaで線形代数② ベクトルの線形結合で平面を可視化する

2023/09/05に公開

ベクトルxとyの線形結合ax + byの全体はxy平面となる


# x, yを定義
julia> x = [1.0, 2.0];
julia> y = [2.0, 1.0];

# -1.0 <= a <= 1.0, -1.0 <= b <= 1.0の範囲で、 線形結合ax + byのとりうる値を配列に入れる
julia> x_values = Float64[];
julia> y_values = Float64[];

julia> for alpha in -1.0:0.1:1.0
           for beta in -1.0:0.1:1.0
               result = alpha * vector1 + beta * vector2
               push!(x_values, result[1])
               push!(y_values, result[2])
           end
       end

julia> x_values
 x_values
441-element Vector{Float64}:
 -3.0
 -2.8
 -2.6
 -2.4
 -2.2
 -2.0
 -1.8
 -1.6
 -1.4
 -1.2
  ⋮
  1.4
  1.6
  1.8
  2.0
  2.2
  2.4
  2.6
  2.8
  3.0
  
 julia> y_values
 y_values
441-element Vector{Float64}:
 -3.0
 -2.9
 -2.8
 -2.7
 -2.6
 -2.5
 -2.4
 -2.3
 -2.2
 -2.1
  ⋮
  2.2
  2.3
  2.4
  2.5
  2.6
  2.7
  2.8
  2.9
  3.0
  
# 可視化
scatter(x_values, y_values, xlabel="x", ylabel="y", legend=false)

3次元ベクトルの線形結合ax + by + czの全体はxyz空間となる

julia> x = [1.0, 0.0, 0.0];
julia> y = [0.0, 1.0, 0.0];
julia> z = [0.0, 0.0, 1.0];

julia> x_values = Float64[];
julia> y_values = Float64[];
julia> z_values = Float64[];

julia> for alpha in -1.0:0.1:1.0
           for beta in -1.0:0.1:1.0
               for gamma in -1.0:0.1:1.0
                   result = alpha * x + beta * y + gamma *z
                   push!(x_values, result[1])
                   push!(y_values, result[2])
                   push!(z_values, result[3])
               end
           end
       end

julia> scatter(x_values, y_values, z_values, xlabel="x", ylabel="y", zlabel="z", legend=false)

Discussion