diff --git a/README.md b/README.md index 1aea478..94e06bb 100644 --- a/README.md +++ b/README.md @@ -1 +1,62 @@ -# 05_curve_fitting \ No newline at end of file +# 05_curve_fitting +ME 3255 +Homework 5 + +##Problem 2 +Least Squares function +```matlab +function [a,fx,r2] = least_squares(Z,y); + % inputs: Z matrix and measurements y + % outputs: + % a - best fit constant + % fx - function at xi + % r2 - coefficient of determination + a = Z/y; + fx = Z*a; + e = y-fx; + st = std(y); + sr = std(e); + r2 = (st-sr)/st; +end +``` +set defaults +% Part A +xa = [1 2 3 4 5]'; +ya = [2.2 2.8 3.6 4.5 5.5]'; +Z = [xa.^0,xa.^1,1./xa]; +[a,fx,r2] = least_squares(Z,ya) +plot(xa,fx,xa,ya,'o','Linewidth',2) + +% 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 = [xb.^0,-xb.^1,xb.^2]; +[a,fx,r2] = least_squares(Z,yb) +plot(xb,fx,xb,yb,'o','Linewidth',2) + +% 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,fx,r2] = least_squares(Z,yc) +plot(xc,fx,xc,yc,'o','Linewidth',2) + +% 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,fx,r2] = least_squares(Z,yd) +plot(xd,fx,xd,yd,'o','Linewidth',2) +``` +Output: +Part A: 0.9801 +![Part A](./figure1.png) + +Part B: 0.9112 +![Part B](./figure2.png) + +Part C: 0.9462 +![Part C](./figure3.png) + +Part D: 0.9219 +![Part D](./figure4.png) diff --git a/data.csv b/data.csv new file mode 100644 index 0000000..7633db4 --- /dev/null +++ b/data.csv @@ -0,0 +1,26 @@ +Data +Re(e-4) C_D +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 + +mu=1.78e-5; +V=linspace(4,40,1000); +D=23.5; +rho=1.3; +Re=rho*V*D/mu*1e-4; +Cd_int = interp1(data(:,1), (data(:,2), Re, 'spline'); +Cd_int_pc = interp1(data(:,1), (data(:,2), Re, 'pchip'); + +plot(Re, Cd_int, Re, Cd_int_pc, data(:,1),data(:,2),'o','MarkerSize',10,LineWidth +legend('cubic','pchip','data') \ No newline at end of file diff --git a/figure1.png b/figure1.png new file mode 100644 index 0000000..50aa6bb Binary files /dev/null and b/figure1.png differ diff --git a/figure2.png b/figure2.png new file mode 100644 index 0000000..672c7c3 Binary files /dev/null and b/figure2.png differ diff --git a/figure3.png b/figure3.png new file mode 100644 index 0000000..092b5d4 Binary files /dev/null and b/figure3.png differ diff --git a/figure4.png b/figure4.png new file mode 100644 index 0000000..b3e4486 Binary files /dev/null and b/figure4.png differ diff --git a/least_squares.m b/least_squares.m new file mode 100644 index 0000000..773c826 --- /dev/null +++ b/least_squares.m @@ -0,0 +1,13 @@ +function [a,fx,r2] = least_squares(Z,y); + % inputs: Z matrix and measurements y + % outputs: + % a - best fit constant + % fx - function at xi + % r2 - coefficient of determination + a = Z/y; + fx = Z*a; + e = y-fx; + st = std(y); + sr = std(e); + r2 = (st-sr)/st; +end diff --git a/problem_2_data.m b/problem_2_data.m new file mode 100644 index 0000000..558debc --- /dev/null +++ b/problem_2_data.m @@ -0,0 +1,19 @@ + +% part a +xa=[1 2 3 4 5]'; +ya=[2.2 2.8 3.6 4.5 5.5]'; + +% 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]'; + +% 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]'; + +% 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]'; diff --git a/setdefaults.m b/setdefaults.m new file mode 100644 index 0000000..8c3c5c8 --- /dev/null +++ b/setdefaults.m @@ -0,0 +1,3 @@ +set(0, 'defaultAxesFontSize', 16) +set(0,'defaultTextFontSize',14) +set(0,'defaultLineLineWidth',3) diff --git a/sphere_drag.m b/sphere_drag.m new file mode 100644 index 0000000..e75818f --- /dev/null +++ b/sphere_drag.m @@ -0,0 +1,10 @@ +function [Cd_out] = sphere_drag(Re_in,spline_type) + % interpolation for drag coeff based upon Reynolds number + % output is + % Cd: drag coeff + % input is + % Re_in: Reynolds number + % and + % spline_type: 'linear', 'cubic', or 'spline'/'pchip' + + \ No newline at end of file