#calculas.dll ΢ֺ
< calculas.dll ΢ֺʹ˵
OpenForcalչ̬⣬ͨʱҪÿ·
ÿ⺯˵fcerrʾFORCALصд롣
ĲҪFORCALԸòȡ㡣
>
<elr1ȫֵĶŷ
elr1(n,#"f",t,y,h,k,z)ȫֵĶŷ

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊnnδ֪ʼ㴦ĺֵʱЩֵڶάzĵ0С
   hֲ
   kֲʼһ
   zά飨FORCALһά棬д洢Ϊn*kkֵ㣨ʼ㣩ϵδֵ֪
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=y1,y0(0)=-1.0
     y1'=-y0,y1(0)=0.0
     y2'=-y2,y2(0)=1.0
   㵱h=0.01ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=3k=11h=0.01
   £

   clear[];
   newdoublearrays[2];//飻
   newdoublearray[0,3,-1,0,1];//ųֵ
   newdoublearray[1,3*11];//ŷصĽ
   "f"(t,y0,y1,y2,d0,d1,d2)=one{d0=y1,d1=-y0,d2=-y2};//壻
   elr1[3,#"f",0,0,0.01,11,1];//㣻
   (:i,j)=one //
   {i=0,
    for{le[i,10],
        j=0,
        for{le[j,2],
            out[getda(1,j*11+i)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<elr2һı䲽ŷ
elr2(n,#"f",t,y,h,eps)һı䲽ŷ

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn*4ǰnnδ֪ʼ㴦ĺֵʱt+hnδֵ֪
   hֲ
   eps־ȡ
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=y1,y0(0)=-1.0
     y1'=-y0,y1(0)=0.0
     y2'=-y2,y2(0)=1.0
   㵱h=0.01ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=3h=0.01eps=0.00001
   £

   clear[];
   newdoublearrays[1];//飻
   newdoublearray[0,3*4,-1,0,1];//ųֵ
   "f"(t,y0,y1,y2,d0,d1,d2)=one{d0=y1,d1=-y0,d2=-y2};//壻
   (:i,j,t)=one //
   {i=0,t=0,
    for{lt[i,10],
        elr2[3,#"f",t,0,0.01,0.00001],//㣻
        t=t+0.01,
        j=0,
        for{le[j,2],
            out[getda(0,j)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<wityȫֵĶάݷ
wity(n,#"f",t,y,h,k,z)ȫֵĶάݷ

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn+nǰnnδ֪ʼ㴦ĺֵʱЩֵڶάzĵ0С
   hֲ
   kֲʼһ
   zά飨FORCALһά棬д洢Ϊn*kkֵ㣨ʼ㣩ϵδֵ֪
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=y1,y0(0)=-1.0
     y1'=-y0,y1(0)=0.0
     y2'=-y2,y2(0)=1.0
   㵱h=0.1ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=3k=11h=0.1
   £

   clear[];
   newdoublearrays[2];//飻
   newdoublearray[0,3+3,-1,0,1];//ųֵ
   newdoublearray[1,3*11];//ŷصĽ
   "f"(t,y0,y1,y2,d0,d1,d2)=one{d0=y1,d1=-y0,d2=-y2};//壻
   wity[3,#"f",0,0,0.1,11,1];//㣻
   (:i,j)=one //
   {i=0,
    for{le[i,10],
        j=0,
        for{le[j,2],
            out[getda(1,j*11+i)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<rkt1ȫֵĶ-
rkt1(n,#"f",t,y,h,k,z)ȫֵĶ-

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn+nǰnnδ֪ʼ㴦ĺֵʱЩֵڶάzĵ0С
   hֲ
   kֲʼһ
   zά飨FORCALһά棬д洢Ϊn*kkֵ㣨ʼ㣩ϵδֵ֪
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=y1,y0(0)=-1.0
     y1'=-y0,y1(0)=0.0
     y2'=-y2,y2(0)=1.0
   㵱h=0.01ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=3k=11h=0.01
   £

   clear[];
   newdoublearrays[2];//飻
   newdoublearray[0,3+3,-1,0,1];//ųֵ
   newdoublearray[1,3*11];//ŷصĽ
   "f"(t,y0,y1,y2,d0,d1,d2)=one{d0=y1,d1=-y0,d2=-y2};//壻
   rkt1[3,#"f",0,0,0.01,11,1];//㣻
   (:i,j)=one //
   {i=0,
    for{le[i,10],
        j=0,
        for{le[j,2],
            out[getda(1,j*11+i)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<rkt2һı䲽-
rkt2(n,#"f",t,y,h,eps)һı䲽-

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn*5ǰnnδ֪ʼ㴦ĺֵʱt+hnδֵ֪
   hֲ
   eps־ȡ
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=y1,y0(0)=0.0
     y1'=-y0,y1(0)=1.0
   㵱h=0.1ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=3h=0.1eps=0.00001
   £

   clear[];
   newdoublearrays[1];//飻
   newdoublearray[0,2*5,0,1];//ųֵ
   "f"(t,y0,y1,d0,d1)=one{d0=y1,d1=-y0};//壻
   (:i,j,t)=one //
   {i=0,t=0,
    for{lt[i,10],
        rkt2[2,#"f",t,0,0.1,0.00001],//㣻
        t=t+0.1,
        j=0,
        for{le[j,1],
            out[getda(0,j)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<gil1һı䲽
gil1(n,#"f",t,y,h,eps)һı䲽

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn*5ǰnnδ֪ʼ㴦ĺֵʱt+hnδֵ֪nһεñʱӦֵ0ԺÿһαɱķֵԱѭʹá
   hֲ
   eps־ȡ
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=y1,y0(0)=0.0
     y1'=-y0,y1(0)=1.0
     y2'=-y2,y2(0)=1.0
   㵱h=0.1ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=3h=0.1eps=0.000001
   £

   clear[];
   newdoublearrays[1];//飻
   newdoublearray[0,3*5,0,1,1,0,0,0];//ųֵ
   "f"(t,y0,y1,y2,d0,d1,d2)=one{d0=y1,d1=-y0,d2=-y2};//壻
   (:i,j,t)=one //
   {i=0,t=0,
    for{lt[i,10],
        gil1[3,#"f",t,0,0.1,0.00001],//㣻
        t=t+0.1,
        j=0,
        for{le[j,2],
            out[getda(0,j)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<gil2ȫֵı䲽
gil2(n,#"f",t,y,h,k,z,eps)ȫֵı䲽

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn*5ǰnnδ֪ʼ㴦ĺֵʱЩֵڶάzĵ0С
   hֲ
   kֲʼһ
   zά飨FORCALһά棬д洢Ϊn*kkֵ㣨ʼ㣩ϵδֵ֪
   eps־ȡ
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=y1,y0(0)=0.0
     y1'=-y0,y1(0)=1.0
     y2'=-y2,y2(0)=1.0
   㵱h=0.1ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=3k=11h=0.1eps=0.000001
   £

   clear[];
   newdoublearrays[2];//飻
   newdoublearray[0,3*5,0,1,1];//ųֵ
   newdoublearray[1,3*11];//ŷصĽ
   "f"(t,y0,y1,y2,d0,d1,d2)=one{d0=y1,d1=-y0,d2=-y2};//壻
   gil2[3,#"f",0,0,0.1,11,1,0.000001];//㣻
   (:i,j)=one //
   {i=0,
    for{le[i,10],
        j=0,
        for{le[j,2],
            out[getda(1,j*11+i)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<mrsnȫֵı䲽Ĭɭ
mrsn(n,#"f",t,y,h,k,z,eps)ȫֵı䲽Ĭɭ

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn*6ǰnnδ֪ʼ㴦ĺֵʱЩֵڶάzĵ0С
   hֲ
   kֲʼһ
   zά飨FORCALһά棬д洢Ϊn*kkֵ㣨ʼ㣩ϵδֵ֪
   eps־ȡ
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=60*[0.06+t*(t-0.6)]*y1,y0(0)=0.0
     y1'=-60*[0.06+t*(t-0.6)]*y0,y1(0)=1.0
   㵱h=0.1ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=2k=11h=0.1eps=0.00001
   £

   clear[];
   newdoublearrays[2];//飻
   newdoublearray[0,2*6,0,1];//ųֵ
   newdoublearray[1,2*11];//ŷصĽ
   "f"(t,y0,y1,d0,d1:q)=one{q=60*[0.06+t*(t-0.6)],d0=q*y1,d1=-q*y0};//壻
   mrsn[2,#"f",0,0,0.1,11,1,0.00001];//㣻
   (:i,j)=one //
   {i=0,
    for{le[i,10],
        j=0,
        for{le[j,1],
            out[getda(1,j*11+i)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<pbs1һʽ
pbs1(n,#"f",t,y,h,eps)һʽ

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn*6ǰnnδ֪ʼ㴦ĺֵʱt+hnδֵ֪
   hֲ
   eps־ȡ
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=-y1,y0(0)=1.0
     y1'=y0,y1(0)=0.0
   㵱h=0.1ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=3h=0.1eps=0.000001
   £

   clear[];
   newdoublearrays[1];//飻
   newdoublearray[0,2*6,1,0];//ųֵ
   "f"(t,y0,y1,d0,d1)=one{d0=-y1,d1=y0};//壻
   (:i,j,t)=one //
   {i=0,t=0,
    for{lt[i,10],
        pbs1[2,#"f",t,0,0.1,0.000001],//㣻
        t=t+0.1,
        j=0,
        for{le[j,1],
            out[getda(0,j)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<pbs2ȫֵʽ
pbs2(n,#"f",t,y,h,k,z,eps)ȫֵʽ

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn*6ǰnnδ֪ʼ㴦ĺֵʱЩֵڶάzĵ0С
   hֲ
   kֲʼһ
   zά飨FORCALһά棬д洢Ϊn*kkֵ㣨ʼ㣩ϵδֵ֪
   eps־ȡ
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=-y1,y0(0)=1.0
     y1'=y0,y1(0)=0.0
   㵱h=0.1ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=2k=11h=0.1eps=0.000001
   £

   clear[];
   newdoublearrays[2];//飻
   newdoublearray[0,2*6,1,0];//ųֵ
   newdoublearray[1,2*11];//ŷصĽ
   "f"(t,y0,y1,d0,d1)=one{d0=-y1,d1=y0};//壻
   mrsn[2,#"f",0,0,0.1,11,1,0.000001];//㣻
   (:i,j)=one //
   {i=0,
    for{le[i,10],
        j=0,
        for{le[j,1],
            out[getda(1,j*11+i)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<gjfqȫֵ˫߷
gjfq(n,#"f",t,y,h,k,z,eps)ȫֵ˫߷

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn*9ǰnnδ֪ʼ㴦ĺֵʱЩֵڶάzĵ0С
   hֲ
   kֲʼһ
   zά飨FORCALһά棬д洢Ϊn*kkֵ㣨ʼ㣩ϵδֵ֪
   eps־ȡ
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=-y1,y0(0)=1.0
     y1'=y0,y1(0)=0.0
   㵱h=0.1ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=2k=11h=0.1eps=0.000001
   £

   clear[];
   newdoublearrays[2];//飻
   newdoublearray[0,2*9,1,0];//ųֵ
   newdoublearray[1,2*11];//ŷصĽ
   "f"(t,y0,y1,d0,d1)=one{d0=-y1,d1=y0};//壻
   gjfq[2,#"f",0,0,0.1,11,1,0.000001];//㣻
   (:i,j)=one //
   {i=0,
    for{le[i,10],
        j=0,
        for{le[j,1],
            out[getda(1,j*11+i)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<admsȫֵİķ˹Ԥ-У
adms(n,#"f",t,y,h,k,z,eps)ȫֵİķ˹Ԥ-У

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn*9ǰnnδ֪ʼ㴦ĺֵʱЩֵڶάzĵ0С
   hֲ
   kֲʼһ
   zά飨FORCALһά棬д洢Ϊn*kkֵ㣨ʼ㣩ϵδֵ֪
   eps־ȡ
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=y1,y0(0)=0.0
     y1'=-y0,y1(0)=1.0
     y2'=-y2,y2(0)=1.0
   㵱h=0.05ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=3k=11h=0.05eps=0.0001
   £

   clear[];
   newdoublearrays[2];//飻
   newdoublearray[0,3*9,0,1,1];//ųֵ
   newdoublearray[1,3*11];//ŷصĽ
   "f"(t,y0,y1,y2,d0,d1,d2)=one{d0=y1,d1=-y0,d2=-y2};//壻
   adms[3,#"f",0,0,0.05,11,1,0.0001];//㣻
   (:i,j)=one //
   {i=0,
    for{le[i,10],
        j=0,
        for{le[j,2],
            out[getda(1,j*11+i)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<hamgȫֵĹ
hamg(n,#"f",t,y,h,k,z,eps)ȫֵĹ

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn*13ǰnnδ֪ʼ㴦ĺֵʱЩֵڶάzĵ0С
   hֲ
   kֲʼһ
   zά飨FORCALһά棬д洢Ϊn*kkֵ㣨ʼ㣩ϵδֵ֪
   eps־ȡ
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'=y1,y0(0)=1.0
     y1'=-y0,y1(0)=1.0
     y2'=y2,y2(0)=1.0
   㵱h=0.05ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=3k=11h=0.05eps=0.0001
   £

   clear[];
   newdoublearrays[2];//飻
   newdoublearray[0,3*13,1,1,1];//ųֵ
   newdoublearray[1,3*11];//ŷصĽ
   "f"(t,y0,y1,y2,d0,d1,d2)=one{d0=y1,d1=-y0,d2=y2};//壻
   hamg[3,#"f",0,0,0.05,11,1,0.0001];//㣻
   (:i,j)=one //
   {i=0,
    for{le[i,10],
        j=0,
        for{le[j,2],
            out[getda(1,j*11+i)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<tnr1һɷ
tnr1(n,#"f",t,y,h)һɷ

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn*14ǰnnδ֪ʼ㴦ĺֵʱt+hnδֵ֪
   hֲ
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'==-21*y0+19*y1-20*y2,y0(0)=1.0
     y1'=19*y0-21*y1+20*y2,y1(0)=0.0
     y2'=40*y0-40*y1-40*y2,y2(0)=-1.0
   㵱h=0.001ʱ11ֵ㣨ʼ㣩ti=i*hi=01...10ϵδ֪Ľֵy0iy1iy2ii=01...10ʼt=0.0n=3h=0.001
   £

   clear[];
   newdoublearrays[1];//飻
   newdoublearray[0,3*14,1,0,-1];//ųֵ
   "f"(t,y0,y1,y2,d0,d1,d2)=one{d0=-21*y0+19*y1-20*y2,d1=19*y0-21*y1+20*y2,d2=40*y0-40*y1-40*y2};//壻
   (:i,j,t)=one //
   {i=0,t=0,
    for{lt[i,10],
        tnr1[3,#"f",t,0,0.001],//㣻
        t=t+0.001,
        j=0,
        for{le[j,2],
            out[getda(0,j)],str["  "],
            j=j+1
           },
        endl[],
        i=i+1
       }
   };
>
<tnr2ȫֵɷ
tnr2(n,#"f",t,y,h,k,z)ȫֵɷ

   n΢ַз̵ĸҲδ֪ĸ
   t΢ַ̽лֵʼ㡣
   yһά飬Ϊn*14ǰnnδ֪ʼ㴦ĺֵʱЩֵڶάzĵ0С
   hֲ
   kֲʼһ
   zά飨FORCALһά棬д洢Ϊn*kkֵ㣨ʼ㣩ϵδֵ֪
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

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

   ӣһ΢ַ鼰ֵΪ
     y0'==-21*y0+19*y1-20*y2,y0(0)=1.0
     y1'=19*y0-21*y1+20*y2,y1(0)=0.0
     y2'=40*y0-40*y1-40*y2,y2(0)=-1.0
   㵱h=0.001ʱ11ֵ㣨ʼ㣩ti=i*hi=01...101ϵδ֪Ľֵy0iy1iy2ii=01...101ʼt=0.0n=3k=11h=0.001
   £

   clear[];
   newdoublearrays[2];//飻
   newdoublearray[0,3*14,1,0,-1];//ųֵ
   newdoublearray[1,3*101];//ŷصĽ
   "f"(t,y0,y1,y2,d0,d1,d2)=one{d0=-21*y0+19*y1-20*y2,d1=19*y0-21*y1+20*y2,d2=40*y0-40*y1-40*y2};//壻
   tnr2[3,#"f",0,0,0.001,101,1];//㣻
   (:i,j)=one //
   {i=0,
    for{le[i,100],
        j=0,
        for{le[j,2],
            out[getda(1,j*101+i)],str["  "],
            j=j+1
           },
        endl[],
        i=i+10
       }
   };
>
<gearָԷļ
gear(n,#"f",a,b,hmin,hmax,h,eps,y,k,t,z)ָԷļ

   ֵ£
   ֵ=1ʾȫֳɹ
   ֵ=-1ʾѾССhminδﵽֹͣǰɵЧ
   ֵ=-2ʾѴ6ֹͣǰɵЧ
   ֵ=-4ʾh>=hminУֹͣǰɵЧ
   ֵ=-4ʾ⣬Ҫľ̫ߣֹͣǰɵЧ
   ֵ=0FORCALд
   n΢ַз̵ĸҲδ֪ĸ
   aʼ㡣
   bյ㣬b>a
   hminֹС
   hmaxֹĲhmax>hmin>0
   hֵⶨڻֹнԶŴСhmin<<h<hmax
   epsУ鳣(eps>0)
   yһά飬Ϊnnδ֪ʼ㴦ĺֵʱЩֵڶάzĵ0С
   kⶨĻֵ(k>=2)
   tһά飬Ϊkk㴦Աֵʼ㡣
   zά飨FORCALһά棬д洢Ϊn*kkֵ㣨ʼ㣩ϵδֵ֪
   #"f"ʽƣڼ΢ַиҶ˺ֵûԱࡣñʽ2*n+1һΪԱnΪֵnΪҶ˺ֵ΢̵ֵַʽ£
    "f"(t,y1,y2,y3,d1,d2,d3)=one
    {d1=y2,
     d2=-y1,
     d3=-y3
    };

   fcerr=-2ݹƣ
   fcerr=-1δÿɽⲿܣ
   fcerr=1ʽ<2
   fcerr=2ָıʽڣ
   fcerr=3ָıʽδͨ
   fcerr=4ָıʽĲƥ䣻
   fcerr=5û飻
   fcerr=6ָ鲻ڣ
   fcerr=7a,b,hmin,hmax,h,eps,kеһ򼸸Ҫ
   fcerr=8ָ̫С

   ӣһ΢ַ鼰ֵΪ
     y0'==-21*y0+19*y1-20*y2,y0(0)=1.0
     y1'=19*y0-21*y1+20*y2,y1(0)=0.0
     y2'=40*y0-40*y1-40*y2,y2(0)=-1.0
   ü[01]еֵ⡣a=0b=1n=3ȡk=30
   (1)h=0.01, hmin=0.0001, hmax=0.1, eps=0.001 ;
   (2)h=0.01, hmin=0.0001, hmax=0.1, eps=0.0001 ;
   (3)h=0.01, hmin=0.00001, hmax=0.1, eps=0.0001 ;
   (4)h=0.01, hmin=0.00001, hmax=0.1, eps=0.00001 ;
   £

   clear[];
   one{newdoublearrays[5],//鲢ֵ
       newdoublearray[0,3],
       newdoublearray[1,30],
       newdoublearray[2,3*30],
       newdoublearray[3,4,0.0001,0.0001,0.00001,0.00001],
       newdoublearray[4,4,0.001,0.0001,0.0001,0.00001]
      };
   "f"(t,y0,y1,y2,d0,d1,d2)=one //壻
   {d0=-21*y0+19*y1-20*y2,
    d1=19*y0-21*y1+20*y2,
    d2=40*y0-40*y1-40*y2
   };
   "s"(t,y0,y1,y2,p00,p01,p02,p10,p11,p12,p20,p21,p22)=one //ſɱȾĺ
   {p00=-21,p01=19,p02=-20,
    p10=19,p11=-21,p12=20,
    p20=40,p21=-40,p22=-40
   };
   (:i,j,k)=one //
   {k=0,
    for{le[k,3],
        setda[0,0,1],setda[0,1,0],setda[0,2,-1],
        endl[],
        str["h="],out[0.01],endl[],
        str["hmin="],out[getda(3,k)],endl[],
        str["hmax="],out[0.1],endl[],
        str["eps="],out[getda(4,k)],endl[],
        endl[],
        str["jjs="],out{gear[3,#"f",#"s",0,1,getda(3,k),0.1,0.01,getda(4,k),0,30,1,2]},
        endl[],endl[],
        i=0,
        for{le[i,29],
            out[getda(1,i)],str["  "],
            j=0,
            for{le[j,2],
                out[getda(2,j*30+i) ],str["  "],
                j=j+1
               },
            endl[],
            i=i+1
           },
        k=k+1
       }
   };
>
<dfte΢ֵֵַ̱ⷨ
dfte(#"f",a,b,ya,yb,n,y)΢ֵֵַ̱ⷨ

   [ u(x)y''+v(x)y'+w(x)y=f(x) ]
   [ y(a)=ya                   ]
   [ y(b)=yb                   ]
   a˵㡣
   bҶ˵(b>a)
   yaδ֪˵ĺֵ
   ybδ֪Ҷ˵ĺֵ
   n[ab]ĵȷֵҶ˵abn>=2
   yһά飬Ϊn*9ǰnnȾɢϵδֵ֪
   #"f"ʽƣڶ΢ַеĺu(x)v(x)w(x)f(x)ֵûԱࡣñʽ5һΪԱ4u(x)v(x)w(x)f(x)ֵʽ£
    "f"(x,ux,vx,wx,fx)=one
    {ux=-1,
     vx=0,
     wx=2/(x*x),
     fx=1/x
    };

   fcerr=-2ݹƣ
   fcerr=-1δÿɽⲿܣ
   fcerr=1ָıʽڣ
   fcerr=2ָıʽδͨ
   fcerr=3ָıʽĲƥ䣻
   fcerr=4ȷֵn<=1a>=b
   fcerr=5û飻
   fcerr=6ָ鲻ڣ
   fcerr=7ָ̫С

   ӣ΢ֵַ̱Ϊ
     -y''+2/(x*x)y=1/x
     y(2)=0,y(3)=0
   Ϊ[23]ȷΪ11h=0.1u(x)=-1v(x)=0w(x)=2/(x*x)f(x)=1/x
   £

   clear[];
   newdoublearrays[1];//飻
   newdoublearray[0,11*9];//ŷصĽ
   "f"(x,z0,z1,z2,z3)=one{z0=-1,z1=0,z2=2/(x*x),z3=1/x};//壻
   dfte{ #"f",2,3,0,0,11,0  };//㣻
   (:i)=one //
   {i=0,
    for{le[i,10],
        out[getda(0,i)],endl[],
        i=i+1
       }
   };
>