有人可以帮我弄清楚如何进行这项操作。我正在查看文档,但它已经很久了,因为我必须做任何线性代数类型的东西,我有点迷失。
我有一个名为Y的14x14复杂矩阵和一个名为I的复矢量。我需要将它们相乘并将结果设置为一个名为IL的复矢量。
到目前为止,我已经发现我需要使用:
gsl_blas_zgemv (CBLAS_TRANSPOSE_t TransA, const gsl_complex alpha, const
gsl_matrix_complex * A, const gsl_vector_complex * x, const
gsl_complex beta, gsl_vector_complex * y)
但我不确定究竟发生了什么。不知道到底发生了什么。像这样的东西?但是什么是alpha和beta?
gsl_blas_zgemv(CblasNoTrans, ???, &Y, &I, ???, IL);
答案 0 :(得分:4)
如果没有看到您实际在做什么,看起来您没有包含正确的标题。以下工作对我没有错误:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <gsl/gsl_blas.h>
#include <gsl/gsl_complex_math.h>
int
main(int argc, char **argv)
{
int size = 14;
gsl_matrix_complex *A = NULL;
gsl_vector_complex *x = NULL;
gsl_vector_complex *y = NULL;
A = gsl_matrix_complex_alloc(size, size);
x = gsl_vector_complex_alloc(size);
y = gsl_vector_complex_alloc(size);
gsl_matrix_complex_set_all(A, GSL_COMPLEX_ONE);
gsl_vector_complex_set_all(x, GSL_COMPLEX_ONE);
gsl_vector_complex_set_all(y, GSL_COMPLEX_ZERO);
gsl_blas_zgemv(CblasNoTrans, GSL_COMPLEX_ONE, A, x,
GSL_COMPLEX_ZERO, y);
return(EXIT_SUCCESS);
}
用
编译gcc -o test -I/opt/local/include/gsl -L/opt/local/lib -lgsl -lgslcblas test.c
(是的,我在使用MacPorts的Mac上)。