みその計算物理学
ホーム はじめに リンク集
行列の掛け算の数値計算例(Javascript)
  • 行列を格納する多次元配列

    JavaScriptで多次元配列を作る際はJavaと似ているが少々違う。一度1次元配列をつくり、それらの各要素に1次元配列を作る必要がある。

  • 行列掛け算の仕組み

    まず3行3列の行列 A と B があるとしよう。また各行列の値を例えば行列 A の1行2列の成分を A12 と表記する。行列 A と B を掛けた結果の行列の1行2列の値は次のように書ける。

    A11XB12+A12XB22+A13XB32

    ここで行列 A の成分は列数、行列 B の成分は行数の番号が 1→2→3 というふうに増加していっている。一方結果の行列の値の成分の行数は行列 A の行数、列数は行列 B の列数と一致している。これらに注目すれば後はJavaScript言語の場合 for を使えば簡単にプログラムソースが書ける。

  • プログラムソース

    スクリプト部分

    <script language="JavaScript"><!--
    function matrixmultiply()
    {
            var N=3;
    
            A=new Array();
            B=new Array();
            C=new Array();
    
            for(var i=0;i<N;i++)
            {
                    A[i]=new Array();
                    B[i]=new Array();
                    C[i]=new Array();
            }
    
            A[0]=[0.0,1.0,2.0];
            A[1]=[1.0,2.0,3.0];
            A[2]=[2.0,3.0,4.0];
            B[0]=[0.0,1.0,2.0];
            B[1]=[1.0,2.0,3.0];
            B[2]=[2.0,3.0,4.0];
            C[0]=[0.0,0.0,0.0];
            C[1]=[0.0,0.0,0.0];
            C[2]=[0.0,0.0,0.0];
    
            for(var i=0;i<N;i++) 
            {
                    for(var j=0;j<N;j++) 
                    {
                            for(var k=0;k<N;k++) 
                            {
                                    C[i][j]=C[i][j]+A[i][k]*B[k][j];
                            }
                    }
            }
    
            document.output.g11.value=C[0][0];
            document.output.g12.value=C[0][1];
            document.output.g13.value=C[0][2];
            document.output.g21.value=C[1][0];
            document.output.g22.value=C[1][1];
            document.output.g23.value=C[1][2];
            document.output.g31.value=C[2][0];
            document.output.g32.value=C[2][1];
            document.output.g33.value=C[2][2];
    }
    --></script>

    フォーム部分

    <form name="input">
    <input type="button" value="計算する"onClick="matrixmultiply()"><br>
    </form>
    <form name="output">
    <input type="text" name="g11"><input type="text" name="g12"><input type="text" name="g13"><br>
    <input type="text" name="g21"><input type="text" name="g22"><input type="text" name="g23"><br>
    <input type="text" name="g31"><input type="text" name="g32"><input type="text" name="g33">
    </form>
  • JavaScript

    ボタン「計算する」を押すと計算結果が表示される。