2016年9月18日日曜日

学習環境/開発環境

代数系入門 (松坂 和夫(著)、岩波書店)の第1章(整数)、2(数学的帰納法と除法の定理)、問題5.を取り組んでみる。

問題5.

n=0 ( x+y ) n =1 r=0 n ( n r ) x nr y r =1 ( x+y ) n = r=0 n ( n r ) x nr y r ( x+y ) n+1 =( x+y ) ( x+y ) n =( x+y ) r=0 n ( n r ) x nr y r =x r=0 n ( n r ) x nr y r +y r=0 n ( n r ) x nr y r = r=0 n ( n r ) x n+1r y r + r=0 n ( n r ) x nr y r+1 = r=0 n ( n r ) x n+1r y r + r=1 n+1 ( n r1 ) x n( r1 ) y ( r1 )+1 = r=0 n ( n r ) x n+1r y r + r=1 n+1 ( n r1 ) x ( n+1 )r y r =( n 0 ) x n+10 y 0 + r=1 n ( n r ) x n+1r y r + r=1 n ( n r1 ) x ( n+1 )r y r +( n n+11 ) x ( n+1 )( n+1 ) y n+1 =( n 0 ) x n+10 y 0 + r=1 n ( ( n r )+( n r1 ) ) x n+1r y r +( n n+11 ) x ( n+1 )( n+1 ) y n+1 =( n+1 0 ) x n+10 y 0 + r=1 n ( n+1 r ) x n+1r y r +( n+1 n+1 ) x ( n+1 )( n+1 ) y n+1 = r=0 n+1 ( n+1 r ) x ( n+1 )r y r

JavaScript で確認。

HTML5

<label for="x0">x = </label>
<input id="x0" type="number"  value="5">
<label for="y0">y = </label>
<input id="y0" type="number"  value="10">
<label for="n0">n = </label>
<input id="n0" type="number" min="0" step="1"  value="2">

<div id="output0"></div>

<script src="array.js"></script>
<script src="sample5.js"></script>

JavaScript

コード(Emacs)

(function () {
    var input_x = document.querySelector('#x0'),
        input_y = document.querySelector('#y0'),
        input_n = document.querySelector('#n0'),
        inputs = [input_n, input_x, input_y],
        div_output = document.querySelector('#output0'),
        nl = '<br>',
        factorial,
        combination,
        output;

    console.log(inputs);
    factorial = function (n) {
        return Array.range(1, n + 1)
            .reduce(function (x, y) {
                return x * y;
            }, 1);
    };
    combination = function (n, r) {
        return factorial(n) / (factorial(r) * factorial(n - r));
    };

    output = function () {
        var left,
            right,
            x = parseFloat(input_x.value),
            y = parseFloat(input_y.value),        
            n = parseInt(input_n.value, 10);

        left = Math.pow(x + y, n);
        right = Array.range(n + 1)
            .map(function(r) {
                return combination(n, r) *
                    Math.pow(x, n - r) *
                    Math.pow(y, r);
            })
            .sum();
        div_output.innerHTML =
            '左辺 = ' + left + nl +
            '右辺 = ' + right + nl +
            '左辺 = 右辺 ' + (left === right) + nl +
            '|左辺 - 右辺| = ' + Math.abs(left - right) + nl;
    };

    inputs.forEach(function (input) {
        input.onchange = output;
    });

    output();
}());

0 コメント:

コメントを投稿