![](https://csdnimg.cn/release/download_crawler_static/86520581/bg1.jpg)
最优化-无约束共轭梯度法程序(c++)
////////////////////////////////////////
///// vector.h头文件 /////
///// 定义向量及其基本运算 /////
/////////////////////////////////////////
#include<math.h>
#define MAXLENGTH 10
//向量定义
typedef struct{
int tag; //行列向量标志。行向量为0,列向量为1。
int dimension; //向量的维数
double elem[MAXLENGTH]; //向量的元素
}vector;
vector vecCreat(int tag, int n){
//建立维数为n的向量
vector x;
x.tag=tag;
x.dimension=n;
for(int i=0;i<n;++i){
cout<<"请输入第"<<i+1<<"分量:";
cin>>x.elem;
}
return x;
}
double vecMultiply(vector a, vector b){
//行向量与列向量乘法运算
if((a.tag!=b.tag)&&(a.dimension==b.dimension)){//相乘条件
double c=0;
for(int i=0;i<a.dimension;++i)
c+=a.elem*b.elem;
return c;
}
}
vector vecAdd(vector a, vector b){
//向量加法运算
if((a.tag==b.tag)&&(a.dimension==b.dimension)){//相加条件
vector c;
c.dimension=a.dimension;
c.tag=a.tag;
for(int i=0;i<c.dimension;++i)
c.elem=a.elem+b.elem;
return c;
}