アットウィキロゴ

かがく

google.load("visualization", "1", {packages:["corechart"]});
var point = new Array();
var price = new Array();
var x = new Array();
var year = new Array();
var month = new Array();
var pr = new Array();
var p = new Array();
var k = new Array();
 
function sample() {
 
        var query = "SELECT * FROM " +
            '1Za516wbFCR-h3ac2_qayAIYXKYJdfvKXSan0Ol7s';
        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=?');
 
 
 
 
 
        $.ajax({
            url: url.join(''),
            dataType: 'jsonp',
            success: function (data) {
                var rows = data['rows'];
 
 
 
                sx = 0;
 
                for (var i in rows) {
                    sx = sx + 1;
                    pr[sx]=rows[i][6];
 }
 
 
                number_p = sx;
 
 mm=12;
 yy=1999;
 
   for(s=1;s<number_p+1;s++){
  mm=mm+1;
  if(mm>12)yy=yy+1;
  if(mm>12)mm=1;
  year[s]=yy;
  month[s]=mm;
 }
 
 s1=0;
 for(s=1;s<number_p+1;s++){
 h=0;
 if(year[s]==2008)h=h+1;
 if(month[s]==1)h=h+1;
 if(h==2)s1=s;    
 }
 
 sx=0;
 for(s=s1;s<number_p+1;s++){
 sx=sx+1;
 price[sx]=pr[s];
 }
 
 
 samplex();
 
 
 
            }
        });
 
}
 
function samplex() {
 
        var query = "SELECT * FROM " +
            '1_pByhOy0AJcx0egANAwpnQwwtdftN5Qfmlou5rHK';
        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=?');
 
 
 
 
 
        $.ajax({
            url: url.join(''),
            dataType: 'jsonp',
            success: function (data) {
                var rows = data['rows'];
 
 
 
                sx = 0;
 
                for (var i in rows) {
                    sx = sx + 1;
                    point[sx]=rows[i][84];
                }
 
 
                number = sx;
 
 mm=12;
 yy=2007;
 
   for(s=1;s<number_p+1;s++){
  mm=mm+1;
  if(mm>12)yy=yy+1;
  if(mm>12)mm=1;
  year[s]=yy;
  month[s]=mm;
    }
 
 
        p[1]=0;
 for(s=2;s<number+1;s++){
 p[s]=price[s]-price[s-1];    
 }
 
 
for(s=1;s<number+1;s++){
k[s]=100;    
}            
 
ols();         
 
fast(); 
 
 for(tr=1;tr<4;tr++){
 
ols();
 
den();
 
optimal();
 
            }
 
 
 for(s=0;s<number+1;s++){
 x[s]=new Array();    
 }
 x[0][0]="date";
 x[0][1]="鉱工業指数";
 x[0][2]="潜在";
 for(s=1;s<number+1;s++){
 x[s][0]=""+year[s]+"年"+month[s]+"月";    
 x[s][1]=1*point[s];   
 x[s][2]=k[s];   
  }
 
 
var data =google.visualization.arrayToDataTable(x);
var op = {title: '比較'};
 
var chart = new google.visualization.LineChart(document.getElementById('memo'));
chart.draw(data, op);
 
 
 
 
 
 
 
            }
        });
 
}
 
 
 function ols(){
 
var y1=new Array();
var y2=new Array();
 
for(s=1;s<number+1;s++){
y1[s]=p[s];    
}    
 
 
for(s=1;s<number+1;s++){
y2[s]=1*point[s]-k[s];    
}   
 
b1=0;    
for(s=1;s<number+1;s++){
b1=b1+y1[s]*y2[s];    
}    
 
a1=0;    
for(s=1;s<number+1;s++){
a1=a1+y2[s]*y2[s];    
}      
 
alpha=b1/a1;
 
s1=0; 
for(s=1;s<number+1;s++){
s1=s1+(y1[s]-alpha*y2[s])*(y1[s]-alpha*y2[s]);    
}
 
sp=s1/number; 
 
sig=sp; 
 
}
 
 
function fast(){
 
  var ys=new Array();
 
 
    for(s=1;s<200;s++){
    ys[s]=80+0.2*s;    
    }
 
    var v=new Array();
    var gotos=new Array();
    var op=new Array();
 
    for(s=1;s<number+1;s++){
    v[s]=new Array(); 
    gotos[s]=new Array();
    }
 
 
    for(s=1;s<200;s++){
    x1=alpha*(1*point[1]-ys[s]);
 v[1][s]=(p[1]-x1)*(p[1]-x1)/sig;
    }
 
    minv=0;
    for(t=2;t<number+1;t++){
    for(s=1;s<200;s++){  
    x1=alpha*(point[t]-ys[s]);
    e1=(x1-p[t])*(x1-p[t])/sig;
    minv=999999;
    sxs=0;
    for(sx=1;sx<200;sx++){
    v1=e1+v[t-1][sx];
    if(v1<minv)sxs=sx;
    if(v1<minv)minv=v1;                
    }        
    gotos[t][s]=sxs;
    v[t][s]=minv;
    }
    }
 
   sx=0;
   minv=9999;
    for(s=1;s<200;s++){
    if(v[number][s]<minv)sx=s;  
    if(v[number][s]<minv)minv=v[number][s];    
    }
 
 
 
    op[number]=sxs;
    for(s=1;s<number;s++){
    t=number+1-s;
    s1=op[t];
    op[t-1]=gotos[t][s1];
    }
 
 
 for(s=1;s<number+1;s++){
 s1=op[s];
 k[s]=ys[s1];    
 }
 
 
 
 
 
 
 
 
    }
 
    function den(){
 
e1=0;
for(s=1;s<number;s++){
e1=e1+(k[s+1]-k[s])*(k[s+1]-k[s]);    
}
 
sig_th=e1/number;  
 
}
 
 
    function optimal(){
 
    var ys=new Array();
 
 
    for(s=1;s<200;s++){
    ys[s]=80+0.2*s;    
    }
 
    var v=new Array();
    var gotos=new Array();
    var op=new Array();
 
    for(s=1;s<number+1;s++){
    v[s]=new Array(); 
    gotos[s]=new Array();
    }
 
 
    for(s=1;s<200;s++){
    x1=alpha*(1*point[1]-ys[s]);
 v[1][s]=(p[1]-x1)*(p[1]-x1)/sig;
    }
 
    minv=0;
    for(t=2;t<number+1;t++){
    for(s=1;s<200;s++){  
    x1=alpha*(1*point[t]-ys[s]);
    e1=(x1-p[t])*(x1-p[t])/sig;
    minv=999999999;
    sxs=0;
    for(sx=1;sx<200;sx++){
  e3=(ys[s]-ys[sx])*(ys[s]-ys[sx])/sig_th; 
  v1=e1+e3+v[t-1][sx];
    if(v1<minv)sxs=sx;
    if(v1<minv)minv=v1;                
    }        
    gotos[t][s]=sxs;
    v[t][s]=minv;
    }
    }
 
   sx=0;
   minv=999999;
    for(s=1;s<200;s++){
    if(v[number][s]<minv)sx=s;  
    if(v[number][s]<minv)minv=v[number][s];    
    }
 
 
 
 
    op[number]=sxs;
    for(s=1;s<number;s++){
    t=number+1-s;
    s1=op[t];
    op[t-1]=gotos[t][s1];
    }
 
 
 for(s=1;s<number+1;s++){
 s1=op[s];
 k[s]=ys[s1];    
 }
 
 
 
 
 
    }
最終更新:2016年01月03日 14:37