📄 12.cpp
字号:
#include"iostream.h"
#include"stdio.h"
#include"math.h"
class vector
{
public:
vector(){ x=y=0;}
vector(double i,double j ){ x=i,y=j;}
double FunctionValue ( );
vector operator +(const vector &v);
public:
double x,y;
};
double vector::FunctionValue ( )
{
return 2*x*x+3*y*y-8*x+10;
}
inline vector vector::operator +(const vector &v)
{
return vector(x+v.x,y+v.y);
}
vector StedpOne(vector FirstX,double a,double judger,int n);
void main()
{
vector Xstart(1,2),Xend;
Xend=StedpOne(Xstart,0.5,0.3,2);
cout<<"X1 = "<<Xend.x<<endl;
cout<<"X2 = "<<Xend.y<<endl;
cout<<"F(X) = "<<Xend.FunctionValue()<<endl;
}
vector StedpOne(vector FirstX,double a,double judger,int n)
{
double FirstF=FirstX.FunctionValue();
vector e[3],X;
int j,k;
e[1].x=1,e[1].y=0,e[2].x=0,e[2].y=1;
X.x=0,X.y=0;
double TempF,aa;
a = 2*a;
do
{
a =0.5*a;
do
{
j=1,k=0;
do
{
X.x=FirstX.x+a*e[j].x,X.y=FirstX.y+a*e[j].y;
TempF=X.FunctionValue();
if(TempF<FirstF)
{
aa = a;
}
else
{
X.x=FirstX.x-a*e[j].x,X.y=FirstX.y-a*e[j].y;
TempF=X.FunctionValue();
if(TempF<FirstF)
{
aa=-a;
}
else
{
goto jump2;
}
}
jump1: X.x=FirstX.x+a*e[j].x,X.y=FirstX.y+a*e[j].y;
TempF=X.FunctionValue();
if(TempF<FirstF)
{
FirstF = TempF;
aa=2*aa;
goto jump1;
}
else
{
FirstX.x=FirstX.x+0.5*aa*e[j].x,FirstX.y=FirstX.y+0.5*aa*e[j].y;
k=1;
}
jump2: j=j+1;
}while(j<=n);
}while(k!=0);
}while(a>judger);
return FirstX;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -