1E

To Prove:

Here, is the complex root of unity such that: .

There are exactly n complex roots of unity: for .

Therefore, is the principal root of unity.

Step 1: Let

Now substituting the value of as

For , the expression in can be written as: .

Therefore,


Step 2: According to the definition of the exponential of a complex number:

Since,

Hence,

2E

Consider the given coefficient vector a = (0, 1, 2, 3). The Discrete Fourier transformation (DFT) is the vector y=. The DFT can be expressed in the general form(y= ) as follows:

Now, multiply the vandermonde matrix and coefficient matrix. Thus, the resultant matrix is as follows:

…… (1)

Each row value is equals to corresponding element in the left side matrix. Therefore solve the right hand side matrix to calculate the values of and.

Consider the values and to calculate the vector elements.

Thus, …… (2)

Similarly calculate the value of

…… (3)

Put the value in equation (3)

Thus,

Calculate the value of as follows:

Hence, …… (4)

Calculate the value of as follows:

Hence, …… (5)

From equation (2) , (3) , (4) and (5), the value of and are as follows:

3E

The polynomials are as follows:

and

The evaluation is done using the fourth roots of unity that is, .

• Call RECURSIVE-FFT ((-10, -1,0,0)) and evaluate to (-11, -10-i, -9, -10+i)

• Now evaluate the original function call, the values are ,.

• On changing the values, we have and

• Similarly, if it is required to compute the FFT of other polynomial, get the FFT of B(x) as


On interpolation, the result is as follows:


The polynomial is:

4E

Discrete Fourier transform (DFT) is invertible with

=

where is the inverse of vandermonde matrix.

So,

where is the root of unity.


The inverse DFT which is is calculated as follows.

where is the inverse DFT, is the coefficient vector. is the nth root of unity.


At first compute the Discrete Fourier transform (DFT) to obtain the value of then flip the sequence by fixing the .

Pseudo code of is as follows:

INV-DFT (y)

// store length of vector y

1. n= y. length

// check the value of variable n

2. if n==1

//return the value of vector

3. return y

// is the principle nth root of unity and is its inverse

4.

5.

//split the vector into even and odd part and store it into coefficient vector of y

6.

7.

//for loop is used to flip the sequence

8. for j=0 to n/2-1

9.

10.

//it is used for mapping

11.

//if statement is used to find the value of coefficient vector

12. if j=0

13.

14. else

15.

//return the column vector

16. return a


• In line first store the length of vector y into variable n so the worst case complexity will be.

• Line 2-3 is used to check the element of DFT, so the complexity will be.

• Line 5-6 of pseudo-code is used to define the coefficient vector for polynomial so the complexity will be.

• Line 8-9 is used to find the value of so each invocation takes.

• Line 12 and 14 calculate the value of by dividing every term to n. This creates another factor which can be neglected by doing the division step along with the previous step.

So the total time complexity will be as follows:

By using master’s theorem, the following time complexity is obtained:

The highest order term decides the complexity.

In the above recurrence of running time, represent the length of input vector. Evaluate a polynomial of degree n at nth root using inverse DFT.

5E

By using FFT (Fast Fourier Transform) which takes the advantage of the special properties of the complex roots of unity.

FFT method employs a divide and conquer strategy using even index and odd index coefficients of A(x) separately to define the three-new degree bound n/3 polynomials , and

These polynomials are expanded as follows:

Evaluate the degree bound n/2 polynomials and at the points

Combine the results obtained.


By applying the halving lemma, the list of values consists not of n distinct values but only of the n/3 complex roots of unity with each root occurring exactly twice.

Therefore, the polynomials , and of degree bound n/3 are recursively evaluated at the n/3 complex roots of unity.

These sub problems have the same form as the original problem but are half the size.

Thus, an n element computation is divided into two n/3 elements computations.

This decomposition is the basis for the following recursive FFT algorithm which computes DFT of an n element vector where n is the power of 3.

For n to be a power of 3, that the cube of the complex roots of unity are the n/3 complex roots of unity apply the cancellation lemma,

Therefore,

Now, write and define for i=1,2,3…

The recurrence which is obtained is:


Solving the recurrence relation using Master’s theorem:

Compare the above recurrence by standard formula:

Here, a=3, b=3 and f(n)=n. Computing the value of the value obtained is =1

On comparing the values of and f(n) which are same the case 2 of master’s theorem is applied.

So, the final running time complexity is:

The procedure is described by the following algorithm:

RECURSIVE-FFT-INVERSE(y)

1 n=y. length

2 if n==1

3 return y/n

4 end if

5

6

7

8

9

10 for k = 0 to do

11

12

13

14 end for

15 return a

6E

To prove that and inverse are well defined in the given system , suppose be the ring of integers .

Where, is a positive integer and is even integer

Then,

Now, construct a polynomial such that

Where and polynomial is of degree-bound with coefficients from

Now, define such that

Then, the vector is discrete Fourier transformation of the coefficient vector

Now, show that product and sum of two distinct tuples of the vector is again the tuple of

Since,

Then,

Then, take product and sum of

And

Then, the product and the sum of two distinct tuples of the vector is again a tuple of

Therefore, discrete Fourier transformation () is well defined


Now, write the discrete Fourier transformation as the matrix product

Then,

Where, as the principal root of unity

Since, the square matrix is a non-singular matrix in

That is

Then, exists

Now, multiply from left side by in the equation

Then,

Or

Then, it can be written as

Since, exists

Therefore, is well defined in .

Hence, and inverse are well defined in the system.

7E

Finding the coefficient of a polynomial of bounded degree

MULTIPLYING-OUT algorithm is used to find the coefficients of polynomial P(x) of degree bound n+1 that has zeroes. This algorithm uses the property of recursive calls; every recursive call made here is of size.

The Multiplying-Out algorithm takes input as the list of values that are provided by the user. After this, it is checked whether the list has one single item or not, if the condition satisfies, return the value of. It is returned because the polynomial has the value zero at zj, only when the polynomial will be a multiple of. After this, the list has been divided into two lists (P2(x) and P2(x)) and recursion is done in list items.

After this, fast Fourier Transform is done on both lists and their values is stored in variables y1 and y2. Make use of for loop to calculate the value of y and then perform Fourier transform inverse storing values in P(x).


Multiplying-Out algorithm is given below:

MULTIPLYING-OUT ALGORITHM: (

// use of if condition to check whether list has a single element or not

1. if n = 1

return

2. else

// Divide the list into two parts, where P1(x) contains list items 1 to n/2

// and P2(x) contains rest of them and recursion is performed on both list items

3. P1(x) = Multiplying Out

4. P2(x) = Multiplying Out

// perform fast Fourier transform on P1(x) and P2(x)

5. (y1 is a vector of 2n values).

6. (same for y2)

// Compute the point wise product y of y1; y2 in linear time

7. for()

// Perform inverse of evaluation to find the coefficient of polynomial using

// point-value representation

8.


For determining the runtime, following should be taken into consideration:

1. Lines 1, 2, 7 take time in total.

2. There are 2 recursive calls to Multiplying Out of size n=2 each (lines 3, 4).

3. There will be a total of three calls FFT (fast Fourier transform) of size 2n

(lines 5, 6, 8).

Therefore, total running time will be:

Considering the recursion tree of Multiplying-Out, the height of this tree will be. It is so because at every recursive call made, the input size is partitioned into half. This can be performed only in times before n is minimized to the base 1.


At each level (with = 0 making it the top level). The algorithm will make recursive calls of size . The algorithm will have cases of extra work for level , the FFT (fast Fourier transform) of current active calls have been carried out making use of roots of unity point.

In reality, it is found that it is useless to add any value for the recursive calls stated in since their work is counted in the extra work in lower branches of the tree.

So, at level 0, the total work is

At level 1, the running time can be given as:

At level l, the running time can be given as:

Therefore, the running time at any particular level is.

There will be levels in the algorithm which takes time of.

8E

Chegg Rip, Introduction to Algorithms, 3rd Edition. [RipVer 0.1] (index)