Lab 1
This lab will be mostly focused on using for loops and placeholders to implement efficient algorithms. While we are not going to place huge focus on the efficiency of the algorithms we write, we are going to make sure we understand the basics.
Contents
Evaluating Taylor polynomials
Consider the Taylor series expansion for about :
The partial sums are given by
Here is some example code that is not efficient to compute
% % Algorithm 1 % N = 1000; % SUM = 0; % x = 1.1; % for n = 1:N % SUM = SUM + (-1)^(i+1)/i*(x-1)^i; % end % We analyze the performance of the algorithm, in part, by using the following % tic/toc command: tic N = 1000; SUM = 0; x = 1.1; for n = 1:N SUM = SUM + (-1)^(n+1)/n*(x-1)^n; end toc
Elapsed time is 0.001571 seconds.
Exercise 1
First, write an algorithm by modifying the above algorithm for , that counts the total number operations (multipications and additions). For simplicity consider as multiplications.
Exercise 2
Using the algorithm written in Example 1 on page 33 of the text (ignoring the error estimate), write an algorithm to compute than needs only 4N operations to compute N terms. Call this Algorithm 2. Here is the pseudo-code. Make sure you understand why this completes the same task as Algorithm 1.
STEP 1: set n = 1; y = x-1; SUM = 0; POWER = y; TERM = y; SIGN = -1; STEP 2: While n <= N do STEPS 3 & 4 STEP 3: Set SIGN = - SIGN; SUM = SUM + SIGN*TERM; POWER = POWER*y; TERM = POWER/(n+1); STEP 4: Set n = n+1; STEP 5: OUTPUT(SUM);
Exercise 3
Using the break command
break;
perform the following. Assume you only have limited resources and can only use 1000 operations. Approximate using Algorithms 1 & 2, counting your operations as you go, and breaking out of the for loop when 1000 operations have been counted. What is the error for each algorithm? How many terms did you compute?