学習環境
- Surface 3 (4G LTE)、Surface 3 タイプ カバー、Surface ペン(端末)
- Windows 10 Pro (OS)
- Nebo(Windows アプリ)
- iPad Pro + Apple Pencil
- MyScript Nebo(iPad アプリ)
- 参考書籍
数学読本〈5〉微分法の応用/積分法/積分法の応用/行列と行列式(松坂 和夫(著)、岩波書店)の第21章(もう1つの数学の基盤 - 行列と行列式)、21.4(行列式と面積・体積)、3次の行列式と体積、問43.を取り組んでみる。
3つのベクトル
で張られる平行六面体の体積は、4点が同一平面上にあるとき0になる。
すなわち、問題の等式の左辺の行列式を変形する。
よって必要十分条件である。
(証明終)
コード(Emacs)
Python 3
#!/usr/bin/env python3 from sympy import pprint, symbols, Triangle, Point2D, Matrix m = Matrix([[1, 1, 1, 1], [0, 1, 1, 2], [0, 1, 2, 2], [2, 2, 2, 2]]) pprint(abs(m.det()))
入出力結果(Terminal, Jupyter(IPython))
$ ./sample43.py 0 $
HTML5
<pre id="output0"></pre> <br> (<input id="x1" type="number" value="0">, <input id="y1" type="number" value="0">, <input id="z1" type="number" value="2">) <br> (<input id="x2" type="number" value="1">, <input id="y2" type="number" value="1">, <input id="z2" type="number" value="2">) <br> (<input id="x3" type="number" value="1">, <input id="y3" type="number" value="2">, <input id="z3" type="number" value="2">) <br> (<input id="x4" type="number" value="2">, <input id="y4" type="number" value="2">, <input id="z4" type="number" value="2">) <br> <button id="run0">run</button> <button id="clear0">clear</button> <script src="sample43.js"></script>
JavaScript
let pre0 = document.querySelector('#output0'), btn0 = document.querySelector('#run0'), btn1 = document.querySelector('#clear0'), input_x1 = document.querySelector('#x1'), input_y1 = document.querySelector('#y1'), input_z1 = document.querySelector('#z1'), input_x2 = document.querySelector('#x2'), input_y2 = document.querySelector('#y2'), input_z2 = document.querySelector('#z2'), input_x3 = document.querySelector('#x3'), input_y3 = document.querySelector('#y3'), input_z3 = document.querySelector('#z3'), input_x4 = document.querySelector('#x4'), input_y4 = document.querySelector('#y4'), input_z4 = document.querySelector('#z4'), inputs = [input_x1, input_y1, input_z1, input_x2, input_y2, input_z2, input_x3, input_y3, input_z3], p = (x) => pre0.textContent += x + '\n'; let det = (x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4) => (x2 - x1) * (y3 - y1) * (z4 - z1) + (z2 - z1) * (x3 - x1) * (y4 - y1) + (z3 - z1) * (y2 - y1) * (x4 - x1) - (x2 - x1) * (z3 - z1) * (y4 - y1) - (x3 - x1) * (y2 - y1) * (z4 - z1) - (z2 - z1) * (y3 - y1) * (x4 - x1); let output = () => { let x1 = parseFloat(input_x1.value), y1 = parseFloat(input_y1.value), z1 = parseFloat(input_z1.value), x2 = parseFloat(input_x2.value), y2 = parseFloat(input_y2.value), z2 = parseFloat(input_z2.value), x3 = parseFloat(input_x3.value), y3 = parseFloat(input_y3.value), z3 = parseFloat(input_z3.value), x4 = parseFloat(input_x4.value), y4 = parseFloat(input_y4.value), z4 = parseFloat(input_z4.value); p(det(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4)); }; inputs.forEach((input) => input.onchange = output); btn0.onclick = output; btn1.onclick = () => pre0.textContent = ''; output()
(, , )
(, , )
(, , )
(, , )
0 コメント:
コメントを投稿