新手请教:这个程序怎么运行不了?
#include<iostream.h>
#include<math.h>
const double E=0.001;
const double c1=5;
double * formf(double m,double n,double M)//*HOOKE——JEEVES法
{
double e[2][2]={1,0,0,1};
double x1[2]={m,n},a1,b1,c1,d1;
double x[1000][2],y[3][2];
double *pf;
x[0][0]=x1[0];x[0][1]=x1[1];
double d=1,a=1;
double a0,b0;
y[0][0]=x[0][0];
y[0][1]=x[0][1];
int k=0;
for(int g=0;g<3;g++){
for(int j=0;j<2;j++){
a1=(y[j][0]+d*e[j][0])+(y[j][1]+d*e[j][1])-M/(-(y[j][0]+d*e[j][0])*(y[j][0]+d*e[j][0])+(y[j][1]+d*e[j][1]))-M/(y[j][0]+d*e[j][0]);
b1=y[j][0]+y[j][1]-M/(-y[j][0]*y[j][0]+y[j][1])-M/y[j][0];
cout<<"a1="<<a1<<"b1="<<b1<<"\n";
if(a1<b1)
{ y[j+1][0]=y[j][0]+d*e[j][0];
y[j+1][1]=y[j][1]+d*e[j][1];}
else {
c1=(y[j][0]-d*e[j][0])+(y[j][1]-d*e[j][1])-M/(-(y[j][0]-d*e[j][0])*(y[j][0]-d*e[j][0])+(y[j][1]-d*e[j][1]))-M/(y[j][0]-d*e[j][0]);
d1=y[j][0]+y[j][1]-M/(-y[j][0]*y[j][0]+y[j][1])-M/y[j][0];
cout<<"c1="<<c1<<"d1="<<d1<<"\n";
if(c1<d1)
{
y[j+1][0]=y[j][0]-d*e[j][0];
y[j+1][1]=y[j][1]-d*e[j][1];
}
else{y[j+1][0]=y[j][0];y[j+1][1]=y[j][1];}
}
}
a0=y[2][0]+y[2][1]-M/(-y[2][0]*y[2][0]+y[2][1])-M/y[2][0];
b0=x[k][0]+x[k][1]-M/(-x[k][0]*x[k][0]+x[k][1])-M/x[k][0];
if(a0<b0)
{x[k+1][0]=y[2][0];x[k+1][1]=y[2][1];
y[0][0]=x[k+1][0]+a*(x[k+1][0]-x[k][0]);
y[0][1]=x[k+1][1]+a*(x[k+1][1]-x[k][1]);
k++;}
else{
if(d<E){
pf=&x[k][0];break;}
else{
y[0][0]=x[k][0];y[0][1]=x[k][1];
x[k+1][0]=x[k][0];x[k+1][1]=x[k][1];
d=d/2;k++;}
}
}
return pf;
}
void main (void )
{
double x[1000][2]={2,5};
double t,*p,r1=1;
int k=1;
for(int i=0;i<1;i++)
{
p=formf(x[k-1][0],x[k-1][1],r1);
x[k][0]=*p;x[k][1]=*(p+1);
cout<<x[k-1][0]<<"\t"<<x[k-1][1]<<"\t"<<x[k][0]<<"\t"<<x[k][1]<<"\n";
t=(x[k][0]-x[k-1][0])*(x[k][0]-x[k-1][0])+(x[k][1]-x[k-1][1])*(x[k][1]-x[k-1][1]);
cout<<"T="<<t<<"\n";
if(pow(t,0.5)<E)
{
cout<<"最优解为:"<<x[k][0]<<"\t"<<x[k][1]<<"\n";
break;
}
else
{
r1=r1/c1;cout<<"R!+"<<r1<<"\n";k++;
}
}
}
**********
编译时没错误,可运行不了,请高手指教!谢谢!