C++ 在GSL中获得外部产品的最佳方法

C++ 在GSL中获得外部产品的最佳方法,c++,gsl,C++,Gsl,我有两个向量,x,y,我需要得到外积,即xy'。我必须在GSL库中执行此操作,我不确定是否有函数可以执行此操作 有人能告诉我GSL中是否有计算外积的函数或程序吗 cross(v0,v1) 2D中的“外积”与叉积相同,尽管Z没有真正定义 看 此外,请注意,结果将是: 标量是2D向量的外积 向量作为三维向量的外积 我相信您正在寻找的功能在BLAS界面中,该界面具有以下原型: int gsl_blas_dsyr(CBLAS_UPLO_t Uplo, double alpha, const gsl

我有两个向量,x,y,我需要得到外积,即xy'。我必须在GSL库中执行此操作,我不确定是否有函数可以执行此操作

有人能告诉我GSL中是否有计算外积的函数或程序吗

cross(v0,v1) 
2D中的“外积”与叉积相同,尽管Z没有真正定义

此外,请注意,结果将是:

  • 标量是2D向量的外积
  • 向量作为三维向量的外积

我相信您正在寻找的功能在BLAS界面中,该界面具有以下原型:

int gsl_blas_dsyr(CBLAS_UPLO_t Uplo, double alpha, const gsl_vector * x, gsl_matrix * A
此函数发送->A+alpha x'命令。为了计算外积,假设alpha=1,A=0。注意,Uplo=CblasUpper指定,因为A是对称的,所以只计算上三角项。如果您想要完整的矩阵,请确保在之后对称。所以

int outerProduct(gsl_matrix* A, const gsl_vector *x, const int len){
  A = gsl_matrix_calloc(len,len);
  return gsl_blas_dsyr(CblasUpper,1.0,x,A);
}
将分配一个len-by-len矩阵,并假设x的长度为len,将生成a的上三角部分的外积。

我将使用函数

int gsl_blas_dger(双alpha,常数gsl_向量*x,常数gsl_向量*y,gsl_矩阵*A)

该函数发送一个->A+alpha x y'