import 'dart:html';
import 'dart:math';
void main() {
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;
}
double a,beta;
a=0.33;
beta=0.95;
game sub=new game();
sub.th=th;
sub.a=a;
sub.beta=beta;
sub.makedata();
cx=sub.cx;
lx=sub.lx;
double c1;
c1=sub.getc(5,50);
String str=c1.toString();
querySelector('#sample').text=str;
}
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(){
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月20日 20:07