You are on page 1of 8

MECE 390

Lab #4

Setting up the system of equations:

Giving v[m/s] and F[N] in Table 1, the system of equations can be formed to find the coefficients ai of the Equation,
ns

F soil = ai v
i=0

polynomial coefficients are initially the unknown variables


MEC E 390
1

Setup System of Equations


Recall (as in Lab #3):
c 11 x 1 +c12 x 2.. .+c1n x n =b1 c 21 x 1 +c 22 x 2. . .+c 2n x n =b2 c n1 x 1 +c n2 x 2. . .+c nn x n =bn
1a 0 +v 1 a 1 +v 2 a 2 +v 3 a 3 +v 4 a 4 =F 1 1 1 1 1a 0 +v 2 a 1 +v 2 a 2 +v 3 a 3 +v 4 a 4 =F 2 2 2 2 1a 0 +v 5 a1 +v 2 a2 +v 3 a3 +v 4 a 4 =F 5 5 5 5

Variables
v1
3 v2 3

1 1 1

v1 v2 v5

v1
2 v2

v1

4 v2

2 v5

3 v5

4 v5

][ ] [ ]
a0 F1 a1 F = 2 a4 F5
MEC E 390
2

New Matlab Function soil


Create a new function soil.m with the following structure:

function soil(basefun) % ..; %Load data v and F ..; % Generate matrix A from input basefun % Therefore basefun has to be a function % that generates a matrix from input v(:) ..; % Calculate coefficients a(i) % by using Gausssian Elimination or \
...; %

Plot soil curve

MEC E 390

New Matlab Function soil


1 Loading the data
Ex: >> load data1.dat >> v = data1(:,1); >> F = data1(:,2);
load reads a data file and stores data in a matrix of the same name.

make sure to save with extension .dat

Do not use commas when typing large numbers.

MEC E 390

To form a matrix of coefficients, we could use:


function soil % n=length(v); m = 3; A=ones(n,m); for i=1:n for j=1:m A(i,j) = v(i)^(j-1); end end

After calculating a, to create a smooth plot:


vplot = linspace(min(v),max(v)); Aplot=ones(100,m); for i=1:100 for j=1:m Aplot(i,j)=vplot(i)^(j-1); end end Fplot = Aplot * a; % a are calculated coefficients

But there are more efficient ways.


MEC E 390
5

New Matlab Function soil


2 Generating basefun
Either 2.1a Using M-file (create the Afunc2.m function): Ex function A=Afunc2(x) A = [ones(size(x)) x x.^2 ]; >> soil(Afunc2) Or 2.1b Using command 'inline' (notice no quotes): Ex >> Afun = inline('[ones(size(x)) x x.^2 ]'); >> soil(Afun) 2.2 Inside your function 'pump': A=feval(basefun,v(:)); % use basefun to calculate matrix % (colon ensures that v(:) is vertical vector)
MEC E 390
6

New Matlab Function soil


3 Calculate the coefficients a(i) Either Using your 'gepivot' from Lab #3 a=gepivot(A,F); Or Using \ from MATLAB Don't forget to list the coefficients in your answer sheet!

MEC E 390

New Matlab Function soil


Other hints (for a smooth plot)
vplot = linspace(min(v),max(v)); % vector with 100 points Aplot = feval(basefun,vplot(:)); % 100 rows with v^i Fplot = Aplot * a; % calculates corresponding F vector % note : no dot operator ! plot (vplot,Fplot,-,v,F,o);

Finally, you can generate a similar function dozer.m that calculates the coefficients and plots the curve for the dozer. For Question 5, plot all curves along the entire range, i.e. use the same qplot for all curves.
MEC E 390
8

You might also like