我有两个向量,x,y和我需要获得外部产品,即xy'。我必须在GSL库中执行此操作,我不确定是否有函数可以执行此操作。
有人能告诉我是否有在GSL中计算外部产品的功能或程序?
答案 0 :(得分:1)
我相信您要查找的功能在BLAS界面中,该界面具有以下原型:
int gsl_blas_dsyr(CBLAS_UPLO_t Uplo, double alpha, const gsl_vector * x, gsl_matrix * A
此函数发送A-> A + alpha x 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矩阵分配一个len矩阵,并且假设x的长度为len,则将把外积产生到A的上三角部分。
答案 1 :(得分:1)
我将使用功能
int gsl_blas_dger(double alpha, const gsl_vector * x, const gsl_vector * y, gsl_matrix * A)
该函数发送A-> A + alpha x y'。
答案 2 :(得分:0)
cross(v0,v1)
2D中的“外部产品”与交叉产品相同,尽管Z没有真正定义。
请参阅http://allenchou.net/2013/07/cross-product-of-2d-vectors/
另请注意,结果将是: