BMatrix 0.4
行ベクトルを2進行列として追加しました。以下の実行結果の中の $\boldsymbol{d}$ が行ベクトルです。BVector を継承してBRVector (bit row vector)オブジェクトを作ろうかとも思いましたが、まずはこの実装で作ってみました。結果を $\TeX$ で整形しました。
実行結果
ソース
"expand source" を押すと展開されます。元に戻すには、このページを再ロードしてください。
bmatrix04.html
今回追加したテストをハイライト表示してあります。
/**
* 結果表示用の関数です。HTMLとして展開します。
* @since 0.1
*/
function writeln(str) {
document.writeln(str + "<br>");
}
/**
* テストの実行と表示を行う関数です。
* @since 0.1
*/
function test(caption, exp, tex) {
writeln("<span style='font-family: monospace'>");
writeln(caption + " " + exp);
writeln("</span>");
var ans = eval(exp);
if (isNaN(ans)) {
writeln("$$" + tex + "=" + ans.toTeX() + "$$");
} else {
writeln("$$" + tex + "=" + ans + "$$");
}
}
// テストのメインです。
test("コンストラクタ", "A = new BMatrix(4,4,[1,4],[2,4],[3,4],[4,4])", "A");
test("コンストラクタ", "B = new BMatrix(4,4,[1,4],[2,3],[3,2],[4,1])", "B");
test("要素", "A.getValue(4,3)", "(A)_{4,3}");
test("論理和", "A.or(B)", "A \\vee B");
test("論理積", "A.and(B)", "A \\wedge B");
test("絶対値", "A.abs()", "\\left| A \\right|");
test("反転", "A.inv()", "\\overline{A}");
test("転置", "A.tran()", "^tA");
test("論理差", "A.diff(B)", "A - B");
test("排他的論理和", "A.xor(B)", "A \\oplus B");
test("積", "A.mul(B)", "A B");
test("コンストラクタ", "c = new BVector(0,0,1,1)", "\\boldsymbol{c}");
test("ベクトルとの積", "A.mul(c)", "A \\boldsymbol{c}");
test("コンストラクタ", "d = new BMatrix(1,4,[1,1],[1,4])", "\\boldsymbol{d}");
test("転置", "d.tran()", "^t\\boldsymbol{d}");
bmatrix04.js
2進行列を定義します。
/**
* 2進行列の転置して(transpose)返します。
* @return 行列の転置を返します。行ベクトルの場合は列ベクトルを返します。
* @since 0.4
*/
tran : function() {
if (this.n == 1) { // 行ベクトル
var bv = new BVector(this.m);
for (var j = 1; j <= this.m; j++)
bv.setValue(j, this.getValue(1, j));
return bv;
} else {
var bm = new BMatrix(this.m, this.n);
for (var i = 1; i <= this.n; i++)
for (var j = 1; j <= this.m; j++)
bm.setValue(j, i, this.getValue(i, j));
return bm;
}
},
Powered by
SyntaxHighlighter
MathJax