#limit.dll ֵ⺯
< limit.dll ֵ⺯ʹ˵
OpenForcalչ̬⣬ͨʱҪÿ·
⺯˵fcerrʾFORCALصд롣
ĲҪFORCALԸòȡ㡣
>
<max1һάֵʽ
max1(#"f",x,eps,k)һάֵʽ

   xһά飬Ϊ4x[0]żֵֵʱżֵ㣬x[1]ؼֵ㴦ĺֵx[2]ʵʵx[3]ر־x[2]=kпû㾫Ҫ󣬷صļֵΪοx[3]<0˵صļֵΪСֵ㣬x[3]>0˵صļֵΪֵ㡣
   epsƾҪһȡ1E-10 ~ 1E-35֮
   kֵ
   #"f"ʽƣڼĿ꺯f(x)ֵ뵼f'(x)ֵûԱࡣñʽ3һΪԱڶΪĿ꺯f(x)ֵΪf'(x)ֵʽ£
    "f"(x,y0,y1)=one
    {y0=(x-1)*(10-x), //Ŀ꺯f(x)ֵ
     y1=-2*x+11       //f'(x)ֵ
    };

   fcerr=-2ݹƣ
   fcerr=-1δÿɽⲿܣ
   fcerr=1ָıʽڣ
   fcerr=2ָıʽδͨ
   fcerr=3ָıʽĲƥ䣻
   fcerr=4û飻
   fcerr=5ָ鲻ڣ
   fcerr=6ָ̫С
   fcerr=7k<1eps<=0

   ӣʽĿ꺯
     f(x)=(x-1)(10-x)
   ļֵ뼫ֵ㴦ĺֵȡֵx[0]=1.0eps=1E-10k=10
   £

   clear[];
   newdoublearrays[1];//飻
   newdoublearray[0,4,1];//ųֵ
   "f"(x,y0,y1)=one{y0=(x-1)*(10-x),y1=-2*x+11};//壻
   max1[ #"f",0,1e-10,10];//㣻
   outarray[0]; //
>
<maxnnάֵʽ
maxn(n,#"f",x,eps,k)nάֵʽ

   nԱ
   xһά飬Ϊn+3ǰnnֵʱżֵn꣬x[n]ؼֵ㴦ĺֵx[n+1]ʵʵx[n+2]ر־x[n+1]=kпû㾫Ҫ󣬷صļֵΪοx[n+2]<0˵صļֵΪСֵ㣬x[n+2]>0˵صļֵΪֵ㣬x[n+2]=0˵صΪ㡣
   eps־ȡ
   kֵ
   #"f"ʽƣڼĿ꺯f(x0,x1,...,xn-1)ֵƫֵûԱࡣñʽn+2ǰnΪԱһѡ־ʽ£
    "f"(x0,x1,xx,j)=which{eq[j,0],(x0-1)^2+(x1+2)^2+2,//j=0Ŀ꺯ֵ
                          eq[j,1],2*(x0-1),//j=1Ŀ꺯ԵһԱƫ
                          eq[j,2],2*(x1+2),//j=2Ŀ꺯ԵڶԱƫ
                         };

   fcerr=-2ݹƣ
   fcerr=-1δÿɽⲿܣ
   fcerr=1ʽ<1
   fcerr=2ָıʽڣ
   fcerr=3ָıʽδͨ
   fcerr=4ָıʽĲƥ䣻
   fcerr=5û飻
   fcerr=6ָ鲻ڣ
   fcerr=7ָ̫С
   fcerr=8k<1eps<=0

   ӣʽԪ
     z=(x0-1)^2+(x1+2)^2+2
   ļֵ뼫ֵ㴦ĺֵȡֵx0=1.0x1=0.0eps=1E-6k=10
   £

   clear[];
   newdoublearrays[1];//飻
   newdoublearray[0,2+3,0,0];//ųֵ
   "f"(x0,x1,xx,j)=which{eq[j,0],(x0-1)^2+(x1+2)^2+2,eq[j,1],2*(x0-1),2*(x1+2)};//壻
   maxn[2, #"f",0,1e-6,10  ];//㣻
   outarray[0]; //
>
<lplqʽԼԹ滮
lplq(m,n,a,b,c,x)ʽԼԹ滮

   mʽԼĸ
   n
   aά飬Ϊm*(m+n)ŲʽԼϵm׵λ
   bһά飬ΪmŲʽԼҶ
   cһά飬Ϊm+nĿ꺯еϵкmΪ0
   xһά飬Ϊm+n+m*m+m*(m+n)ǰnĿ꺯fļСֵn꣨Ž⣩n+1Ŀ꺯ļСֵΪĹԪ

   fcerr=1m<1n<1
   fcerr=2û飻
   fcerr=3ָ鲻ڣ
   fcerr=4ָ̫С
   fcerr=5ڴ

   ӣ費ʽԼΪ
     x0+2*x1+7*x2<=10
     x0+4*x1+13*x2<=18
     2*x1+8*x2<=13
     x0,x1,x2>=0
   Ŀ꺯f=4*x0+9*x1+26*x2ļֵ
   ΪСֵĿ꺯Ϊ-f=-4*x0-9*x1-26*x2
   ڱУm=3n=3m+n=6
         --                   --
         |  1  2  7   1  0  0  |
       A=|  1  4  13  0  1  0  |
         |  0  2  8   0  0  1  |
         --                   --
       B=(10,18,13) T
       C=(-4,-9,-26,0,0,0) T
       X=(x0,x1,x2,x3,x4,x5) T
   £

   clear[];
   newdoublearrays[4];//飻
   newdoublearray{0,3*(3+3), //ϵ󼰵λ
      1,2,7,1,0,0,
      1,4,13,0,1,0,
      0,2,8,0,0,1};
   newdoublearray[1,3,10,18,13];//ŲʽԼҶ
   newdoublearray[2,3+3,-4,-9,-26,0,0,0]; //Ŀ꺯еϵ
   newdoublearray[3,3+3+3*3+3*(3+3)]; //ŷֵ
   lplq[3,3,0,1,2,3]; //㣻
   outarray[3]; //
>
<jsimnάֵĵεŷ
jsim(n,#"f",d,u,v,x,eps,k,xx,f)nάֵĵεŷ

   n
   dʼľ롣
   uϵu1.2<u<2
   vϵv0<v<1
   xһά飬Ϊn+1ǰnؼСֵn꣬кһؼСֵ
   epsƾҪ
   kֵ
   xxά飬Ϊn*(n+1)εn+1ꡣ
   fһά飬Ϊn+1εn+1ϵĿ꺯ֵ
   #"f"ʽƣڼĿ꺯ֵûԱࡣñʽnԱʽ£

    "f"(x0,x1)=100*(x1-x0*x0)*(x1-x0*x0)+(1-x0)*(1-x0);

   fcerr=-2ݹƣ
   fcerr=-1δÿɽⲿܣ
   fcerr=1ʽ<1
   fcerr=2ָıʽڣ
   fcerr=3ָıʽδͨ
   fcerr=4ָıʽĲƥ䣻
   fcerr=5û飻
   fcerr=6ָ鲻ڣ
   fcerr=7ָ̫С
   fcerr=8d<=0.0u<=0.0u>=2.0v<=0.0v>=1.0eps<=0.0k<1

   ӣõεŷĿ꺯
     J=100*(x1-x0*x0)*(x1-x0*x0)+(1-x0)*(1-x0)
   ļСֵ뼫Сֵȡeps=1E-30d=1.0u=1.6v=0.4k=200
   £

   clear[];
   newdoublearrays[3];//飻
   newdoublearray{0,2+1};//ŷصĽ
   newdoublearray[1,2*3];//εn+1ꣻ
   newdoublearray[2,2*4+1];//εn+1ϵĿ꺯ֵ
   "fa"(x0,x1)=100*(x1-x0*x0)*(x1-x0*x0)+(1-x0)*(1-x0);//壻
   jsim[2,#"fa",1,1.6,0.4,0,1e-30,200,1,2];//㣻
   (:i)=one //
   {i=0,
    for{le[i,2],
        out[getda(1,i*2)],str["  "],out[getda(1,i*2+1)],str["  "],out[getda(2,i)],
        endl[],
        i=i+1
       }
   };
   one{out[getda(0,0)],endl[],out[getda(0,1)],endl[],str["J="],out[getda(0,2)]}
>
<cplxԼnάֵĸεŷ
cplx(n,m,#"f",#"s",a,alpha,eps,x,xx,k)Լnάֵĸεŷ

   n
   mԼĸ
   aһά飬Ϊn*4ǰnųԼб½磬nųԼбϽ硣
   alphaϵһalpha=1.3ҡ
   eps־ȡ
   xһά飬Ϊn+1ǰnųʼεĵһֵҪеԼʱżСֵn꣬кһؼСֵ
   xxά飬Ϊ2*n*(n+1)ǰnзε2*n꣨һΪһ㣩һзε2*nϵĿ꺯ֵ
   kֵ
   #"f"ʽƣڼĿ꺯ֵûԱࡣñʽnԱʽ£
     "f"(x0,x1)=-[9-(x0-3)*(x0-3)]*x1*x1*x1/[27*sqrt(3)];
   #"s"ʽƣڼԼеޡ޼ֵûԱࡣñʽn+3*mǰnΪԱmԼеޣmԼеޣmmֵʽ£
    "s"(x0,x1,c0,c1,d0,d1,w0,w1)=one
    {c0=0, c1=0,
     d0=x0/sqrt[3], d1=6,
     w0=x1, w1=x0+x1*sqrt[3]
    };

   fcerr=-2ݹƣ
   fcerr=-1δÿɽⲿܣ
   fcerr=1n<1m<1
   fcerr=2ָıʽڣ
   fcerr=3ָıʽδͨ
   fcerr=4ָıʽĲƥ䣻
   fcerr=5û飻
   fcerr=6ָ鲻ڣ
   fcerr=7ָ̫С
   fcerr=8alpha<=0.0eps<=0.0k<1

   ӣøεŷĿ꺯
     J=f(x0,x1)=-[9-(x0-3)*(x0-3)]*x1*x1*x1/[27*sqrt(3)]
   Լ
     x0>=0
     x1>=0
     0<=x1<=x0/sqrt[3]
     0<=x0+sqrt[3]*x1<=6
   ļСֵ㼰Сֵȡeps=1E-30alpha=1.3k=200
   ʼεĵһΪ0.00.0
   гԼ½Ϊa0=0.0a1=0.0Ͻȡb0=1E35b1=1E35Լޡ޼Ϊ
     C0(x0,x1)=0.0, C1(x0,x1)=0.0
     D0(x0,x1)=x0/sqrt[3], D1(x0,x1)=6.0
     W0(x0,x1)=x1, W1(x0,x1)=x0+sqrt[3]*x1
   £

   clear[];
   newdoublearrays[3];//飻
   newdoublearray{0,2*4,0,0,1e35,1e35};//ųԼб½Ͻ磻
   newdoublearray[1,2+1,0,0];//ųʼεĵһֵҪеԼ
   newdoublearray[2,(2+1)*2*2];//ŷֵ
   "f"(x0,x1)=-[9-(x0-3)*(x0-3)]*x1*x1*x1/[27*sqrt(3)];//壻
   "s"(x0,x1,c0,c1,d0,d1,w0,w1)=one //Լеޡ޼ֵıʽ
     {c0=0,c1=0,d0=x0/sqrt[3],d1=6,w0=x1,w1=x0+x1*sqrt[3]};
   cplx[ 2,2,#"f",#"s",0,1.3,1e-30,1,2,200 ];//㣻
   (:i)=one //
   {i=0,
    for{le[i,3],
        out[getda(2,i)],str["  "],out[getda(2,4+i)],str["  "],out[getda(2,8+i)],
        endl[],
        i=i+1
       }
   };
   one{out[getda(1,0)],endl[],out[getda(1,1)],endl[],str["J="],out[getda(1,2)]};
>