math-spectral-norm.js

来自「linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自Web」· JavaScript 代码 · 共 52 行

JS
52
字号
// The Great Computer Language Shootout// http://shootout.alioth.debian.org///// contributed by Ian Osgoodfunction A(i,j) {  return 1/((i+j)*(i+j+1)/2+i+1);}function Au(u,v) {  for (var i=0; i<u.length; ++i) {    var t = 0;    for (var j=0; j<u.length; ++j)      t += A(i,j) * u[j];    v[i] = t;  }}function Atu(u,v) {  for (var i=0; i<u.length; ++i) {    var t = 0;    for (var j=0; j<u.length; ++j)      t += A(j,i) * u[j];    v[i] = t;  }}function AtAu(u,v,w) {  Au(u,w);  Atu(w,v);}function spectralnorm(n) {  var i, u=[], v=[], w=[], vv=0, vBv=0;  for (i=0; i<n; ++i) {    u[i] = 1; v[i] = w[i] = 0;  }  for (i=0; i<10; ++i) {    AtAu(u,v,w);    AtAu(v,u,w);  }  for (i=0; i<n; ++i) {    vBv += u[i]*v[i];    vv  += v[i]*v[i];  }  return Math.sqrt(vBv/vv);}for (var i = 6; i <= 48; i *= 2) {    spectralnorm(i);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?