最速下降法
#include
#include
double lambda(double x[2],double p[2],double a[2])
{
double lam1,lam2;
lam1=4*(pow(a[0],3)*x[0]*x[0]+pow(a[1],3)*x[1]*x[1]);
-4*(pow(a[0]*x[0],2)+pow(a[1]*x[1],2)); lam2=
double s;
s=-lam2/(2*lam1);
return s;
}
void main()
{
double lamb,x[2],a[2],p[2],g[2],e=0.01,y;
int i=0;
x[0]=4.0;
x[1]=4.0;
cout<<"输入函数的系数:a[0],a[1]:"<>a[i];
p[0]=2*a[0]*x[0];
p[1]=2*a[1]*x[1];
g[0]=-p[0];
g[1]=-p[1];
i=0; //开始迭代将次数赋值为0
cout<e&&i<=200)
{
lamb=lambda(x,g,a);
x[0]=x[0]+lamb*g[0];
x[1]=x[1]+lamb*g[1];
p[0]=2*a[0]*x[0];
p[1]=2*a[1]*x[1];
g[0]=-p[0];
g[1]=-p[1];
i++;
//cout("di %d ci mo=%f x1=%f\tx2=%f\tbuchang
a=%f\n",++i,sqrt(g[0]*g[0]+g[1]*g[1]),x[0],x[1],a);
cout<<"迭代次数为"<