05_curve_fitting
Problem 2
least squares function
function [a,fx,r2] = least_squares(Z,y)
a = Z\y;
fx = Z*a;
b=y-fx;
St=std(y);
Sr=std(b);
r2 = 1-Sr/St;
end
% Part A
xa=[1 2 3 4 5]';
ya=[2.2 2.8 3.6 4.5 5.5]';
Z=[ones(size(xa)) xa xa.^-1];
[a_a,fx_a,r2_a] = least_squares (Z,ya)
xa_fcn = linspace(min(xa),max(xa));
a = figure(1);
plot(xa,ya,'o',xa_fcn,a_a(1)+a_a(2)*xa_fcn+a_a(3)*xa_fcn.^-1)
saveas(a, 'figure_01.png')
% Part B
xb=[0 2 4 6 8 10 12 14 16 18]';
yb=[21.5 20.84 23.19 22.69 30.27 40.11 43.31 54.79 70.88 89.48]';
Z=[ones(size(xb)) xb xb.^2 xb.^3];
[a_b,fx_b,r2_b] = least_squares (Z,yb)
xb_fcn = linspace(min(xb),max(xb));
b = figure(2);
plot(xb,yb,'o',xb_fcn,a_b(1)+a_b(2)*xb_fcn.^1+a_b(3)*xb_fcn.^2+a_b(4)*xb_fcn.^3)
saveas(b, 'figure_02.png')
% 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]';
Z=[exp(-1.5*xc), exp(-0.3*xc), exp(-0.05*xc)];
[a_c,fx_c,r2_c] = least_squares (Z,yc)
xc_fcn = linspace(min(xc),max(xc));
c = figure(3);
plot(xc,yc,'o',xc_fcn,a_c(1)*exp(-1.5.*xc_fcn) + a_c(2)*exp(-0.3.*xc_fcn) + a_c(3)*exp(-0.05.*xc_fcn));
saveas(c, 'figure_03.png')
% Part D
xd=[0.00000000e+00 1.26933037e-01 2.53866073e-01 3.80799110e-01 5.07732146e-01 6.34665183e-01 7.61598219e-01 8.88531256e-01 1.01546429e+00 1.14239733e+00 1.26933037e+00 1.39626340e+00 1.52319644e+00 1.65012947e+00 1.77706251e+00 1.90399555e+00 2.03092858e+00 2.15786162e+00 2.28479466e+00 2.41172769e+00 2.53866073e+00 2.66559377e+00 2.79252680e+00 2.91945984e+00 3.04639288e+00 3.17332591e+00 3.30025895e+00 3.42719199e+00 3.55412502e+00 3.68105806e+00 3.80799110e+00 3.93492413e+00 4.06185717e+00 4.18879020e+00 4.31572324e+00 4.44265628e+00 4.56958931e+00 4.69652235e+00 4.82345539e+00 4.95038842e+00 5.07732146e+00 5.20425450e+00 5.33118753e+00 5.45812057e+00 5.58505361e+00 5.71198664e+00 5.83891968e+00 5.96585272e+00 6.09278575e+00 6.21971879e+00 6.34665183e+00 6.47358486e+00 6.60051790e+00 6.72745093e+00 6.85438397e+00 6.98131701e+00 7.10825004e+00 7.23518308e+00 7.36211612e+00 7.48904915e+00 7.61598219e+00 7.74291523e+00 7.86984826e+00 7.99678130e+00 8.12371434e+00 8.25064737e+00 8.37758041e+00 8.50451345e+00 8.63144648e+00 8.75837952e+00 8.88531256e+00 9.01224559e+00 9.13917863e+00 9.26611167e+00 9.39304470e+00 9.51997774e+00 9.64691077e+00 9.77384381e+00 9.90077685e+00 1.00277099e+01 1.01546429e+01 1.02815760e+01 1.04085090e+01 1.05354420e+01 1.06623751e+01 1.07893081e+01 1.09162411e+01 1.10431742e+01 1.11701072e+01 1.12970402e+01 1.14239733e+01 1.15509063e+01 1.16778394e+01 1.18047724e+01 1.19317054e+01 1.20586385e+01 1.21855715e+01 1.23125045e+01 1.24394376e+01 1.25663706e+01]';
yd=[9.15756288e-02 3.39393873e-01 6.28875306e-01 7.67713096e-01 1.05094584e+00 9.70887288e-01 9.84265740e-01 1.02589034e+00 8.53218113e-01 6.90197665e-01 5.51277193e-01 5.01564914e-01 5.25455797e-01 5.87052838e-01 5.41394658e-01 7.12365594e-01 8.14839678e-01 9.80181855e-01 9.44430709e-01 1.06728057e+00 1.15166322e+00 8.99464065e-01 7.77225453e-01 5.92618124e-01 3.08822183e-01 -1.07884730e-03 -3.46563271e-01 -5.64836023e-01 -8.11931510e-01 -1.05925186e+00 -1.13323611e+00 -1.11986890e+00 -8.88336727e-01 -9.54113139e-01 -6.81378679e-01 -6.02369117e-01 -4.78684439e-01 -5.88160325e-01 -4.93580777e-01 -5.68747320e-01 -7.51641934e-01 -8.14672884e-01 -9.53191554e-01 -9.55337518e-01 -9.85995556e-01 -9.63373597e-01 -1.01511061e+00 -7.56467517e-01 -4.17379564e-01 -1.22340361e-01 2.16273929e-01 5.16909714e-01 7.77031694e-01 1.00653798e+00 9.35718089e-01 1.00660116e+00 1.11177057e+00 9.85485116e-01 8.54344900e-01 6.26444042e-01 6.28124048e-01 4.27764254e-01 5.93991751e-01 4.79248018e-01 7.17522492e-01 7.35927848e-01 9.08802925e-01 9.38646871e-01 1.13125860e+00 1.07247935e+00 1.05198782e+00 9.41647332e-01 6.98801244e-01 4.03193543e-01 1.37009682e-01 -1.43203880e-01 -4.64369445e-01 -6.94978252e-01 -1.03483196e+00 -1.10261288e+00 -1.12892727e+00 -1.03902484e+00 -8.53573083e-01 -7.01815315e-01 -6.84745997e-01 -6.14189417e-01 -4.70090797e-01 -5.95052432e-01 -5.96497000e-01 -5.66861911e-01 -7.18239679e-01 -9.52873043e-01 -9.37512847e-01 -1.15782985e+00 -1.03858206e+00 -1.03182712e+00 -8.45121554e-01 -5.61821980e-01 -2.83427014e-01 -8.27056140e-02]';
Z = [sin(xd), sin(3*xd)];
[a_d,fx_d,r2_d] = least_squares (Z,yd)
xd_fcn = linspace(min(xd),max(xd));
d = figure(4);
plot(xd,yd,'o',xd_fcn,a_d(1)*sin(xd_fcn)+a_d(2)*sin(3*xd_fcn));
saveas(d, 'figure_04.png')
Outputs
Part A: r2 = 0.9801 Part B: r2 = 0.9232 Part C: r2 = 0.9462 Part D: r2 = 0.9219
Problem 3
darts = dlmread('compiled_data.csv',',',1,0);
x_darts =darts(:,2).*cosd(darts(:,3));
y_darts =darts(:,2).*sind(darts(:,3));
ur = darts(:,1);
i = 1;
for r = 0:32
i_interest = find(ur==r);
mx_ur(i)= mean(x_darts(i_interest));
my_ur(i)= mean(y_darts(i_interest));
i = i +1;
end
accuracy = mx_ur + my_ur;
val = 0;
abs_accuracy = abs(accuracy-val);
[~, index] = min(abs_accuracy)
closest_value = accuracy(index)
darts = dlmread('compiled_data.csv',',',1,0);
x_darts =darts(:,2).*cosd(darts(:,3));
y_darts =darts(:,2).*sind(darts(:,3));
ur = darts(:,1);
i = 1;
for r = 0:32
i_interest = find(ur==r);
stdx_ur(i)= std(x_darts(i_interest));
stdy_ur(i)= std(y_darts(i_interest));
i = i +1;
end
precision = stdx_ur + stdy_ur;
val = 0;
abs_accuracy = abs(precision-val);
[~, index] = min(abs_accuracy)
closest_value = precision(index)
Part A
User number 32 was closest with a value of 0.0044
Part B
User number 33 was the most precise with a standard deviation of 3.4088
Problem 4
Part A
function [mean_buckle_load,std_buckle_load]=buckle_monte_carlo(E,r_mean,r_std,L_mean,L_std);
N=100;
r_mean=0.01;
r_std=.001;
L_mean=5;
L_std=L_mean*0.01;
rrand=normrnd(r_mean,r_std,[N,1]);
Lrand=normrnd(L_mean,L_std,[N,1]);
E = 200*10^9;
P_cr=(pi^3*E.*rrand.^4)./(16.*Lrand.^2);
x1 = mean(P_cr)
x2 = std(P_cr)
P_test=1000*9.81/100;
sum(P_cr<P_test)
end
Load Outputs
Mean Buckle Load = 164.4154 N
Standard Deviation = 63.6238 N
Part B
function [mean_buckle_load,std_buckle_load]=buckle_monte_carlo_two(E,r_mean,r_std,P_cr);
N=100;
r_mean=0.01;
r_std=.001;
P_test=1000*9.81/100;
sum(2.5<P_test)
P_cr = 164.4154;
rrand=normrnd(r_mean,r_std,[N,1]);
E = 200*10^9;
L = ((pi^3*E.*rrand.^4)./(16*P_cr)).^0.5;
mean(L)
end
Length Output
L = 5.0108 m
Problem 5
Part A
function [Cd_out] = sphere_drag(Re_in,spline_type)
data = [2 0.52
5.8 0.52
16.8 0.52
27.2 0.5
29.9 0.49
33.9 0.44
36.3 0.18
40 0.074
46 0.067
60 0.08
100 0.12
200 0.16
400 0.19];
Cd_out=interp1(data(:,1),data(:,2),Re_in,spline_type);
rho=1.3;V=linspace(4,40);D=23.5e-2;mu=1.78e-5;
Re=rho*V*D/mu*1e-4;
end
Outputs
Linear = 0.1400
Spline = 0.1428
Pchip = 0.1447
Part B
function [Cd_out] = sphere_drag(Re_in,spline_type)
data = [2 0.52
5.8 0.52
16.8 0.52
27.2 0.5
29.9 0.49
33.9 0.44
36.3 0.18
40 0.074
46 0.067
60 0.08
100 0.12
200 0.16
400 0.19];
Cd_out=interp1(data(:,1),data(:,2),Re_in,spline_type)
Re=linspace(data(1,1),data(end,1),1000);
rho=1.3;V=linspace(4,40);D=23.5e-2;mu=1.78e-5;
Re=rho*V*D/mu*1e-4;
end
Re=linspace(data(1,1),data(end,1),1000);
rho=1.3;V=linspace(4,40);D=23.5e-2;mu=1.78e-5;
Re=rho*V*D/mu*1e-4
a=figure(1);
cd_interp=sphere_drag(linspace(data(1,1),data(end,1),100),'linear');
plot(data(:,1),data(:,2),'o',Re,cd_interp,'b-','Linewidth',4,'Markersize',10)
hold on;
cd_interp=sphere_drag(linspace(data(1,1),data(end,1),100),'spline');
plot(Re,cd_interp,'r-', 'Linewidth',4,'Markersize',10)
cd_interp=sphere_drag(linspace(data(1,1),data(end,1),100),'pchip');
plot(Re,cd_interp,'g-', 'Linewidth',4,'Markersize',10)
legend('data','linear','spline','pchip')
saveas(a,'figure_14.png')
Cd_out1 = sphere_drag(10,'linear')
Cd_out2 = sphere_drag(10,'pchip')
Cd_out3 = sphere_drag(10,'spline')
plot(data(:,1),data(:,2),'o',Re,Cd_out,'b-','Linewidth',4,'Markersize',10)
plot(data(:,1),data(:,2),Re,Cd_out2,'r-', 'Linewidth',4,'Markersize',10)
plot(data(:,1),data(:,2),Re,Cd_out3,'g-', 'Linewidth',4,'Markersize',10)
legend('data','linear','pchip','spline')
Problem 6
Analytical Solution
fun = @(x) (1/6).*(x).^3+(1/2).*(x).^2+(x);
q = integral(fun,2,3)
Gaussian Method
%1-Pt
x = [0];
a = [2];
b = 2;
c = 3;
tildec = (c-b)/2*a;
tildex = (c-b)/2*x + (c+b)/2;
f = (1/6).*(tildex).^3+(1/2).*(tildex).^2+(tildex);
value1 = sum(tildec.*f)
%2-Pt
x = [-0.57735,0.57735];
a = [1,1];
b = 2;
c = 3;
tildec = (c-b)/2*a;
tildex = (c-b)/2*x + (c+b)/2;
f = (1/6).*(tildex).^3+(1/2).*(tildex).^2+(tildex);
value2 = sum(tildec.*f)
%3-Pt
x = [-0.77459666,0,0.77459666];
a = [0.5555555,0.88888888,0.55555555];
b = 2;
c = 3;
tildec = (c-b)/2*a;
tildex = (c-b)/2*x + (c+b)/2;
f = (1/6).*(tildex).^3+(1/2).*(tildex).^2+(tildex);
value3 = sum(tildec.*f)
Outputs
Method | Value | Error |
---|---|---|
Analytical | 8.375 | 0% |
Gaussian 1-Pt | 8.2292 | 1% |
Gaussian 2-Pt | 8.375 | 0% |
Gaussian 3-Pt | 8.375 | 0% |