---
title: "Data 605 Homework 14"
author: "Laura B"
date: "`r Sys.Date()`"
output: openintro::lab_report
---


# Taylor Series Expansions of Popular Functions

## 1. \( f(x) = (1 - x) \)

The valid range for this function is \( |x| < 1 \).

The Taylor Series expansion of \( f(x) \) around \( x = 0 \) is:

\[ f(x) = \sum_{n=0}^{\infty} \frac{{f^{(n)}(0)}}{{n!}} x^n \]

where \( f^{(n)}(0) \) represents the \( n \)-th derivative of \( f(x) \) evaluated at \( x = 0 \).

For \( f(x) = (1 - x) \), the derivatives are:

\[
\begin{align*}
f(x) &= (1 - x) \\
f'(x) &= -1 \\
f''(x) &= 0 \\
f'''(x) &= 0 \\
&\vdots \\
f^{(n)}(x) &= 0 \text{ for } n \geq 2
\end{align*}
\]

Thus, the Taylor Series expansion simplifies to:

\[ f(x) = 1 - x \]

## 2. \( f(x) = e^x \)

The valid range for this function is \( -\infty < x < \infty \).

The Taylor Series expansion of \( f(x) \) around \( x = 0 \) is:

\[ f(x) = \sum_{n=0}^{\infty} \frac{{f^{(n)}(0)}}{{n!}} x^n \]

where \( f^{(n)}(0) \) represents the \( n \)-th derivative of \( f(x) \) evaluated at \( x = 0 \).

For \( f(x) = e^x \), the derivatives are:

\[
\begin{align*}
f(x) &= e^x \\
f'(x) &= e^x \\
f''(x) &= e^x \\
f'''(x) &= e^x \\
&\vdots \\
f^{(n)}(x) &= e^x \text{ for all } n
\end{align*}
\]

Thus, the Taylor Series expansion is the Maclaurin series of \( e^x \), which is:

\[ f(x) = \sum_{n=0}^{\infty} \frac{{x^n}}{{n!}} \]

## 3. \( f(x) = \ln(1 + x) \)

The valid range for this function is \( |x| < 1 \).

The Taylor Series expansion of \( f(x) \) around \( x = 0 \) is:

\[ f(x) = \sum_{n=0}^{\infty} \frac{{f^{(n)}(0)}}{{n!}} x^n \]

where \( f^{(n)}(0) \) represents the \( n \)-th derivative of \( f(x) \) evaluated at \( x = 0 \).

For \( f(x) = \ln(1 + x) \), the derivatives are:

\[
\begin{align*}
f(x) &= \ln(1 + x) \\
f'(x) &= \frac{{1}}{{1 + x}} \\
f''(x) &= -\frac{{1}}{{(1 + x)^2}} \\
f'''(x) &= \frac{{2}}{{(1 + x)^3}} \\
&\vdots \\
f^{(n)}(x) &= (-1)^{n-1} \frac{{(n - 1)!}}{{(1 + x)^n}} \text{ for } n \geq 1
\end{align*}
\]

Thus, the Taylor Series expansion is:

\[ f(x) = \sum_{n=0}^{\infty} (-1)^{n-1} \frac{{x^n}}{{n}} \]

## 4. \( f(x) = x^{1/2} \)

The valid range for this function is \( x \geq 0 \).

The Taylor Series expansion of \( f(x) \) around \( x = a \) is:

\[ f(x) = \sum_{n=0}^{\infty} \frac{{f^{(n)}(a)}}{{n!}} (x - a)^n \]

where \( f^{(n)}(a) \) represents the \( n \)-th derivative of \( f(x) \) evaluated at \( x = a \).

For \( f(x) = x^{1/2} \), the derivatives are:

\[
\begin{align*}
f(x) &= x^{1/2} \\
f'(x) &= \frac{{1}}{{2\sqrt{x}}} \\
f''(x) &= -\frac{{1}}{{4x^{3/2}}} \\
f'''(x) &= \frac{{3}}{{8x^{5/2}}} \\
&\vdots \\
f^{(n)}(x) &= \frac{{(-1)^{n-1}(2n - 3)!!}}{{2^n x^{(2n-1)/2}}} \text{ for } n \geq 1
\end{align*}
\]

Thus, the Taylor Series expansion is:

\[ f(x) = \sum_{n=0}^{\infty} \frac{{(-1)^{n-1}(2n - 3)!!}}{{2^n}} (x - a)^{n/2} \]

