435,105 Members | 2,620 Online + Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,105 IT Pros & Developers. It's quick & easy.

how to add+multiply matrices

 P: 11 Develop a program which computes the current value of the vector {x} based on the following forward iteration: {x}(n+1) = [K] {x}(n)+ {z}, n = 0,1,2,3,4. In other words, the next vector {x} is equal to the product of [K] and the current vector {x} + constant vector {z}. Perform the matrix multiplication by using the function: void matrix_mult(double a, double *b, double *c, int rows); You should pass the matrix [K], and a pointer array {x} to matrix mult(), which will pass back a vector {y}=[K]{x}. [K] is a constant 3x3 matrix defined by: double k = { { 1.2, -3.0, 1.1}, {-4.1, 6.2, -2.2}, { 3.4, -2.5, -3.3} }; The initial components of the vector {x}(0) are specified by: double x = { 1./sqrt(2.), 0., -1./sqrt(2.) }, while the constant vector {z} is: double z = { 1./sqrt(3.), -1./sqrt(3.), 1./sqrt(3.) }. >>I've been trying for a week to finish this but i have only been able get the vector addition part done in [K] {x}(n)+ {z} so now it only computes [K] {x}(n). Can someone finish this off for me or help me in newbie language because it is due soon and my head hurts from trying. Thanks in advance! Expand|Select|Wrap|Line Numbers #include  #include  void unit_norm(double *vec, int cols); void matrix_mult(double a, double *b, double *c, int rows); main() {  int row, i, j;  double k = {{1.2, -3.0,  1.1},                   {-4.1, 6.2, -2.2},                   {3.4, -2.5, -3.3}};  double y, x = { 1./sqrt(2.), 0., -1./sqrt(2.) };    double w, z = { 1./sqrt(3.), -1/sqrt(3.), 1./sqrt(3.) };    printf("\nInitial vector:\n\n");  printf("x = [");  for(row=0; row<3; row++)         printf(" %.6f ", x[row]);  printf("]\n\n");     for(i=0; i<=4; i++)   {    matrix_mult(k,x,y,3);    printf("New Vector:\ny[%d] = [", i+1);    for(j=0; j<=2; j++)         printf(" %.6f ", y[j]);    printf("]\n");      unit_norm(y,3);    printf("Normalized new vector:\nx[%d] = [", i+1);    for(j=0; j<=2; j++)         printf(" %.6f ", y[j]);    printf("]\n");    for(j=0; j<=2; j++)         x[j] = y[j];    printf("\n");   }   return(0); }   void matrix_mult(double a, double *b, double *c, int rows) {         int k, s;         double dot_p;         for(s=0; s 