Develop a program which computes the current value


Develop a program which computes the current value of the vector {x} based on the following forward iteration:

{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 vector {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().

*/

/* Use the skeleton below to build your program */
/* Insert the needed statements at ..... places */

#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;
}



/* Your output should look like:

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]

*/

Request for Solution File

Ask an Expert for Answer!!
Programming Languages: Develop a program which computes the current value
Reference No:- TGS0135973

Expected delivery within 24 Hours