📄 等式约束的乘子法.cpp
字号:
#include "mathyw.h"
#include "iostream.h"
#include "stdlib.h"
#include "math.h"
//extern double ( * FUN )( double * ); //自定义函数指针类型为 FUN
double fun( double * x );
double fun1( double * x );
double fun2( double * x );
double fun3( double * x );
double fun4( double * x );
double fun5( double * x );
double fun6( double * x );
double fun7( double * x );
double fun8( double * x );
double fun9( double * x );
double fun10( double * x );
double fun11( double * x );
double fun12( double * x );
double fun13( double * x );
void main()
{//*
double lstart[9] = {1,1,1,1,1,1,1,1,1};
// double lstart[9] = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5};
// double lstart[9] = {0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1};
// double lstart[9];
// memset( lstart, 0, 9*sizeof(double) );
double point[9];
int a=9, b=13, c=0;
FUN p_h[1];
FUN p_g[13] = {fun1,fun2,fun3,fun4,fun5,fun6,fun7,fun8,fun9,fun10,fun11,fun12,fun13};
Commen_condition( fun, p_g, p_h, a, b, c, lstart, point );
cout<<"The desired point is:" <<endl;
for( int i=0; i<9; i++ )
{
cout<<"point["<<i+1<<"]= " << point[i]<< endl;
}
cout<<"The desired minimum value is: "<<fun( point ) <<endl;
cout<<"The value of the condition functions:"<<endl;
for( i=0; i<13; i++ )
{
cout<<"g["<<i+1<<"]= "<<(p_g[i])( point )<<endl;
}
//*/
}
//void Commen_condition( FUN Obj, FUN * pG_group, FUN * pH_group, int var_num, int g_num, int h_num,
// double * start, double * point );
double fun( double * x )
{
return ( -x[0]*x[3] +x[1]*x[2] -x[2]*x[8] +x[4]*x[8] -x[4]*x[7] +x[5]*x[6] ) /2;
}
double fun1( double * x )
{
return x[2]*x[2] +x[3]*x[3] -1;
}
double fun2( double * x )
{
return x[4]*x[4] +x[5]*x[5] -1;
}
double fun3( double * x )
{
return x[0]*x[0] +( x[1] -x[8] ) *( x[1] -x[8] ) -1;
}
double fun4( double * x )
{
return x[6]*x[6] +( x[7] -x[8] ) *( x[7] -x[8] ) -1;
}
double fun5( double * x )
{
return ( x[0] -x[4] ) *( x[0] -x[4] ) +( x[1] -x[5] ) *( x[1] -x[5] ) -1;
}
double fun6( double * x )
{
return x[5]*x[6] -x[4]*x[7] ;
}
double fun7( double * x )
{
return ( x[0] -x[6] ) *( x[0] -x[6] ) +( x[1] -x[7] ) *( x[1] -x[7] ) -1;
}
double fun8( double * x )
{
return ( x[2] -x[4] ) *( x[2] -x[4] ) +( x[3] -x[5] ) *( x[3] -x[5] ) -1;
}
double fun9( double * x )
{
return ( x[2] -x[6] ) *( x[2] -x[6] ) +( x[3] -x[7] ) *( x[3] -x[7] ) -1;
}
double fun10( double * x )
{
return x[1]*x[2] -x[0]*x[3] ;
}
double fun11( double * x )
{
return -x[2] ;
}
double fun12( double * x )
{
return -x[8] ;
}
double fun13( double * x )
{
return x[8] -1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -