アットウィキロゴ

dsge dare5

import 'dart:html';
import 'dart:math';
 
void main() {
 
CanvasElement canvas = new Element.tag("canvas");
canvas.height = 700;
canvas.width = 700;
document.body.children.add(canvas);
var ctx = canvas.getContext("2d");
ctx.font ="30px 'MS ゴシック'";
ctx.fillText("猫", 50, 50);
 
ctx.beginPath();
ctx.moveTo(100, 100);
ctx.lineTo(100,600);
ctx.lineTo(600, 600);
ctx.stroke();
 
List<double>x=new List<double>(101);
List<double>y=new List<double>(101);
 
int s;
 
int m;
List<double> cx=new List<double>(1001);
List<double> lx=new List<double>(1001);
List<double> th=new List<double>(11);
List<double> k=new List<double>(101);
 
for (m=1;m<11;m++){ 
  th[m]=0.95+0.01*m; 
} 
 
 
game sub=new game();
sub.th=th;
sub.makedata();
cx=sub.cx;
lx=sub.lx;
 
 
double maxc,minc;
 
 
maxc=0.0;
for(s=10;s<91;s++){
if(cx[s]>maxc)maxc=cx[s];
}
 
minc=5000.0;
for(s=10;s<91;s++){
if(cx[s]<minc)minc=cx[s];
}
 
 
 
for(s=10;s<91;s++){
x[s]=5*s+100.0;
y[s]=600-500*(cx[s]-minc)/(maxc-minc);
}
 
 
ctx.beginPath();
ctx.moveTo(x[10], y[10]);
for(s=11;s<90;s++){
ctx.lineTo(x[s],y[s]);
}
ctx.stroke();
 
 
}
 
class game{
 
  List<double> cx=new List<double>(1001);
  List<double> lx=new List<double>(1001);
  List<double> cxs=new List<double>(1001);
  List<double> lxs=new List<double>(1001);
  List<double> th=new List<double>(11);
  List<double> k=new List<double>(101);
 
  int s,sx;
  int m,n;
  double a,beta;
  double ls,ks;
  double h;
  double c1,l1,k1;
  double n1;
  int n2,n3;
 
void makedata(){ 
 
 
 
 
  a=0.33; 
  beta=0.95; 
  ls=(1-a)/(2-a); 
  ks=ls*pow((1 / beta - 1) / a , 1 / (a - 1)); 
  h=2*ks/100; 
 
  h=2*ks/100; 
  for (n=1;n<101;n++){ 
    k[n]=n*h; 
    for (m=1;m<11;m++){ 
      l1=ls; 
      setl(m,n,l1);
      c1=th[m]*pow(k[n],a)*pow(l1,1-a); 
      setc(m,n,c1);
    } 
  } 
 
  int t,mx;
  double uc,w1,r1;
  double ep;
 
  t=0; 
  while(t<100){ 
    for (m=1;m<11;m++){ 
      for (n=10;n<91;n++){ 
        c1=getc(m,n);
        l1=getl(m,n);
        k1=k[n]+th[m]*pow(k[n],a)*pow(l1,1-a)-c1; 
        n1=k1/h; 
        n2=n1.floor(); 
        n3=n2+1; 
        uc=0.0; 
        for (mx=1;mx<11;mx++){ 
          c1=getc(mx,n2)+(n1-n2)*(getc(mx,n3)-getc(mx,n2)); 
          l1=getl(mx,n2)+(n1-n2)*(getl(mx,n3)-getl(mx,n2)); 
          r1=th[mx]*a*pow(k1,a-1)*pow(l1,1-a); 
          uc=uc+(beta*(1+r1))/c1; 
        } 
        uc=0.1*uc; 
        setcs(m,n,1/uc); 
        w1=th[m]*(1-a)*pow(k[n],a)*pow(getl(m,n),-a); 
        setls(m,n,1-getc(m,n)/w1); 
      } 
    } 
    ep=0.0; 
    for (m=1;m<11;m++){ 
      for (n=10;n<91;n++){ 
        ep=ep+pow(getc(m,n)-getcs(m,n),2)+pow(getl(m,n)-getls(m,n),2); 
      } 
    } 
    for (m=1;m<11;m++){ 
      for (n=10;n<91;n++){ 
        setc(m,n,getcs(m,n)); 
        setl(m,n,getls(m,n)); 
      } 
    } 
    if (ep<0.0001)t=1000; 
    t=t+1; 
  } 
 
 
 
 
} 
 
 
double getcs(int s,int sx){
int n;
double c1;
n=number(s,sx);
c1=cxs[n];
return c1;
}
void setcs(int s,int sx,double c1){
int n;
n=number(s,sx);
cxs[n]=c1;
}
double getls(int s,int sx){
int n;
double c1;
n=number(s,sx);
c1=lxs[n];
return c1;
}
 
void setls(int s,int sx,double c1){
int n;
n=number(s,sx);
lxs[n]=c1;
}
 
double getc(int s,int sx){
int n;
double c1;
n=number(s,sx);
c1=cx[n];
return c1;
}
void setc(int s,int sx,double c1){
int n;
n=number(s,sx);
cx[n]=c1;
}
double getl(int s,int sx){
int n;
double c1;
n=number(s,sx);
c1=lx[n];
return c1;
}
void setl(int s,int sx,double c1){
int n;
n=number(s,sx);
lx[n]=c1;
}
int number(int s,int sx){
int n;
  n=100*(s-1)+sx;
return n;  
}
 
}
最終更新:2013年11月21日 05:16