JavaScriptでn次の単位行列を生成する方法
単位行列とは
単位行列(Identity Matrix)とは、対角成分(左上から右下にかけての斜めの要素)がすべて「1」であり、それ以外の要素がすべて「0」である n × n の正方行列のことです。線形代数において非常に重要な行列で、行列の乗算における「1」のような役割を果たします。
例えば、3次の単位行列は以下のように表されます。
const arr = [ [1, 0, 0], [0, 1, 0], [0, 0, 1] ];
今回は、数値 n を引数として受け取り、n × n の単位行列を生成して返すJavaScript関数を作成します。
サンプルコード
以下がその実装コードです。
const num = 5;
const constructIdentity = (num = 1) => {
const res = [];
for(let i = 0; i < num; i++){
if(!res[i]){
res[i] = [];
};
for(let j = 0; j < num; j++){
if(i === j){
res[i][j] = 1;
}else{
res[i][j] = 0;
};
};
};
return res;
};
console.log(constructIdentity(num));コードの解説
この関数の仕組みは以下のとおりです。
まず、結果を格納するための空の配列 res を用意します。外側のループ(変数 i)で行を、内側のループ(変数 j)で列を順番に処理していきます。行番号 i と列番号 j が一致する位置(対角成分)には「1」を代入し、それ以外の位置には「0」を代入します。すべての要素を埋め終えたら、完成した二次元配列を return で返します。
実行結果
上記のコードを実行すると、コンソールには以下の出力が表示されます。
[ [ 1, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ]
このように、num に任意の数値を渡すだけで、対応するサイズの単位行列を簡単に生成できます。引数を省略した場合はデフォルト値として 1 が使用され、[[1]] という 1 × 1 の単位行列が返される仕組みになっています。
-
JavaScriptの高階関数(HOF)入門ガイド:基本の使い方からforEach・mapまで徹底解説
JavaScript開発者であれば、通常の関数を使ったことがあるでしょう。こうした「第一級関数(ファーストオーダー関数)」は、引数として関数を受け取らず、戻り値として関数を返すこともありません。 function hello(name) { return Hello, + + name } console.log(hello(Career Karma)); // Hello, Career Karma 本記事では、高階関数(HOF:Higher Order Function)について解説します。高階関数とは、関数を引数として受け取ったり、戻り値として関数を返したりすることで
-
JavaScriptの高階関数とは?基本概念とサンプルコードをわかりやすく解説
高階関数とは?JavaScriptでは、関数はオブジェクトとして扱われます。そのため、関数を別の関数に引数として渡したり、関数の戻り値として別の関数を返したりすることが可能です。JavaScriptの関数は「第一級関数(ファーストクラス関数)」と呼ばれ、変数・オブジェクト・配列などに自由に格納できるという特徴を持っています。そして、関数を引数として受け取る、戻り値として返す、あるいはその両方を行う関数のことを「高階関数(Higher Order Function)」と呼びます。代表的な高階関数には、map()、filter()、reduce()、forEach()などがあります。これらを活用す