Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

NO UNCOMPLETED ANSWERS!! Develop a program which computes the current value of t

ID: 3633212 • Letter: N

Question

NO UNCOMPLETED ANSWERS!!



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.},
"hw7.txt" [Read only] 112 lines, 2940 characters
MAE9: Homework #7, Fall 2011

Due on Tuesday, November 15, Turnin by 9:00pm


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 <stdio.h>
#include <math.h>
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]

Explanation / Answer

#include #include void unit_norm(double *vec, int cols); void matrix_mult(double a[3][3], double *b, double *c, int rows); main() { int row, i, j; double k[3][3] = {{1.2, -3.0, 1.1}, {-4.1, 6.2, -2.2}, {3.4, -2.5, -3.3}}; double y[3], x[3] = { 1./sqrt(2.), 0., -1./sqrt(2.) }; double w[3], z[3] = { 1./sqrt(3.), -1/sqrt(3.), 1./sqrt(3.) }; printf(" Initial vector: "); printf("x[0] = ["); for(row=0; row