# 8.3.jl # 2020-11-01, 2020-11-03 # $Id: 8.3.jl 1.1 2020/11/03 00:00:00 s Exp $ using LinearAlgebra: eigen using Printf using Statistics: cov, mean, normalize, var # input s1 = [11.91, 18.37, 3.64, 24.37, 30.42, -1.45, 20.11, 9.28, 17.63, 15.71] s2 = [29.59, 15.25, 3.53, 17.67, 12.74, -2.56, 25.46, 6.92, 9.73, 25.09] s3 = [23.27, 19.47, -6.58, 15.08, 16.24, -15.05, 17.80, 18.82, 3.05, 16.94] s4 = [27.24, 17.05, 10.20, 20.26, 19.84, 1.51, 12.24, 16.12, 22.93, 3.49] s = hcat(s1, s2, s3, s4) average = Array{Float64}(undef, 4) variance = Array{Float64}(undef, 4) # calculate for j = 1:4 average[j] = mean(s[:, j]) end for j = 1:4 variance[j] = var(s[:, j]) end covariance = cov(s) eigenvalue, eigenvector = eigen(covariance) eigenvector0 = normalize(eigenvector[:, 4], 1) # output println("8.3.jl") println("s1 ", s1) println("s2 ", s2) println("s3 ", s3) println("s4 ", s4) println("s") for i = 1:10 (map(x -> @printf("%6.2f ", round(x; digits = 2)), s[i,:])) println() end println("mean\n", map(x -> round(x; digits = 1), average)) println("variance\n", map(x -> round(x; digits = 2), variance)) println("covariance matrix") for i=1:4 (map(x -> @printf("%6.2f ",round(x; digits = 2)), covariance[i, :])) println() end println("eigenvalue\n", map(x -> round(x; digits = 1), eigenvalue)) println("eigenvector") for i = 1:4 (map(x -> @printf("%6.3f ", round(x; digits = 3)), eigenvector[i, :])) println() end println() println("eigen value\n", round(eigenvalue[4]; digits=2)) println("normalized eigenvector\n", map(x->round(x; digits = 3), eigenvector0)) # eof