0
0

行列編はこちら→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}
v1v2 =
-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}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0