行列とベクトルを乗算したいのですが、行列とベクトルをmalloc配列に格納する関数をすでに作成しました。この関数では、mallocを使用して別の配列を作成し、最初に回答を格納する必要があります。次に、計算を行います(http://www.facstaff.bucknell.edu/mastascu/elessonsHTML/Circuit/MatVecMultiply.htm)
#include <stdlib.h>
/* Multiply a matrix by a vector. */
double *matrix_vector_multiply(int rows, int cols,
double **mat, double *vec){
// creating an vecotr to hold the answer first
double *ans= malloc(rows* sizeof(double));
// do the multiplication:
mulitply **mat and *vec (mat = the matrix and vec is the vector)
for (rows=0; rows< ; rows++)
for (cols=0; cols< ; cols++)
ans[rows] = ans[rows] + vec[rows][cols] * mat[rows];
//not sure if it is right
// then store the answer back to the ans array
}
主な機能:
double *matrix_vector_multiply(int rows, int cols,
double **mat, double *vec);
int main(){
double *answer = matrix_vector_multiply(rows, cols, matrix, vector);
printf("Answer vector: \n");
print_vector(rows, answer);
return 0;
}
ポインタを使ってこの乗算を行い、それを元に戻す方法がわからない..助けていただければ幸いです。ありがとう!
編集:乗算関数:
#include <stdlib.h>
/* Multiply a matrix by a vector. */
double *matrix_vector_multiply(int rows, int cols,
double **mat, double *vec){
double *ans = malloc(rows * sizeof (double));
int i;
for (i=0; i<rows; rows++)
for (i=0; i<cols; cols++)
ans[rows] = ans[rows] + vec[rows][cols] * mat[rows];
return ans;
}
しかし、12行目でエラーが発生しています。添え字付きの値は配列またはポインターのいずれかです