Skip to content

Commit

Permalink
Merge pull request #14 from rcc02007/master
Browse files Browse the repository at this point in the history
Lecture 20
  • Loading branch information
rmh13011 committed Apr 6, 2017
2 parents e2d4270 + 953d785 commit e543ed5
Show file tree
Hide file tree
Showing 19 changed files with 2,816 additions and 79 deletions.
1 change: 1 addition & 0 deletions HW6/.~lock.Primary_Energy_monthly.csv#
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
,ryan,fermi,31.03.2017 16:47,file:///home/ryan/.config/libreoffice/4;
86 changes: 86 additions & 0 deletions HW6/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Homework #6
## due 4/14 by 11:59pm


0. Create a new github repository called 'curve_fitting'.

a. Add rcc02007 and pez16103 as collaborators.

b. Clone the repository to your computer.


1. Create a least-squares function called `least_squares.m` that accepts a Z-matrix and
dependent variable y as input and returns the vector of best-fit constants, a, the
best-fit function evaluated at each point $f(x_{i})$, and the coefficient of
determination, r2.

```matlab
[a,fx,r2]=least_squares(Z,y);
```

Test your function on the sets of data in script `problem_1_data.m` and show that the
following functions are the best fit lines:

a. y=0.3745+0.98644x+0.84564/x

b. y=-11.4887+7.143817x-1.04121 x^2+0.046676 x^3

c. y=4.0046e^(-1.5x)+2.9213e^(-0.3x)+1.5647e^(-0.05x)


2. Use the Temperature and failure data from the Challenger O-rings in lecture_18
(challenger_oring.csv). Your independent variable is temerature and your dependent
variable is failure (1=fail, 0=pass). Create a function called `cost_logistic.m` that
takes the vector `a`, and independent variable `x` and dependent variable `y`. Use the
function, $\sigma(t)=\frac{1}{1+e^{-t}}$ where $t=a_{0}+a_{1}x$. Use the cost function,

$J(a_{0},a_{1})=\sum_{i=1}^{n}\left[-y_{i}\log(\sigma(t_{i}))-(1-y_{i})\log((1-\sigma(t_{i})))\right]$

and gradient

$\frac{\partial J}{\partial a_{i}}=
1/m\sum_{k=1}^{N}\left(\sigma(t_{k})-y_{k}\right)t_{k}$

a. edit `cost_logistic.m` so that the output is `[J,grad]` or [cost, gradient]

b. use the following code to solve for a0 and a1

```matlab
% Set options for fminunc
options = optimset('GradObj', 'on', 'MaxIter', 400);
% Run fminunc to obtain the optimal theta
% This function will return theta and the cost
[theta, cost] = ...
fminunc(@(a)(costFunction(a, x, y)), initial_a, options);
```

c. plot the data and the best-fit logistic regression model

```matlab
plot(x,y, x, sigma(a(1)+a(2)*x))
```

3. The vertical stress under a corner of a rectangular area subjected to a uniform load of
intensity $q$ is given by the solution of the Boussinesq's equation:

$\sigma_{z} =
\frac{q}{4\pi}\left(\frac{2mn\sqrt{m^{2}+n^{2}+1}}{m^{2}+n^{2}+1+m^{2}n^{2}}\frac{m^{2}+n^{2}+2}{m^{2}+n^{2}+1}+sin^{-1}\left(\frac{2mn\sqrt{m^{2}+n^{2}+1}}{m^{2}+n^{2}+1+m^{2}n^{2}}\right)\right)$

Typically, this equation is solved as a table of values where:

$\sigma_{z}=q f(m,n)$

where $f(m,n)$ is the influence value, q is the uniform load, m=a/z, n=b/z, a and b are
width and length of the rectangular area and z is the depth below the area.

a. Finish the function `boussinesq_lookup.m` so that when you enter a force, q,
dimensions of rectangular area a, b, and depth, z, it uses a third-order polynomial
interpolation of the four closest values of m to determine the stress in the vertical
direction, sigma_z=$\sigma_{z}$. Use a $0^{th}$-order, polynomial interpolation for
the value of n (i.e. round to the closest value of n).

b. Copy the `boussinesq_lookup.m` to a file called `boussinesq_spline.m` and use a
cubic spline to interpolate in two dimensions, both m and n, that returns sigma_z.



Binary file added HW6/README.pdf
Binary file not shown.
22 changes: 22 additions & 0 deletions HW6/boussinesq_lookup.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
function sigma_z=boussinesq_lookup(q,a,b,z)
% function that determines stress under corner of an a by b rectangular platform
% z-meters below the platform. The calculated solutions are in the fmn data
% m=fmn(:,1)
% in column 2, fmn(:,2), n=1.2
% in column 3, fmn(:,2), n=1.4
% in column 4, fmn(:,2), n=1.6

fmn= [0.1,0.02926,0.03007,0.03058
0.2,0.05733,0.05894,0.05994
0.3,0.08323,0.08561,0.08709
0.4,0.10631,0.10941,0.11135
0.5,0.12626,0.13003,0.13241
0.6,0.14309,0.14749,0.15027
0.7,0.15703,0.16199,0.16515
0.8,0.16843,0.17389,0.17739];

m=a/z;
n=b/z;

%...
end
27 changes: 27 additions & 0 deletions HW6/cost_logistic.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
function [J, grad] = cost_logistic(a, x, y)
% cost_logistic Compute cost and gradient for logistic regression
% J = cost_logistic(theta, X, y) computes the cost of using theta as the
% parameter for logistic regression and the gradient of the cost
% w.r.t. to the parameters.

% Initialize some useful values
N = length(y); % number of training examples

% You need to return the following variables correctly
J = 0;
grad = zeros(size(theta));

% ====================== YOUR CODE HERE ======================
% Instructions: Compute the cost of a particular choice of a.
% Compute the partial derivatives and set grad to the partial
% derivatives of the cost w.r.t. each parameter in theta
%
% Note: grad should have the same dimensions as theta
%



% =============================================================

end

15 changes: 15 additions & 0 deletions HW6/problem_1_data.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

% part a
xa=[1 2 3 4 5]';
yb=[2.2 2.8 3.6 4.5 5.5]';

% part b

xb=[3 4 5 7 8 9 11 12]';
yb=[1.6 3.6 4.4 3.4 2.2 2.8 3.8 4.6]';

% part c

xc=[0.5 1 2 3 4 5 6 7 9];
yc=[6 4.4 3.2 2.7 2.2 1.9 1.7 1.4 1.1];

90 changes: 47 additions & 43 deletions lecture_18/lecture_18.ipynb

Large diffs are not rendered by default.

Binary file modified lecture_18/octave-workspace
Binary file not shown.
Loading

0 comments on commit e543ed5

Please sign in to comment.