行列編はこちら→https://qiita.com/AlliumAllium/items/b05bd5195f1b68041ab9
コード
import org.apache.commons.math4.legacy.linear.RealVector;
import org.apache.commons.math4.legacy.linear.MatrixUtils;
public class Test {
public static void main(String[] args) {
// 宣言
RealVector vector1 = MatrixUtils.createRealVector(
new double[] { 1, 0, -2 });
System.out.println("v1 =");
System.out.println(vector1);
RealVector vector2 = MatrixUtils.createRealVector(
new double[] { 1, 1, 1 });
System.out.println("v2 =");
System.out.println(vector2);
double s = 3;
System.out.println("s =");
System.out.println(s);
// 次元
System.out.println("次元 =");
System.out.println(vector1.getDimension());
// ノルム(大きさ)
System.out.println("ノルム||v1|| =");
System.out.println(vector1.getNorm());
// L1ノルム
System.out.println("L1ノルム||v1||_1 =");
System.out.println(vector1.getL1Norm());
// 正規化
System.out.println("正規化 v1/||v1||_1 =");
System.out.println(vector1.unitVector());
// 和
System.out.println("和 v1+v2 =");
System.out.println(vector1.add(vector2));
// 差
System.out.println("差 v1-v2 =");
System.out.println(vector1.subtract(vector2));
// 要素の積
System.out.println("要素の積 {v1_i * v2_i}_i =");
System.out.println(vector1.ebeMultiply(vector2));
// 内積
System.out.println("v1・v2 =");
System.out.println(vector1.dotProduct(vector2));
// 外積
System.out.println("v1 × v2 =");
System.out.println(vector1.outerProduct(vector2));
// スカラー倍
System.out.println("v1*s =");
System.out.println(vector1.mapMultiply(s));
// 距離
System.out.println("d(v1, v2) = ");
System.out.println(vector1.getDistance(vector2));
// v1をv2へ射影
System.out.println("v2への射影ベクトル = ");
System.out.println(vector1.projection(vector2));
}
}
結果
v1 =
{1; 0; -2}
v2 =
{1; 1; 1}
s =
3.0
次元 =
3
ノルム||v1|| =
2.23606797749979
L1ノルム||v1||_1 =
3.0
正規化 v1/||v1||_1 =
{0.4472135955; 0; -0.894427191}
和 v1+v2 =
{2; 1; -1}
差 v1-v2 =
{0; -1; -3}
要素の積 {v1_i * v2_i}_i =
{1; 0; -2}
v1・v2 =
-1.0
v1 × v2 =
Array2DRowRealMatrix{{1.0,1.0,1.0},{0.0,0.0,0.0},{-2.0,-2.0,-2.0}}
v1*s =
{3; 0; -6}
d(v1, v2) =
3.1622776601683795
v2への射影ベクトル =
{-0.3333333333; -0.3333333333; -0.3333333333}