Skip to content

update #9

Merged
merged 8 commits into from Apr 6, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions HW6/.~lock.Primary_Energy_monthly.csv#
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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];

2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -49,7 +49,7 @@ Jupiter notebook (with matlab or octave kernel)

### Note on Homework and online forms

The Homeworks are graded based upon effort and completeness. The forms are not graded at
The Homeworks are graded based upon effort, correctness, and completeness. The forms are not graded at
all, if they are completed you get credit. It is *your* responsibility to make sure your
answers are correct. Use the homeworks and forms as a study guide for the exams. In
general, I will not post homework solutions.
Expand Down
Binary file added lecture_15/lecture_15.pdf
Binary file not shown.
Binary file added lecture_16/MonteCarloPi.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added lecture_16/MonteCarloPi_rand.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions lecture_16/gen_examples.m
@@ -0,0 +1,5 @@
x1=linspace(0,1,1000)';
y1=0*x1+0.1*rand(length(x1),1);

x2=linspace(0,1,10)';
y2=1*x2;