六面体の頂点をたどる(7)

固有値が求まらなかったので、数値的に求める。
ニュートン法でやってみた。


Array.prototype.value = function(x) {
var v = this[this.length-1];
for(var i = this.length - 2; i >= 0; i--)
v = v * x + this[i];
return v;
}

Array.prototype.differential = function() {
var f = [ ];
for(var i = 0; i < this.length - 1; i++)
f[i] = this[i+1] * (i + 1);
return f;
}

var a = [ 35, 35, -47, -12, 13, 1, -1 ]; // 関数
var x = [ -2.7, -2.2, -0.6, 1.6, 2.2, 2.6 ]; // 仮の解

var eps = 1e-13;
var df = a.differential();
for(var i = 0; i < x.length; i++) {
var v;
while(Math.abs(v = a.value(x[i])) > eps) {
x[i] -= v / df.value(x[i]);
}
WScript.Echo(x[i]);
}

こうなった。

-2.64575131106459
-2.23606797749979
-0.618033988749895
1.61803398874989
2.23606797749979
2.64575131106459

もう一度考え直したら、因数分解できた。
それを入れると、元の固有方程式は、

3(1-λ)(2-λ)2(3-λ)(1+2λ-λ2)(2-λ2)(3-λ2)2
(5-λ2)(7-λ2)(1+λ-λ2)(2-5x24) = 0

固有値は、

 0,1,2,3,1\pm\sqrt{2},\pm\sqrt{3},\pm\sqrt{5},\pm\sqrt{7},\frac{1\pm\sqrt{5}}{2},\pm\frac{\sqrt{10\pm 2\sqrt{17}}}{2}