Skip to content

Updated repo #3

Merged
merged 26 commits into from
Jan 31, 2017
Merged
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
lecture 2 notes
rcc02007 committed Jan 19, 2017
commit 3f723f4ec210e8e836bc29f0a63c7fca37b50d73
Binary file added lecture_01/lecture_01_notes.pdf
Binary file not shown.
174 changes: 174 additions & 0 deletions lecture_02/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@

# Solution to Form #1


```octave
[1,2,3]*[1;2;3]
```

ans =

14




```octave
[1,2,3]*[1;2;3]=?
```


```octave
```

# The first source of error is roundoff error
## Just storing a number in a computer requires rounding


```octave
fprintf('realmax = %1.20e\n',realmax)
fprintf('realmin = %1.20e\n',realmin)
fprintf('maximum relative error = %1.20e\n',eps)
```

realmax = 1.79769313486231570815e+308
realmin = 2.22507385850720138309e-308
maximum relative error = 2.22044604925031308085e-16



```octave
s=1;
for i=1:1000
s=s+eps/10;
end
s==1
```

ans = 1


# Freefall Model (revisited)
## Octave solution (will run same on Matlab)

Set default values in Octave for linewidth and text size


```octave
%plot --format svg
```


```octave
set (0, "defaultaxesfontname", "Helvetica")
set (0, "defaultaxesfontsize", 18)
set (0, "defaulttextfontname", "Helvetica")
set (0, "defaulttextfontsize", 18)
set (0, "defaultlinelinewidth", 4)
```

Define time from 0 to 12 seconds with `N` timesteps
function defined as `freefall`


```octave
function [v_analytical,v_terminal,t]=freefall(N)
t=linspace(0,12,N)';
c=0.25; m=60; g=9.81; v_terminal=sqrt(m*g/c);
v_analytical = v_terminal*tanh(g*t/v_terminal);
v_numerical=zeros(length(t),1);
delta_time =diff(t);
for i=1:length(t)-1
v_numerical(i+1)=v_numerical(i)+(g-c/m*v_numerical(i)^2)*delta_time(i);
end
% Print values near 0,2,4,6,8,10,12 seconds
indices = round(linspace(1,length(t),7));
fprintf('time (s)|vel analytical (m/s)|vel numerical (m/s)\n')
fprintf('-----------------------------------------------\n')
M=[t(indices),v_analytical(indices),v_numerical(indices)];
fprintf('%7.1f | %18.2f | %15.2f\n',M(:,1:3)');
plot(t,v_analytical,'-',t,v_numerical,'o-')
end
```


```octave
[v_analytical,v_terminal,t]=freefall(120);
```

time (s)|vel analytical (m/s)|vel numerical (m/s)
-----------------------------------------------
0.0 | 0.00 | 0.00
2.0 | 18.76 | 18.82
4.0 | 32.64 | 32.80
6.1 | 40.79 | 40.97
8.0 | 44.80 | 44.94
10.0 | 46.84 | 46.93
12.0 | 47.77 | 47.82



![svg](output_13_1.svg)


# Types of error
## Freefall is example of "truncation error"
### Truncation error results from approximating exact mathematical procedure

We approximated the derivative as $\delta v/\delta t\approx\Delta v/\Delta t$

Can reduce error by decreasing step size -> $\Delta t$=`delta_time`

## Another example of truncation error is a Taylor series (or Maclaurin if centered at a=0)

Taylor series:
$f(x)=f(a)+f'(a)(x-a)+\frac{f''(a)}{2!}(x-a)^{2}+\frac{f'''(a)}{3!}(x-a)^{3}+...$

We can approximate the next value in a function by adding Taylor series terms:

|Approximation | formula |
|---|-------------------------|
|$0^{th}$-order | $f(x_{i+1})=f(x_{i})+R_{1}$ |
|$1^{st}$-order | $f(x_{i+1})=f(x_{i})+f'(x_{i})h+R_{2}$ |
|$2^{nd}$-order | $f(x_{i+1})=f(x_{i})+f'(x_{i})h+\frac{f''(x_{i})}{2!}h^{2}+R_{3}$|
|$n^{th}$-order | $f(x_{i+1})=f(x_{i})+f'(x_{i})h+\frac{f''(x_{i})}{2!}h^{2}+...\frac{f^{(n)}}{n!}h^{n}+R_{n}$|

Where $R_{n}=\frac{f^{(n+1)}(\xi)}{(n+1)!}h^{n+1}$ is the error associated with truncating the approximation at order $n$.

The $n^{th}$-order approximation estimates that the unknown function, $f(x)$, is equal to an $n^{th}$-order polynomial.

In the Freefall example, we estimated the function with a $1^{st}$-order approximation, so

$v(t_{i+1})=v(t_{i})+v'(t_{i})(t_{i+1}-t_{i})+R_{1}$

$v'(t_{i})=\frac{v(t_{i+1})-v(t_{i})}{t_{i+1}-t_{i}}-\frac{R_{1}}{t_{i+1}-t_{i}}$

$\frac{R_{1}}{t_{i+1}-t_{i}}=\frac{v''(\xi)}{2!}(t_{i+1}-t_{i})$

or the truncation error for a first-order Taylor series approximation is

$\frac{R_{1}}{t_{i+1}-t_{i}}=O(\Delta t)$


1. digital representation of a number is rarely exact

2. arithmetic (+,-,/,\*) causes roundoff error


```octave
fprintf('%1.20f\n',double(pi))
fprintf('%1.20f\n',single(pi))
```

3.14159265358979311600
3.14159274101257324219



```octave
```
597 changes: 597 additions & 0 deletions lecture_02/lecture_02.ipynb

Large diffs are not rendered by default.

Binary file added lecture_02/notes.pdf
Binary file not shown.