2016年8月24日水曜日

学習環境/開発環境

線型代数入門 (松坂 和夫(著)、岩波書店)の第4章(複素数、複素ベクトル空間)、1(複素数)、問2.を取り組んでみる。

問2.

α=a+bi,β=c+di α±β=( a±c )+( b±d )i α ¯ ± β ¯ =( a+c )( b±d )i αβ=( acbd )+( adbc )i α ¯ β ¯ =( abi )( cdi ) =( acbd )( ad+bc )i α β = a+bi c+di = ( a+bi )( cdi ) c 2 + d 2 = ( ac+bd )( adbc )i c 2 + d 2 α ¯ β ¯ = abi cdi = ( abi )( c+di ) c 2 + d 2 = ( ac+bd )+( adbc )i c 2 + d 2

number.js で確認。

JavaScript

コード(Emacs)

(function () {
    'use strict';
    var nl = '<br><br>',
        div_output = document.querySelector('#output0'),
        button_calc = document.querySelector('#calc0'),
        calc;

    calc = function () {
        var sign1 = Math.random() < 0.5 ? 1 : -1,
            sign2 = Math.random() < 0.5 ? 1 : -1,
            sign3 = Math.random() < 0.5 ? 1 : -1,
            sign4 = Math.random() < 0.5 ? 1 : -1,
            a = new Complex(sign1 * Math.random() * 100,
                            sign2 * Math.random() * 100),
            b = new Complex(sign3 * Math.random() * 100,
                            sign4 * Math.random() * 100),
            z1,
            z2,
            z = [],
            output = '';    
        
        z1 = a.add(b).conjugate();
        z2 = a.conjugate().add(b.conjugate());
        z[0] = ['+', z1, z2];

        z1 = a.sub(b).conjugate();
        z2 = a.conjugate().sub(b.conjugate());
        z[1] = ['-', z1, z2];

        z1 = a.mul(b).conjugate();
        z2 = a.conjugate().mul(b.conjugate());
        z[2] = ['*', z1, z2];

        z1 = a.div(b).conjugate();
        z2 = a.conjugate().div(b.conjugate());
        z[3] = ['/', z1, z2];

        output +=
            'a = <math>' + a + '</math>' + nl +
            'b = <math>' + b + '</math>' + nl;

        z.forEach(function (x) {
            output += x[0] + ': ' + x[1].isEqual(x[2]) + nl;
        });

        div_output.innerHTML = output;
    };

    button_calc.onclick = calc;
}());

0 コメント:

コメントを投稿