学習環境/開発環境
- Surface 3 (4G LTE)、Surface 3 タイプ カバー、Surface ペン(端末)
- Windows 10 Pro (OS)
- 数式入力ソフト(TeX, MathML): MathType
- MathML対応ブラウザ: Firefox、Safari
- MathML非対応ブラウザ(Internet Explorer, Google Chrome...)用JavaScript Library: MathJax
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- JavaScript (プログラミング言語)
- kjs-math-number (JavaScript Library)
- D3.js (JavaScript Library)
- Safari(Web browser)
数学読本〈3〉平面上のベクトル/複素数と複素平面/空間図形/2次曲線/数列 (松坂 和夫(著)、岩波書店)の第10章(新しい数とその表示 - 複素数と複素平面)、10.1(複素平面)、ド・モアブルの公式と複素数のn乗根、問10、11、12、13.を取り組んでみる。
問7.
問11.
問12.
問13.
問12の図示について。
number.js、D3.js を利用。
JavaScript
コード(Emacs)
(function () {
'use strict';
var svg,
width = 600,
height = 600,
padding = 50,
min = -2,
max = 2,
xscale,
xaxis,
yscale,
yaxis,
points = [],
mag,
arg,
c,
k,
complexFromMagArg;
complexFromMagArg = function (mag, arg) {
var real = mag * Math.cos(arg),
imag = mag * Math.sin(arg);
return new Complex(real, imag);
};
mag = Math.pow(2, 1/4);
arg = Math.PI / 8;
for (k = 0; k < 4; k += 1) {
c = complexFromMagArg(mag, arg + k * Math.PI);
points.push([c.getReal(), c.getImag(), 'red']);
}
mag = 1;
arg = Math.PI / 6;
for (k = 0; k < 3; k += 1) {
c = complexFromMagArg(mag, arg + k * 2 * Math.PI / 3);
points.push([c.getReal(), c.getImag(), 'green']);
}
mag = Math.sqrt(2);
arg = Math.PI / 6;
for (k = 0; k < 4; k += 1) {
c = complexFromMagArg(mag, arg + k * Math.PI / 2);
points.push([c.getReal(), c.getImag(), 'blue']);
}
mag = 1;
arg = Math.PI / 5;
for (k = 0; k < 5; k += 1) {
c = complexFromMagArg(mag, arg + k * 2 * Math.PI / 5);
points.push([c.getReal(), c.getImag(), 'brown']);
}
xscale = d3.scaleLinear()
.domain([min, max])
.range([padding, width - padding]);
yscale = d3.scaleLinear()
.domain([min, max])
.range([height - padding, padding]);
xaxis = d3.axisBottom().scale(xscale);
yaxis = d3.axisLeft().scale(yscale);
svg = d3.select('#graph0')
.append('svg')
.attr('width', width)
.attr('height', height);
svg.selectAll('circle')
.data(points)
.enter()
.append('circle')
.attr('cx', function (d) {
return xscale(d[0]);
})
.attr('cy', function (d) {
return yscale(d[1]);
})
.attr('r', 5)
.attr('fill', function (d) {
return d[2];
});
svg.append('g')
.attr('transform', 'translate(0, ' + (height / 2) + ')')
.call(xaxis);
svg.append('g')
.attr('transform', 'translate(' + (width / 2) + ', 0)')
.call(yaxis);
}());
0 コメント:
コメントを投稿