0% found this document useful (0 votes)
2 views4 pages

Basic Algorithmics

The document outlines the implementation of a Gaussian elimination algorithm for matrix operations without using numpy, detailing the functions for creating an augmented matrix and calculating the inverse. It includes a code example demonstrating the Gaussian elimination process on a sample matrix. Additionally, it briefly mentions using numpy for the same purpose and provides a linear regression analysis using pandas and statsmodels.

Uploaded by

sruzann03
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views4 pages

Basic Algorithmics

The document outlines the implementation of a Gaussian elimination algorithm for matrix operations without using numpy, detailing the functions for creating an augmented matrix and calculating the inverse. It includes a code example demonstrating the Gaussian elimination process on a sample matrix. Additionally, it briefly mentions using numpy for the same purpose and provides a linear regression analysis using pandas and statsmodels.

Uploaded by

sruzann03
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Step 1: Implement your own gaussian elimination algorithm

without numpy
• A matrix is a list of list
• Implement function Augmented_Matrix(M)
• M is the matrix
• Return the augmented matrix of M
• Implement function Inverse(M)
• M is the matrix
• Return the inverse of matrix M

I. Without numpy
# Defines a function named gaussian_elimination that takes a matrix A as
a list of lists as an argument
def gaussian_elimination(A):
# Determine the dimension of the matrix
n = len(A)

# This loop iterates through each row of the matrix, starting with
the first (index 0) and ending with the last (index n - 1)
for i in range(n):
diag_element = A[i][i] # Retrieves the value of the diagonal
element in the current row i.
A[i] = [elem / diag_element for elem in A[i]] # Divides each
element of the current row i by the diagonal element diag_element to
produce 1 on the diagonal.

# This nested loop iterates through the matrix rows below the
current row i.
for j in range(i + 1, n):
multiplier = A[j][i] # Retrieves the value of the element in
the current row j and column i that is below the diagonal element in the
current row.
A[j] = [A[j][k] - multiplier * A[i][k] for k in
range(len(A[i]))]

# Performs the operation of “subtracting a multiple” of row i from row


j.
# multiplier is the factor by which row i is multiplied.
# This loop goes through each element in row j (index k) and subtracts
multiplier * the corresponding element in row i.
# This step is intended to zero out the elements below the diagonal
element in each row.

for i in range(n - 1, -1, -1):


# This loop iterates through the rows in reverse order, starting
with the very last row (index n - 1) and ending with the first (index
0).
for j in range(i - 1, -1, -1):
# This nested loop iterates through the rows above the current row i.
multiplier = A[j][i]
# Retrieves the value of the element in the current row j and column i
that is above the diagonal element in the current row.

A[j] = [A[j][k] - multiplier * A[i][k] for k in


range(len(A[i]))]
# Performs the "subtract multiple" operation on row i from row j.
# This step is designed to zero out the elements above the diagonal
element in each row.
return A # Returns the transformed matrix A.

# Using the code on this matrix


A = [[5, 3, 1, 1, 0, 0],
[3, 9, 4, 0, 1, 0],
[1, 3, 5, 0, 0, 1]]

result = gaussian_elimination(A)

for row in result:


print(row)

II. With numpy

import numpy as np

def gaussian_elimination(A):
# Matrix dimension
n = len(A)

for i in range(n):
# We reduce the diagonal element to 1
A[i] = A[i] / A[i][i]

# Zero out the elements below the current leading element


for j in range(i + 1, n):
A[j] = A[j] - A[j][i] * A[i]

for i in range(n - 1, -1, -1):


# Zero out the elements above the current leading element
for j in range(i - 1, -1, -1):
A[j] = A[j] - A[j][i] * A[i]

return A

# Example of use
A = [Link]([[5, 3, 1, 1, 0, 0],
[3, 9, 4, 0, 1, 0],
[1, 3, 5, 0, 0, 1]], dtype=float)
result = gaussian_elimination(A)

print(result)
import [Link] as sm #Use the library for statistical modeling
import [Link] as plt #The library is used to plot graphs.
import pandas as pd #Used to work with data in the form of tables

# Data from the table


depth = [5000, 5200, 6000, 6538, 7109, 7556, 8005, 8207, 8210, 8600,
9026, 9197, 9926, 10813, 13800, 14311]
cost = [2596.8, 3328.0, 3181.1, 3198.4, 4779.9, 5905.6, 5769.2, 8089.5,
4813.1, 5618.7, 7736.0, 6788.3, 7840.8, 8882.5, 10489.5, 12506.6]

# Create a Pandas DataFrame for easier manipulation


data = [Link]({'Depth': depth, 'Cost': cost})

# Fit a linear regression model


model = [Link]('Cost ~ Depth', data=data)
results = [Link]()

# Print the model summary


print([Link]())

# Get the regression coefficients


intercept = [Link][0]
slope = [Link][1]

# Predict the cost for a new depth (example: 6590 meters)


new_depth = 6590
predicted_cost = intercept + slope * new_depth
print(f"Predicted cost for depth {new_depth}: {predicted_cost}")

# Plot the data and the regression line


[Link](data['Depth'], data['Cost'])
[Link](data['Depth'], [Link], color='red')
[Link]('Depth')
[Link]('Cost')
[Link]('Linear Regression of Oil Well Drilling Costs')
[Link]()

You might also like