y=new Array();
x=new Array();
y1=new Array();
x1=new Array();
a=new Array();
var number;
var ax=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();
function sample() {
var query = "SELECT * FROM ";
query=query+"1LwFrC2WTk7mbNj6ZD8nEIdxeLVZluDxXSoPG0LU";
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'];
for (var i in rows) {
sx=sx+1;
y[sx]=parseInt(rows[i][2]);
x[sx]=parseInt(rows[i][1]);
}
number=sx;
select();
power();
table();
}
});
}
function select(){
var avx,avy,sigx,sigy;
avx=0;
for(s=1;s<number+1;s++){
avx=avx+x[s];
}
avx=avx/number;
avy=0;
for(s=1;s<number+1;s++){
avy=avy+y[s];
}
avy=avy/number;
sigx=0;
for(s=1;s<number+1;s++){
sigx=sigx+(x[s]-avx)*(x[s]-avx);
}
sigx=Math.sqrt(sigx/number);
sigy=0;
for(s=1;s<number+1;s++){
sigy=sigy+(y[s]-avy)*(y[s]-avy);
}
sigy=Math.sqrt(sigy/number);
for(s=1;s<number+1;s++){
x1[s]=(x[s]-avx)/sigx;
y1[s]=(y[s]-avy)/sigy;
}
for(s=1;s<3;s++){
a[s]=new Array();
}
z=0;
for(s=1;s<number+1;s++){
z=z+x1[s]*x1[s];
}
a[1][1]=z;
z=0;
for(s=1;s<number+1;s++){
z=z+y1[s]*y1[s];
}
a[2][2]=z;
z=0;
for(s=1;s<number+1;s++){
z=z+x1[s]*y1[s];
}
a[1][2]=z;
a[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=a;
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];
}
}
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日 09:31