Linear Algebra Matlab

  • MATLAB
  • Thread starter tironel
  • Start date
  • #1
11
0

Main Question or Discussion Point

Below I have a code written for solving the L U decomposition of a system of equations however I need my code to just output the answers with this format it outputs the variables in the matrix for example i need the function to output x [1;2;3;4] any suggestions?

Code:
   function[L,U,X]=LU_Parker(A,B)
[m n]=size(A);
if (m ~= n )
disp ( 'LR2 error: Matrix must be square' );
return;
end;
    % Part 2 : Decomposition of matrix into L and U
  L=zeros(m,m);
  U=zeros(m,m);
  for i=1:m
  % Finding L
  for k=1:i-1
  L(i,k)=A(i,k);
  for j=1:k-1
  L(i,k)= L(i,k)-L(i,j)*U(j,k);
  end
  L(i,k) = L(i,k)/U(k,k);
  end
  % Finding U
  for k=i:m
  U(i,k) = A(i,k);
  for j=1:i-1
  U(i,k)= U(i,k)-L(i,j)*U(j,k);
  end
  end
  end
  for i=1:m
  L(i,i)=1;
  end
  % Program shows U and L
  U
  L
  % Now use a vector y to solve 'Ly=b'
  y=zeros(m,1);
  y(1)=B(1)/L(1,1);
  for i=2:m
  y(i)=-L(i,1)*y(1);
  for k=2:i-1
  y(i)=y(i)-L(i,k)*y(k);
  y(i)=(B(i)+y(i))/L(i,i);
  end;
  end;
% Now we use this y to solve Ux = y
x=zeros(m,1);
x(1)=y(1)/U(1,1);
for i=2:m
x(i)=-U(i,1)*x(1);
for k=i:m
      x(i)=x(i)-U(i,k)*x(k);
      x(i)=(y(i)+x(i))/U(i,i);
end;
   end
 

Answers and Replies

  • #2
131
0
Could you rephrase the question? It's a little hard to understand you without any punctuation.

One comment about your code: you define the variable x, but the function returns X. Variable names in Matlab are case sensitive. Maybe that's the problem?
 
  • #3
11
0
Yes, redefining the x like you said allowed the function to output what I was needing, however I must have an error in my coding because I inputed the following matrices and got the following answer but I am getting a 0 for one of the answers which should not be there. Any possible solutions?

INPUT

Code:
A=[ 6 0 0 0 0; 0 1 0 -2 0; 1 0 -3 0 0; 0 8 -4 -3 -2; 0 2 0 0 -1];
B=[1;0;0;1;0];
LU_Parker(A,B)

Output:
Code:
X =

    0.1667
         0
    0.0432
    0.1841
    1.7778


ans =

    1.0000         0         0         0         0
         0    1.0000         0         0         0
    0.1667         0    1.0000         0         0
         0    8.0000    1.3333    1.0000         0
         0    2.0000         0    0.3077    1.0000
 

Related Threads on Linear Algebra Matlab

  • Last Post
Replies
1
Views
1K
Replies
1
Views
2K
Replies
2
Views
3K
Replies
3
Views
3K
Replies
4
Views
3K
  • Last Post
Replies
1
Views
4K
Replies
2
Views
3K
Replies
2
Views
9K
  • Last Post
Replies
5
Views
2K
Top