p=new Array();
c=new Array();
n=new Array();
a=new Array();
var number,artistnumber,subnumber;
artist=new Array();
ar=new Array();
point=new Array();
x=new Array();
y=new Array();
var ax=new Array();
var ap=new Array();
var bx=new Array();
var b=new Array();
var z;
var lam=new Array();
var v=new Array();
y2=new Array();
x2=new Array();
y1=new Array();
x1=new Array();
var ax2=new Array();
function fusion() {
var query = "SELECT * FROM " +
'1w_rje_ZRhya9BXyrYaa4wpEeq-ehNxdNVKt5fG4';
var encodedQuery = encodeURIComponent(query);
var url = ['https://www.googleapis.com/fusiontables/v1/query'];
url.push('?sql=' + encodedQuery);
url.push('&key=AIzaSyAH0WCAXRIdHdbI-6bnMSN4kVDDZZmGyqY');
url.push('&callback=?');
var sx;
sx=0;
$.ajax({
url: url.join(''),
dataType: 'jsonp',
success: function (data) {
var rows = data['rows'];
var tx;
for (var i in rows) {
sx=sx+1;
a[sx]= rows[i][0];
n[sx]=parseInt(rows[i][1]);
p[sx]= parseInt(rows[i][2]);
c[sx]= parseInt(rows[i][3]);
}
number=sx;
select();
pc();
power();
$("#chart").text(number);
}
});
}
function select(){
var s,sx,h;
artistnumber=0;
for(s=1;s<number+1;s++){
h=0;
for(sx=1;sx<artistnumber+1;sx++){
if(a[s]==artist[sx])h=100;
}
if(h<60)artistnumber=artistnumber+1;
if(h<60)artist[artistnumber]=a[s];
}
for(s=1;s<artistnumber+1;s++){
point[s]=new Array();
}
for(sx=1;sx<artistnumber+1;sx++){
point[sx][5]=0;
point[sx][4]=0;
}
for(s=1;s<number+1;s++){
sxs=0;
for(sx=1;sx<artistnumber+1;sx++){
if(a[s]==artist[sx])sxs=sx;
}
n1=n[s];
point[sxs][n1]=p[s];
}
for(s=1;s<artistnumber+1;s++){
x[s]=point[s][4];
y[s]=point[s][5];
}
}
function pc(){
var avx,avy,sigx,sigy;
avx=0;
for(s=1;s<artistnumber+1;s++){
avx=avx+x[s];
}
avx=avx/artistnumber;
avy=0;
for(s=1;s<artistnumber+1;s++){
avy=avy+y[s];
}
avy=avy/artistnumber;
sigx=0;
for(s=1;s<artistnumber+1;s++){
sigx=sigx+(x[s]-avx)*(x[s]-avx);
}
sigx=Math.sqrt(sigx/artistnumber);
sigy=0;
for(s=1;s<artistnumber+1;s++){
sigy=sigy+(y[s]-avy)*(y[s]-avy);
}
sigy=Math.sqrt(sigy/artistnumber);
for(s=1;s<artistnumber+1;s++){
x1[s]=(x[s]-avx)/sigx;
y1[s]=(y[s]-avy)/sigy;
}
alert(artistnumber);
for(s=1;s<3;s++){
ap[s]=new Array();
}
z=0;
for(s=1;s<artistnumber+1;s++){
z=z+x1[s]*x1[s];
}
ap[1][1]=z;
z=0;
for(s=1;s<artistnumber+1;s++){
z=z+y1[s]*y1[s];
}
ap[2][2]=z;
z=0;
for(s=1;s<artistnumber+1;s++){
z=z+x1[s]*y1[s];
}
ap[1][2]=z;
ap[2][1]=z;
}
function power(){
var s;
for(s=1;s<3;s++){
v[s]=new Array();
}
for(s=1;s<3;s++){
ax[s]=new Array();
}
ax=ap;
seekbs();
lam[1]=z;
for(s=1;s<3;s++){
v[1][s]=b[s];
}
for(s=1;s<3;s++){
for(sx=1;sx<3;sx++){
ax[s][sx]=ax[s][sx]-z*b[s]*b[sx];
}
}
seekbs();
lam[2]=z;
for(s=1;s<4;s++){
v[2][s]=b[s];
}
for(s=1;s<number+1;s++){
x2[s]=x1[s]*v[1][1]+y1[s]*v[1][2];
y2[s]=x1[s]*v[2][1]+y1[s]*v[2][2];
}
alert(x2[1]);
}
function seekbs(){
var mode;
b[1]=1;
b[2]=0;
mode=0;
while(mode<10){
seekb();
var e;
e=0;
for(s=1;s<3;s++){
e=e+ (bx[s]-b[s])*(bx[s]-b[s]);
}
if(e<0.01)mode=100;
for(s=1;s<3;s++){
b[s]=bx[s];
}
mode=mode+1;
}
}
function seekb(){
var s,sx;
var b1;
for(s=1;s<3;s++){
b1=0;
for(sx=1;sx<3;sx++){
b1=b1+ax[s][sx]*b[sx];
}
bx[s]=b1;
}
z=0;
for(s=1;s<3;s++){
z=z+bx[s]*bx[s];
}
z=Math.sqrt(z);
for(s=1;s<3;s++){
bx[s]=bx[s]/z;
}
}
最終更新:2014年01月11日 15:14