Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Added Part E (Chris)
  • Loading branch information
cjc13016 committed Dec 14, 2017
1 parent 8354c38 commit 1fa0a3d
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 0 deletions.
19 changes: 19 additions & 0 deletions README.md
Expand Up @@ -56,3 +56,22 @@ end
```

![nxn Interior Nodes, n = 10](./figures/figure2.png)

### Part E

```matlab
[pw_se,w] = SE_diff(T,P,n);
[root,fx,ea,iter] = bisect_final_project(@(T) SE_diff(T,0.001,25),.001,1,.1)
```
```matlab
The same code was run five times, changing the value of n from 20 to 40 for intervals of 5.
```

| number of nodes | Tension (uN/um) | rel. error|
| --- | --- | --- |
| 3 | 0.0489 | n/a |
| 20 | 0.0599 | 18.4% |
| 25 | 0.0601 | 0.30% |
| 30 | 0.0602 | 0.17% |
| 35 | 0.0603 | 0.16% |
| 40 | 0.0603 | 0.00% |
37 changes: 37 additions & 0 deletions bisect_final_project.m~
@@ -0,0 +1,37 @@
function [root,fx,ea,iter]=bisect_final_project(func,xl,xu,es,maxit,varargin)
% bisect: root location zeroes
% [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...):
% uses bisection method to find the root of func
% input:
% func = name of function
% xl, xu = lower and upper guesses
% es = desired relative error (default = 0.0001%)
% maxit = maximum allowable iterations (default = 50)
% p1,p2,... = additional parameters used by func
% output:
% root = real root
% fx = function value at root
% ea = approximate relative error (%)
% iter = number of iterations
if nargin<3,error('at least 3 input arguments required'),end
test = func(xl,varargin{:})*func(xu,varargin{:});
if test>0,error('no sign change'),end
if nargin<4||isempty(es), es=0.0001;end
if nargin<5||isempty(maxit), maxit=50;end
iter = 0; xr = xl; ea = 100;
while (1)
xrold = xr;
xr = (xl + xu)/2;
iter = iter + 1;
if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end
test = func(xl,varargin{:})*func(xr,varargin{:});
if test < 0
xu = xr;
elseif test > 0
xl = xr;
else
ea = 0;
end
if ea <= es || iter >= maxit,break,end
end
root = xr; fx = func(xr, varargin{:});
2 changes: 2 additions & 0 deletions bisect_final_project_script.m
@@ -0,0 +1,2 @@
[pw_se,w] = SE_diff(T,P,n);
[root,fx,ea,iter] = bisect_final_project(@(T) SE_diff(T,0.001,40),.001,1,.1)

0 comments on commit 1fa0a3d

Please sign in to comment.