448,678 Members | 1,129 Online
Need help? Post your question and get tips & solutions from a community of 448,678 IT Pros & Developers. It's quick & easy.

Need Help With This Vector Topic. Fast

 P: 2 NEED TO MAKE A PROGRAM which computes the current value of the vectors {x} based on the following forward iterations: this >>> {x}(n+1) = [K] {x}(n), n = 0,1,2, ... ,8,9. In other words, the next vector {x} is equal to the product of [K] and the current vector {x}. Perform the matrix multiplication by using the function: void matrix_mult(double a[4][4], double b[4], double c[4], int rows); You should pass the matrix [K] and a pointer array {x} to matrix_mult() which will pass back a new vector {y} ). [K] is a constant 4x4 matrix defined by: double K[4][4] = { { 2., -4., 1., 0.}, {-4., 5., -2., 1.}, { 1., -2., 6., -3.}, { 0., 1., -3., 7.}}; The initial components of the vector {x}(0) are specified by: double x[4] = { 1./3., 2./3., 1./3., pow(3.,0.5)/3.}; First, print the value of the initial vector {x}(0) on the screen. Then, perform forward iteration 10 times (for n=0 to 9). Each time after new vector is computed from [K]{x}, normalize that vector by using the function double unit_vec(double vec[4], int cols) which was discusseed in class (see Program w8-5.c; this function transforms a vector to a unit vector - of magnitude 1). For the matrix multiplication with the vector [K]{x}, see Program w8-3.c . Always use the normalized vector as the vector {x}(n) for the next iteration. For each iteration, print the new vector, its length, and the normalized new vector in main(). I BUILDED THE SKELTON BUT I AM NOT SURE. PLEASE CAN SOME EXPERT IN THIS FIELD HELP ME THIS. I WILL REALLY APPRICIATE IT THANK YOU. #include #include double unit_norm(double vec[4], int cols); void matrix_mult(double a[4][4], double b[4], double c[4], int rows); main() { double K[4][4] = { { 2., -4., 1., 0.}, {-4., 5., -2., 1.}, { 1., -2., 6., -3.}, { 0., 1., -3., 7.}}; double y[4], x[4] = { 1./3., 2./3., 1./3., pow(3.,0.5)/3.}; // Enter your C statements ......................... ......................... } void matrix_mult(double a[4][4], double b[4], double c[4], int rows) { // compute c[]=a[][]*b[] .......................... .......................... return; } double unit_norm(double vec[4], int cols) { double sum; // normalize a vector ........................... ........................... return sum; } OUTPUT LOOKS LIKE THIS Initial vector: x[0] = [ 0.333333 0.666667 0.333333 0.577350] New vector: y[1] = [-1.666667 1.910684 -0.732051 3.708119] The length of this vector is: 4.551322 Normalized new vector: x[1] = [-0.366194 0.419808 -0.160844 0.814734] . . . New vector: y[10] = [-3.096892 5.315900 -6.556405 6.293838] The length of this vector is: 10.974897 Normalized new vector: x[10] = [-0.282180 0.484369 -0.597400 0.573476] */ Nov 20 '06 #1