A = [2 1 -1; 1 -2 5; 3 5 -4]
b = [7; -13; 18]
|
Output :
A =
2 1 -1
1 -2 5
3 5 -4
b =
7
-13
18
Now we will create an augmented matrix Ab. We will compare the ranks of Ab and A, if the ranks are equal then a unique solution exists.
Ab = [A b]
if rank(A) == rank(Ab)
display( "Unique solution exists" )
else
display( "Unique solution does not exist" )
end
|
Output :
Ab =
2 1 -1 7
1 -2 5 -13
3 5 -4 18
Unique solution exists
Now we can find the solution to this system of equations by using 3 methods:
- conventional way :
inv(A) * b
- using mid-divide routine :
A \ b
- using linsolve routine :
linsolve(A, b)
x_inv = inv(A) * b
x_bslash = A \ b
x_linsolve = linsolve(A, b)
|
Output :
x_inv =
2.0000e+00
8.8818e-16
-3.0000e+00
x_bslash =
2.0000e+00
9.6892e-16
-3.0000e+00
x_linsolve =
2.0000e+00
9.6892e-16
-3.0000e+00
We can verify the correctness of the solution by finding the error using A * x - b
. The error should be 0.
Er1 = A * x_inv - b
Er2 = A * x_bslash - b
Er3 = A * x_linsolve - b
|
Output :
Er1 =
-8.8818e-16
-3.5527e-15
0.0000e+00
Er2 =
-1.7764e-15
-1.7764e-15
0.0000e+00
Er3 =
-1.7764e-15
-1.7764e-15
0.0000e+00
As all the errors are close to 0, we can say that the solution is correct.
Example 2 : Non-homogeneous system Ax = b, where A is a square and it is not invertible. In our example we will consider the following equations :
2x + 4y + 6z = 7
3x -2y + 1z = 2
1x + 2y + 3z = 5
A = [2 4 6; 3 -2 1; 1 2 3]
b = [7; 2; 5]
Ab = [A b]
if rank(A) == rank(Ab)
display( "Unique solution exists" )
else
display( "Unique solution does not exist" )
end
x_inv = inv(A) * b
x_bslash = A \ b
Er1 = A * x_inv - b
Er2 = A * x_bslash - b
|
Output :
A =
2 4 6
3 -2 1
1 2 3
b =
7
2
5
Ab =
2 4 6 7
3 -2 1 2
1 2 3 5
Unique solution does not exist
warning: matrix singular to machine precision
warning: called from
testing at line 17 column 7
x_inv =
Inf
Inf
Inf
warning: matrix singular to machine precision
warning: called from
testing at line 21 column 10
x_bslash =
-Inf
-Inf
Inf
Er1 =
Inf
NaN
Inf
Er2 =
NaN
NaN
NaN
Example 3 : Non-homogeneous system Ax = b where A is not a square. In our example we will consider the following equations :
2a + c - d + e = 2
a + c - d + e = 1
12a + 2b + 8c + 2e = 12
A = [2 0 1 -1 1; 1 0 1 -1 1; 12 2 8 0 2]
b = [2; 1; 12]
Ab = [A b]
if rank(A) == rank(Ab)
display( "Solution exists" )
else
display( "Solution does not exist" )
end
if rank(A) == 5
display( "Unique solution exists" )
else
display( "Unique solution does not exist" )
end
|
Output :
A =
2 0 1 -1 1
1 0 1 -1 1
12 2 8 0 2
b =
2
1
12
Ab =
2 0 1 -1 1 2
1 0 1 -1 1 1
12 2 8 0 2 12
Solution exists
Unique solution does not exist
Example 4 : Homogeneous system Ax = 0 where A is a square and is invertible. In our example we will consider the following equations :
6x + 2y + 3z = 0
4x - y + 2z = 0
2x + y + 5z = 0
A = [6 2 3; 4 -1 2; 2 1 5]
b = [0; 0; 0]
if rank(A) == 3
display( "Unique solution exists" )
else
display( "Unique solution does not exist" )
endif
x = A \ b
x = null(A)
|
Output :
A =
6 2 3
4 -1 2
2 1 5
b =
0
0
0
Unique solution exists
x =
0
0
0
x = [](3x0)
Example 5 : Homogeneous system Ax = 0 where A is a square and is not invertible. In our example we will consider the following equations :
1x + 2y + 3z = 0
4x + 5y + 6z = 0
7x + 8y + 9z = 0
A = [1 2 3; 4 5 6; 7 8 9]
b = [0; 0; 0]
if rank(A) == 3
display( "Unique solution exists" )
else
display( "Unique solution does not exist" )
endif
x = A \ b
x = null(A)
Err = A*x - b
|
Output :
A =
1 2 3
4 5 6
7 8 9
b =
0
0
0
Unique solution does not exist
warning: matrix singular to machine precision, rcond = 1.54198e-18
warning: called from
testing at line 13 column 3
x =
0
0
0
x =
0.40825
-0.81650
0.40825
Err =
-1.3323e-15
-4.4409e-16
4.4409e-16
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...