Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Gaussian Elimination with Partial Pivoting Objective: Create a function that finds the unique solution to Ax=b equation using Gaussian elimination with partial pivoting where A

Gaussian Elimination with Partial Pivoting Objective:

Create a function that finds the unique solution to Ax=b equation using Gaussian elimination with partial pivoting where A is a square matrix and b is a column vector of the same height. The function will take A and b as inputs and give x as the output.

Part 1: Start by writing a function (with comments) to achieve these:

Determine if the matrix A is square.

Augment A and b

Find the maximum absolute value in the first column and the row number that this belongs to using a for?loop.

Interchange the first row with the row with the maximum first?column?entry. Submit a single m?file with a subfunction that switches rows.

Modify what you have from part 1 to achieve these:

Reduce the matrix into row?echelon form, using Gaussian elimination with partial pivoting (you will modify what you had in Part 1 to generalize the steps as they apply to all columns, so that the largest absolute of the values on the active column is used as the pivot.) Make all values below the pivots zero.

Then reduce the system to a reduced row echelon form. Obtain x as a column matrix.Submit a single m?file with two subfunctions: one to switch any given two rows, the other one to add a multiple of a row onto another. Notes ?Some built in functions to use: error, size, abs, and the usual for, while, if structures. Ask before you use other built?in functions.

?Use for?loops instead of MATLAB vectorization. (Do not use the ":" operator to access matrix locations.)

This is what I have now but I need help

function A_new = Project2(A,b)

[m n] = size(A);

# determines if the matrix is square

if m~=n, error('Error: the matrix is not square'),end

nb = n + 1; % intialize nb with number of column plus one

# create an augmented matrix by adding b to A

A1 = [A b];

for column=1:n;

max_value = A(column,column);

max_value_location = column;

for row = column+1:n;

if abs(max_value) < abs(A(row,column));

max_value = A(row,column)

max_value_location =row

endif

end

A= flip(A,column,max_value_location);

end

function A= flip(A, row_a_number, row_b_number);

row_a = A(row_a_number,:);

A(row_a_number,:) = A(row_b_number,:);

A(row_b_number,:) = row_a;

end

A_new=A

end

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Systems A Practical Approach To Design Implementation And Management

Authors: THOMAS CONNOLLY

6th Edition

9353438918, 978-9353438913

More Books

Students also viewed these Databases questions