2017年6月30日金曜日

C# out キーワード

C# の out キーワードについての簡単なメモです。

out キーワードは、メソッドにオブジェクトを参照渡しすることができます。
下記例では、ModifyText メソッドでは、値のコピーが渡されます。このため ModifyText の呼び出し後に、ModifyText の呼び出し元のオブジェクト(text)そのものに変化はありません。

一方で、後続の ModifyTextOut では、引数に out キーワードを伴います。ModifyTextOut を呼び出す際にも、引数に out キーワードをつけます。out キーワードは参照渡しのため、呼び出し元で ModifyTextOut に渡される引数(out text)の、メモリのアドレスを渡しています。ModifyTextOut 内では text のアドレスを経由して、ModifyText の呼び出し元のオブジェクト(text)そのものの値を書き換えています。

class Program
{
    static void Main(string[] args)
    {
        string text = "abc";
        ModifyText(text);
        Console.WriteLine("ModifyText の後:" + text);
        ModifyTextOut(out text);
        Console.WriteLine("ModifyTextOut の後:" + text);
        Console.ReadLine();
    }

    private static void ModifyText(string param)
    {
        param = "xxx";
    }

    private static void ModifyTextOut(out string param)
    {
        param = "zzz";
    }
}

実行結果です。
C# out キーワード

2017年6月26日月曜日

行列式の求め方

次のような行列があるとします。

a11  a12  a13
a21  a22  a23
a31  a32  a33


行列式は次のように計算することで求めることができます。

(a11 x a22 x a33 + a12 x a23 x a31 + a13 x a21 x a32) - (a11 x a23 x a32 + a12 x a21 x a33 + a13 x a22 x a31)

2017年6月24日土曜日

行基本変形を利用した逆行列の求め方

逆行列

逆行列は、ある行列と掛けると、単位行列が得られる行列のことです。

AB = 単位行列

OR

BA = 単位行列


行基本変形


行基本変形は、次の3つの変形方法です。

1.ある行と、他の行を入れ替える
2.ある行を n 倍する
3.x 行目 に n 倍した値を、y 行目に足す

これら変形方法を利用して逆行列を求めることができます。

例えば、次の行列 A の逆行列を求めてみます。

行列 A
1 0 0
0 1 0
0 3 1


手順1:
行列 A のとなりに単位行列を書きます。

1 0 0 | 1 0 0
0 1 0 | 0 1 0
0 3 1 | 0 0 1

手順2:
行基本変形の3つの変形方法のいずれかを使って、行列 A を単位行列に変換します。
ここでは、(3, 2) 成分を 0 にすると、行列 A が単位行列になります。
(3, 2) 成分を 0 にするために、基本変形2を使って「2 行目を -3 倍した値を、3 行目に足す」をします。

すると、次の結果が得られます。行列 A は単位行列になり、行列 A の右側に、行列 A の逆行列を求めることができました。
1 0 0 | 1  0 0
0 1 0 | 0  1 0
0 0 1 | 0 -3 1

行列の成分

行列 A の(2, 3)成分は、

23)・・・(行のインデックス列のインデックス

と読みます。「行 → 列」の順番で記される、と覚えましょう。
行を X、列を Y と考えるんでしょうか!?

転置行列

転置行列は、行列の行と列を入れ替えたものです。

簡単な例:

行列 A
1 2 3
4 5 6


行列 tA
1 4
2 5
3 6