のこぎりを使い始めた小学生の頃は、
しかし、
現在学んでいる行列の数学は、
初めてのこぎりを手にした時のような初心に返って、

ベクトルのスカラ倍
スカラ倍とは、
ベクトルのスカラ倍の一般的な形を紹介します。ベクトルAのスカラ倍を式39.

ベクトルのスカラ倍には、
法則名 | 演算の例 |
---|---|
交換法則 | cA=Ac |
結合法則 | c(dA)=cdA |
分配法則 | (c+d)A=cA+dA |
c(A+B)=cA+cB |
ベクトルのスカラ倍の具体例
お年玉のポチ袋に10円玉を5枚、

今日は親戚の子供達が7人
それぞれの硬貨が何枚必要か、

10円玉は35枚、
ベクトルには、
ベクトルの乗算
ベクトル同士を掛け合わせることをベクトルの乗算といいます。乗算の結果はベクトルではなくスカラ値
以下にベクトルの乗算の一般的な形を紹介します。

ベクトルの乗算の具体例
ベクトルを掛け合わせるとスカラ値になる、
それを考えるために、

次のような具体例が考えられますよ。式39.
大変単純な計算ですが、
問題:ベクトルのスカラ倍、ベクトル同士の乗算を行う関数を作りましょう。
ベクトルのスカラ倍は整数の配列を、
乗算では、
解説
(1)ベクトルをスカラ倍する関数を作りましょう。数値は整数、ベクトルには配列を用いて下さい。
解答例を示します。これまでの問題をこなされた方にとっては、
//サンプルコード
//ベクトルのスカラ倍 配列版
//filename : HairetsuDeMatrixScalar.java
class HairetsuDeMatrixScalar {
static final int SCALAR = 5;
public static void main(String[] args) {
int a[] = {1,2,3,5,8}; //ベクトルA
int b[] = new int[a.length]; //ベクトルB(ベクトルAと同次元)
// B = cA
vScalarMatrix(a,SCALAR,b);
//結果表示
for( int i = 0 ; i < a.length ; ++i ){
System.out.println(SCALAR + " * a["+i+"] = b["+i+"] => " +
SCALAR + " * " + a[i] + " = " + b[i]);
}
}// end of main
/**
* vScalarMatrix(A,c,B)
* ベクトルA のスカラ倍cA をベクトルB にセットする
*/
static void vScalarMatrix(int a[], int c , int b[]){
if (a.length == b.length){
//加算可能
for( int i = 0; i < a.length ; i++){
b[i] = c * a[i];
}
} else {
System.out.println("戻り値用の配列長が適切ではありません。");
System.exit(0);
}
}
}// end of this class
(2)ベクトル同士を乗算する関数を作りましょう。数値は整数、ベクトルにはArrayListを用いて下さい。
ArrayListはサイズを動的に変更できるのですが、
問題をうまくコードに出来たでしょうか。前回とほぼ同様のコードで処理できたことでしょう。次回からは行、 行列の除算はちょっと特別なんです。しばらく先で学習しますので、//サンプルコード
//ベクトルの積をとる。ArrayList 版。
//filename : ArrayListDeMatrixMultiplication.java
import java.util.ArrayList;
class ArrayListDeMatrixMultiplication {
public static void main(String[] args) {
//ベクトルA の宣言と初期化
ArrayList<Integer> A = new ArrayList<Integer>();
int a[] = {1,2,3,5,8};
for (int i=0 ; i < a.length ; ++i ) A.add( a[i] );
//ベクトルB の宣言と初期化
ArrayList<Integer> B = new ArrayList<Integer>();
int b[] = {2,4,5,7,9};
// int b[] = {2,5}; //次元数が異なる場合は加算できない
for (int i=0 ; i < b.length ; ++i ) B.add( b[i] );
//積の値を格納するc の宣言
int c = 0;
int test = 0;
//c = A * B
c = aMultiMatrix(A,B);
//結果と確認の表示
for( int i=0 ; i < A.size() ; ++i ){
test += A.get(i) * B.get(i);
System.out.print("A("+i+") * B("+i+") = ");
System.out.println(A.get(i)+" * "+B.get(i)
+ " : test = " + test);
}
System.out.println("c = " + c + " : test = " + test);
}// end of main
/**
* vMultiMatrix(A,B)
* ベクトルA とベクトルB の積を返す
*/
static int aMultiMatrix(ArrayList<Integer> A,
ArrayList<Integer> B){
int sum = 0;
if (A.size() == B.size()){
//乗算可能
for( int i = 0; i < A.size() ; i++){
sum += A.get(i) * B.get(i) ;
}
} else {
//乗算不能
System.out.println("乗算できません");
System.exit(0);
}
return sum;
}
}// end of this class
今回はここまで