diff --git a/helpfile.m b/helpfile.m index 9e74ebd..37d6097 100644 --- a/helpfile.m +++ b/helpfile.m @@ -1 +1,19 @@ -help file + + + + test_arrays + fprintf('size of Matrix error \n'); + for i=3:10; + [ud,uo,lo]=lu_tridiag(e(1:i-1),f(1:i),g(1:i-1)); + b=ones(i,1); + x=solve_tridiag(ud,uo,lo,b); + A=eval(['A',int2str(i)]); + y=A\b; + + z=norm(x-y); + + fprintf(' %d ',i); + fprintf(' %6.28f \n' ,z); + end + + diff --git a/lu_tridiag.m b/lu_tridiag.m index 081e926..2608c9d 100644 --- a/lu_tridiag.m +++ b/lu_tridiag.m @@ -1,6 +1,6 @@ -function [ud,uo,lo]=lu_tridiag(e,f,g); +function [ud,uo,lo]=lu_tridiag(g,f,e); % lu_tridiag calculates the components for LU-decomposition of a tridiagonal matrix - % given its off-diagonal vectors, e (a) and g (b) + % given its off-diagonal vectors, e (n=0) and g (1=0) % and diagonal vector f (d) % the output is % the diagonal of the Upper matrix, ud (dd) @@ -11,14 +11,19 @@ ud=zeros(m,n); uo=zeros(m,n); lo=zeros(m,n); + + ud(1)=f(1); lo(1)=0; -uo=e; +for s=1:(m-1) +uo(s)=e(s); +end +uo(m)=0; -for i=2:n - lo(i)=g(i)/(ud(i-1)); - ud(i)=f(i)-(lo(i)*e(i-1)); +for i=2:m + lo(i,1)=g(i-1,1)/(ud(i-1,1)); + ud(i,1)=f(i,1)-(lo(i,1)*e(i-1,1)); end diff --git a/question6.m b/question6.m new file mode 100644 index 0000000..a3464cb --- /dev/null +++ b/question6.m @@ -0,0 +1,22 @@ +clc; +clear; + +BeamLength=5; +NumSegments=10; +deltax=BeamLength/NumSegments; + +n=NumSegments-1; +A=zeros(n,n); + +for i=1:n + A(i,i)=2; +end + +for i= 1:n-1 + A(i,i+1)=-1; + A(1+i,i)=-1; +end +A(n,n)=-3 + +eig(A) + diff --git a/solve_tridiag.m b/solve_tridiag.m index 3512bdc..20555a0 100644 --- a/solve_tridiag.m +++ b/solve_tridiag.m @@ -14,18 +14,22 @@ x=zeros(s,n); + %solve Lz=b using forward subsitution -for i= 2:n - z(i)=b(i)-(lo(i)*z(i-1)); +for i= 2:s + z(i)=b(i)-(lo(i)*z(i-1)); + end %solve Ux=z using backward substitution -x(n)=z(n)/ud(n); +x(s)=z(s)/ud(s); -for k= (n-1):-1:1 +for k= (s-1):-1:1 x(k)=(z(k)-uo(k)*x(k+1))/ud(k); end + + end diff --git a/springmass.m b/springmass.m new file mode 100644 index 0000000..0d1ec4a --- /dev/null +++ b/springmass.m @@ -0,0 +1,12 @@ +k1=10; +k2=20; +k3=20; +k4=10; +m1=1; +m2=2; +m3=4; +km=[(1/m1)*(k2+k1),-(k2/m1),0;-(k2/m2),(1/m2)*(k2+k3),-(k3/m2);0,-(k3/m3),(1/m3)*(k3+k4)]; + +eigenvalues=eig(km) + +frequencies=sqrt(eigenvalues) diff --git a/test_arrays.m b/test_arrays.m index 002d79c..8c0c969 100644 --- a/test_arrays.m +++ b/test_arrays.m @@ -1,8 +1,8 @@ -rand("seed",1); + for i = 3:10 e=sort(randi(6,[i-1,1])); f=sort(randi(10,[i,1])); g=sort(randi(9,[i-1,1])); eval(['A',int2str(i),'=diag(f)+diag(e,-1)+diag(g,1);']); -end +end \ No newline at end of file diff --git a/testarrays b/testarrays deleted file mode 100644 index 002d79c..0000000 --- a/testarrays +++ /dev/null @@ -1,8 +0,0 @@ -rand("seed",1); - -for i = 3:10 - e=sort(randi(6,[i-1,1])); - f=sort(randi(10,[i,1])); - g=sort(randi(9,[i-1,1])); - eval(['A',int2str(i),'=diag(f)+diag(e,-1)+diag(g,1);']); -end