You are on page 1of 3

Name:Laiba Ashraf

Sid:64873

PART#01:
import numpy as np
# Define the coefficient matrix A and the right-hand side vector B
A = np.array([[3, -7, -2],
[-3, 5, 1],
[6, -4, 0]])
B = np.array([-7, 5, 2])
# Perform LU decomposition manually
n = len(A)
L = np.zeros((n, n))
U = np.zeros((n, n))
# LU decomposition
for k in range(n):
L[k, k] = 1
for j in range(k, n):
U[k, j] = A[k, j] - np.sum(L[k, :k] * U[:k, j])
for i in range(k + 1, n):
L[i, k] = (A[i, k] - np.sum(L[i, :k] * U[:k, k])) / U[k, k]
# Solve for y in Ly = B using forward substitution
y = np.zeros(n)
for i in range(n):
y[i] = B[i] - np.sum(L[i, :i] * y[:i])
# Solve for x in Ux = y using backward substitution
x = np.zeros(n)
for i in range(n - 1, -1, -1):
x[i] = (y[i] - np.sum(U[i, i + 1:] * x[i + 1:])) / U[i, i]

print("Matrix A: ", A)
print("Matrix B: ", B)
print("Solution:")
print(f"x = {x[0]}")
print(f"y = {x[1]}")
print(f"z = {x[2]}")
PART#02:
import numpy as np
# Define the coefficient matrix A and the right-hand side vector B
A = np.array([[1, 1, 1],
[1, 2, 2],
[1, 2, 3]])
B = np.array([5, 6, 8])
# Perform LU decomposition manually
n = len(A)
L = np.zeros((n, n))
U = np.zeros((n, n))
# LU decomposition
for k in range(n):
L[k, k] = 1
for j in range(k, n):
U[k, j] = A[k, j] - np.sum(L[k, :k] * U[:k, j])
for i in range(k + 1, n):
L[i, k] = (A[i, k] - np.sum(L[i, :k] * U[:k, k])) / U[k, k]
# Solve for y in Ly = B using forward substitution
y = np.zeros(n)
for i in range(n):
y[i] = B[i] - np.sum(L[i, :i] * y[:i])
# Solve for x in Ux = y using backward substitution
x = np.zeros(n)
for i in range(n - 1, -1, -1):
x[i] = (y[i] - np.sum(U[i, i + 1:] * x[i + 1:])) / U[i, i]

print("Matrix A: ", A)
print("Matrix B: ", B)
print("Solution:")
print(f"x = {x[0]}")
print(f"y = {x[1]}")
print(f"z = {x[2]}")
S.NO FUNCTION ROOT
1. 3x-7y-2z=-7 X= 3.0
-3x+5y + z = 5
Y= 4.0
6x-4y+0=2
Z= -6.0
2. x+y+z = 5 X= 4.0
x + 2y + 2z = 6
Y= -1.0
x + 2y + 3z = 8
Z= 2.0

You might also like