\[ \begin{align}\begin{aligned}\newcommand\blank{~\underline{\hspace{1.2cm}}~}\\% Bold symbols (vectors) \newcommand\bs[1]{\mathbf{#1}}\\% Poor man's siunitx \newcommand\unit[1]{\mathrm{#1}} \newcommand\num[1]{#1} \newcommand\qty[2]{#1~\unit{#2}}\\\newcommand\per{/} \newcommand\squared{{}^2} \newcommand\cubed{{}^3} % % Scale \newcommand\milli{\unit{m}} \newcommand\centi{\unit{c}} \newcommand\kilo{\unit{k}} \newcommand\mega{\unit{M}} % % Percent \newcommand\percent{\unit{\%}} % % Angle \newcommand\radian{\unit{rad}} \newcommand\degree{\unit{{}^\circ}} % % Time \newcommand\second{\unit{s}} \newcommand\s{\second} \newcommand\minute{\unit{min}} \newcommand\hour{\unit{h}} % % Distance \newcommand\meter{\unit{m}} \newcommand\m{\meter} \newcommand\inch{\unit{in}} \newcommand\foot{\unit{ft}} % % Force \newcommand\newton{\unit{N}} \newcommand\kip{\unit{kip}} % kilopound in "freedom" units - edit made by Sri % % Mass \newcommand\gram{\unit{g}} \newcommand\g{\gram} \newcommand\kilogram{\unit{kg}} \newcommand\kg{\kilogram} \newcommand\grain{\unit{grain}} \newcommand\ounce{\unit{oz}} % % Temperature \newcommand\kelvin{\unit{K}} \newcommand\K{\kelvin} \newcommand\celsius{\unit{{}^\circ C}} \newcommand\C{\celsius} \newcommand\fahrenheit{\unit{{}^\circ F}} \newcommand\F{\fahrenheit} % % Area \newcommand\sqft{\unit{sq\,\foot}} % square foot % % Volume \newcommand\liter{\unit{L}} \newcommand\gallon{\unit{gal}} % % Frequency \newcommand\hertz{\unit{Hz}} \newcommand\rpm{\unit{rpm}} % % Voltage \newcommand\volt{\unit{V}} \newcommand\V{\volt} \newcommand\millivolt{\milli\volt} \newcommand\mV{\milli\volt} \newcommand\kilovolt{\kilo\volt} \newcommand\kV{\kilo\volt} % % Current \newcommand\ampere{\unit{A}} \newcommand\A{\ampere} \newcommand\milliampereA{\milli\ampere} \newcommand\mA{\milli\ampere} \newcommand\kiloampereA{\kilo\ampere} \newcommand\kA{\kilo\ampere} % % Resistance \newcommand\ohm{\Omega} \newcommand\milliohm{\milli\ohm} \newcommand\kiloohm{\kilo\ohm} % correct SI spelling \newcommand\kilohm{\kilo\ohm} % "American" spelling used in siunitx \newcommand\megaohm{\mega\ohm} % correct SI spelling \newcommand\megohm{\mega\ohm} % "American" spelling used in siunitx % % Inductance \newcommand\henry{\unit{H}} \newcommand\H{\henry} \newcommand\millihenry{\milli\henry} \newcommand\mH{\milli\henry} % % Power \newcommand\watt{\unit{W}} \newcommand\W{\watt} \newcommand\milliwatt{\milli\watt} \newcommand\mW{\milli\watt} \newcommand\kilowatt{\kilo\watt} \newcommand\kW{\kilo\watt} % % Energy \newcommand\joule{\unit{J}} \newcommand\J{\joule} % % Composite units % % Torque \newcommand\ozin{\unit{\ounce}\,\unit{in}} \newcommand\newtonmeter{\unit{\newton\,\meter}} % % Pressure \newcommand\psf{\unit{psf}} % pounds per square foot \newcommand\pcf{\unit{pcf}} % pounds per cubic foot \newcommand\pascal{\unit{Pa}} \newcommand\Pa{\pascal} \newcommand\ksi{\unit{ksi}} % kilopound per square inch \newcommand\bar{\unit{bar}} \end{aligned}\end{align} \]

Oct 24, 2024 | 371 words | 4 min read

7.2.3. Task 3#

Learning Objectives#

Predict the output of a complete for and while loop in Python; Create, manipulate, and read from arrays, lists, and dictionaries in Python; Manipulate and extract information from lists, arrays, and dictionaries in Python; Use loops to compare and evaluate associated elements in data sets in Python.

Introduction#

A Maclaurin series is an \(n^\text{th}\) degree polynomial that can be used to approximate a function around \(x = 0\). The exponential function can be approximated as follows:

(7.2)#\[e^x = \sum_{n=0}^{\infty}\frac{x^n}{n!} = \frac{1^0}{0!} + \frac{x^1}{1!} + \frac{x^2}{2!} + \cdots\]

Where the infinite series converges with the actual function over all real numbers. Practically, for a finite approximation, the fewer terms that are used, the less accurate the approximation will be, particularly as \(x\) gets further from \(0\).

Part A:#

Using your my_factorial function from Task 2, write a main program using the ENGR133_Python_Template.py which will use the Maclaurin series defined above to approximate \(e^x\) with specified values of \(n\) and \(x\). The program should also print to the screen the percent error of the estimated value with respect to a calculation of the actual value. Save the flowchart as a separate page in py3_team_teamnumber.pdf. Save your Python file as py3_team_3_a_teamnumber.py.

\[\text{Percent Error} = \frac{\text{Approximate Value} - \text{Actual Value}}{\text{Acutal Value}} \times 100\]

Sample Output#

Use the values in Table 7.6 below to test your program.

Table 7.6 Test Cases#

Case

\(n\)

\(x\)

1

5

3

Ensure your program’s output matches the provided samples exactly. This includes all characters, white space, and punctuation. In the samples, user input is highlighted like this for clarity, but your program should not highlight user input in this way.

Case 1 Sample Output

$ python3 py3_team_3_a_teamnumber.py Enter the value of n: 5 Enter the value of x: 3 Actual value: 20.09 Approximate value: 18.40 Error: -8.4%

Part B:#

This time, write a main function using the ENGR133_Python_Template.py that will generate as many terms as is necessary to approximate the function to a specified level of accuracy (i.e., below a percent error threshold) at a specified value of \(x\). Additionally, print to the screen the number of terms the series must contain before the target accuracy is achieved. Save the flowchart as a separate page in py3_team_teamnumber.pdf. Save your Python file as py3_team_3_b_teamnumber.py.

Sample Output#

Use the values in Table 7.7 below to test your program.

Table 7.7 Test Cases#

Case

\(x\)

target error threshold

1

3

5

Ensure your program’s output matches the provided samples exactly. This includes all characters, white space, and punctuation. In the samples, user input is highlighted like this for clarity, but your program should not highlight user input in this way.

Case 1 Sample Output

$ python3 py3_team_3_b_teamnumber.py Enter the value of x: 3 Enter the target error threshold: 5 Terms needed: 7 Actual value: 20.09 Approximate value: 19.41 Target error threshold: 5.0%