You are on page 1of 6

Ans 3.4.

6
A=

-1

-1

-5

-4

L=

1.0000

2.0000 -1.0000
0

0
0

4.0000 -2.0000

5.0000 -5.0000

7.0000

1.5000

U=

1.0000

2.0000

1.0000

x=

11
-2
12
6VBA Code

0 -1.0000

1.0000 -2.0000

1.0000 -1.5000
0

1.0000

Sub CrotchLU()
'Initialise variables. L U and Y are Matrices, Y is our A
Dim sum, k As Double, L(1 To 4, 1 To 4), U(1 To 4, 1 To 4) As Double, Y(1 To 4, 1 To
4), X(1 To 4, 1 To 1), D(1 To 4, 1 To 1), B1(1 To 4, 1 To 1) As Double

'Pre-fetching Data
For A = 1 To 4
For B = 1 To 4
Y(A, B) = Cells(A, B)
Next B
B1(A, 1) = Cells(A, 10)
Next A
'rout's Algo
For j = 1 To 4
For i = 1 To 4

sum = 0
p=j-1

For k = 1 To p
sum = sum + (L(i, k) * U(k, j))
Next k

If i = j Then
U(i, j) = 1
End If

If i >= j Then

L(i, j) = Y(i, j) - sum


Else

U(i, j) = (1 / (L(i, i))) * (Y(i, j) - sum)


L(i, j) = 0

End If
Next i
Next j

'utput
Cells(10, 1).Value = "u"
For A = 11 To 14
For B = 1 To 4
Cells(A, B) = U((A - 10), B)
Next B
Next A
Cells(15, 1).Value = "L"
For A = 17 To 20
For B = 1 To 4
Cells(A, B) = L((A - 16), B)
Next B
Next A
'Solving ther linear system
'First solving Ld= b
D(1, 1) = B1(1, 1) / L(1, 1)
D(2, 1) = (L(2, 1) * D(1, 1) - B1(2, 1)) / -L(2, 2)
D(3, 1) = (L(2, 2) * D(2, 1) - B1(3, 1)) / -L(3, 3)
D(4, 1) = (L(4, 1) * D(1, 1) + L(4, 2) * D(2, 1) + L(4, 3) * D(3, 1) - B1(4, 1)) / -L(4,
4)

'Solving UX=d
X(4, 1) = D(4, 1) / U(4, 4)
X(3, 1) = (U(3, 4) * X(4, 1) - D(3, 1)) / -U(3, 3)

X(2, 1) = (U(2, 4) * X(4, 1) + U(2, 3) * X(3, 1) - D(2, 1)) / (-U(2, 2))


X(1, 1) = (U(1, 4) * X(4, 1) + U(1, 3) * X(3, 1) + U(1, 2) * X(2, 1) - D(1, 1)) / -U(1,
1)

Cells(22, 1).Value = "X"


For A = 23 To 26
Cells(A, 1) = X(A - 22, 1)

Next A

End Sub

Matlab
%Input
A = [1
2
0
5
b=[1
-2
3
6];
%% LU

2
3
4
5

0
-1
2
2

-1;
0
-5
-4];

decomposition Crout's

L = zeros(length(A));
U = zeros(length(A));
for j = 1: length(A)
for i = 1:length(A)
sum = 0;
p = j-1;
for k = 1:p
sum = sum+(L(i,k)*U(k,j));
end
if i == j

U(i,j) = 1;

end

if i >= j
L(i,j) = A(i,j) - sum;
else
U(i,j) = (1/L(i,i))*(A(i,j)-sum);
end

end

end
%Forward Substitution
n=length(A)
d=zeros(n,1);
for j=1:n
if (L(j,j)==0) error('Matrix is singular!'); end;
d(j)=b(j)/L(j,j);
d(j+1:n)=b(j+1:n)-L(j+1:n,j)*d(j);
end
%% Back Substitution
n = length( b );
x = zeros( n, 1 );
for i=n:-1:1
x(i) = ( b(i) - U(i, :)*x )/U(i, i);
end
%% display
A
L
U
x

Ans 3.1.6
-48
VBA
Sub Det()
'Read Data
Dim i As Range, X, Y As Integer, k As Range, ex1 As String
Set i = ActiveSheet.Range(Cells(4, 1), Cells(4, 4))
X=1
'For Diagonal Matrix, it is enough to compute product of diagonal elements in
Determinant
For j = 4 To 1 Step -1
Set k = i.Offset(-(4 - j), 0)

Y = k(j).Value
X=X*Y
Next j
'utput in cell
i(1).Offset(6, 0).Value = CStr("Determinant = ")
i(1).Offset(6, 2).Value = CStr(X)
'Message Box
MsgBox ("Determinant is " & " " & X)

End Sub

Matlab
A= [-1
0
3
0
0
0
0
det(A)

4
5
2
0

2
7;
-3;
6;
8]

You might also like