You may use Colab for Python and RStudio Cloud.
Learn SymPy.
import sympy
M=sympy.Matrix(
[[5, 2, 1, 0],
[1, -8, 0, -1],
[0, -4, 6, 7]])
M.rref()(Matrix([
[1, 0, 0, -9/32],
[0, 1, 0, 23/256],
[0, 0, 1, 157/128]]), (0, 1, 2))
Learn matlib.
library(matlib)
A <- matrix(c(5, 2, 1,
1, -8, 0,
0, -4, 6), 3, 3, byrow=TRUE)
b <- c(0, -1, 7)
echelon(A, b, verbose=TRUE, fractions=TRUE) # reduced row-echelon form
Initial matrix:
[,1] [,2] [,3] [,4]
[1,] 5 2 1 0
[2,] 1 -8 0 -1
[3,] 0 -4 6 7
row: 1
multiply row 1 by 1/5
[,1] [,2] [,3] [,4]
[1,] 1 2/5 1/5 0
[2,] 1 -8 0 -1
[3,] 0 -4 6 7
subtract row 1 from row 2
[,1] [,2] [,3] [,4]
[1,] 1 2/5 1/5 0
[2,] 0 -42/5 -1/5 -1
[3,] 0 -4 6 7
row: 2
multiply row 2 by -5/42
[,1] [,2] [,3] [,4]
[1,] 1 2/5 1/5 0
[2,] 0 1 1/42 5/42
[3,] 0 -4 6 7
multiply row 2 by 2/5 and subtract from row 1
[,1] [,2] [,3] [,4]
[1,] 1 0 4/21 -1/21
[2,] 0 1 1/42 5/42
[3,] 0 -4 6 7
multiply row 2 by 4 and add to row 3
[,1] [,2] [,3] [,4]
[1,] 1 0 4/21 -1/21
[2,] 0 1 1/42 5/42
[3,] 0 0 128/21 157/21
row: 3
multiply row 3 by 21/128
[,1] [,2] [,3] [,4]
[1,] 1 0 4/21 -1/21
[2,] 0 1 1/42 5/42
[3,] 0 0 1 157/128
multiply row 3 by 4/21 and subtract from row 1
[,1] [,2] [,3] [,4]
[1,] 1 0 0 -9/32
[2,] 0 1 1/42 5/42
[3,] 0 0 1 157/128
multiply row 3 by 1/42 and subtract from row 2
[,1] [,2] [,3] [,4]
[1,] 1 0 0 -9/32
[2,] 0 1 0 23/256
[3,] 0 0 1 157/128
library(matlib)
A <- matrix(
c(1, 5,
-2, -7), 2, 2, byrow=TRUE)
b <- c(7, -5)
echelon(A, b, verbose=TRUE, fractions=TRUE)
Initial matrix:
[,1] [,2] [,3]
[1,] 1 5 7
[2,] -2 -7 -5
row: 1
exchange rows 1 and 2
[,1] [,2] [,3]
[1,] -2 -7 -5
[2,] 1 5 7
multiply row 1 by -1/2
[,1] [,2] [,3]
[1,] 1 7/2 5/2
[2,] 1 5 7
subtract row 1 from row 2
[,1] [,2] [,3]
[1,] 1 7/2 5/2
[2,] 0 3/2 9/2
row: 2
multiply row 2 by 2/3
[,1] [,2] [,3]
[1,] 1 7/2 5/2
[2,] 0 1 3
multiply row 2 by 7/2 and subtract from row 1
[,1] [,2] [,3]
[1,] 1 0 -8
[2,] 0 1 3
library(matlib)
A <- matrix(c(0, 1, 4,
1, 3, 5,
3, 7, 7), 3, 3, byrow=TRUE)
b <- c(-5, -2, 6)
echelon(A, b, verbose=TRUE, fractions=TRUE) # reduced row-echelon form
Initial matrix:
[,1] [,2] [,3] [,4]
[1,] 0 1 4 -5
[2,] 1 3 5 -2
[3,] 3 7 7 6
row: 1
exchange rows 1 and 3
[,1] [,2] [,3] [,4]
[1,] 3 7 7 6
[2,] 1 3 5 -2
[3,] 0 1 4 -5
multiply row 1 by 1/3
[,1] [,2] [,3] [,4]
[1,] 1 7/3 7/3 2
[2,] 1 3 5 -2
[3,] 0 1 4 -5
subtract row 1 from row 2
[,1] [,2] [,3] [,4]
[1,] 1 7/3 7/3 2
[2,] 0 2/3 8/3 -4
[3,] 0 1 4 -5
row: 2
exchange rows 2 and 3
[,1] [,2] [,3] [,4]
[1,] 1 7/3 7/3 2
[2,] 0 1 4 -5
[3,] 0 2/3 8/3 -4
multiply row 2 by 7/3 and subtract from row 1
[,1] [,2] [,3] [,4]
[1,] 1 0 -7 41/3
[2,] 0 1 4 -5
[3,] 0 2/3 8/3 -4
multiply row 2 by 2/3 and subtract from row 3
[,1] [,2] [,3] [,4]
[1,] 1 0 -7 41/3
[2,] 0 1 4 -5
[3,] 0 0 0 -2/3
row: 3
library(matlib)
A <- matrix(c(13, -4, 2, -4, 11, -2, 2, -2, 8), 3,3)
b <- c(1,2,4)
plotEqn3d(A,b)import sympy
a,b,c,d=sympy.symbols("a,b,c,d")
M=sympy.Matrix(
[[a, b],
[c, d]])
N=sympy.Matrix(
[[5, 2, 1, 0],
[1, -8, 0, -1]])
M*NMatrix([
[5*a + b, 2*a - 8*b, a, -b],
[5*c + d, 2*c - 8*d, c, -d]])
M.TMatrix([
[a, c],
[b, d]])
M**-1Matrix([
[ d/(a*d - b*c), -b/(a*d - b*c)],
[-c/(a*d - b*c), a/(a*d - b*c)]])
M.det()a*d - b*c
import numpy
M=numpy.array(
[[5, 2],
[1, -8]])
N=numpy.array(
[[5, 2, 1, 0],
[1, -8, 0, -1]])
numpy.matmul(M,N)array([[27, -6, 5, -2],
[-3, 66, 1, 8]])
M.transpose()array([[ 5, 1],
[ 2, -8]])
numpy.linalg.inv(M) array([[ 0.19047619, 0.04761905],
[ 0.02380952, -0.11904762]])
numpy.linalg.det(M) -41.999999999999986
M <- matrix(c(5, 2,
1, -8), 2, 2, byrow=TRUE)
N <- matrix(c(5, 2, 1, 0,
1, -8, 0, -1), 2, 4, byrow=TRUE)
M%*%N [,1] [,2] [,3] [,4]
[1,] 27 -6 5 -2
[2,] -3 66 1 8
t(M) [,1] [,2]
[1,] 5 1
[2,] 2 -8
solve(M) [,1] [,2]
[1,] 0.19047619 0.04761905
[2,] 0.02380952 -0.11904762
det(M)[1] -42
import sympy
A=sympy.Matrix(
[[0, -1],
[-1, 2]])
A**-1Matrix([
[-2, -1],
[-1, 0]])
import sympy
a,b,c,d = sympy.symbols("a,b,c,d")
A=sympy.Matrix(
[[a, b],
[c, d]])
A**-1Matrix([
[ d/(a*d - b*c), -b/(a*d - b*c)],
[-c/(a*d - b*c), a/(a*d - b*c)]])
import sympy
A=sympy.Matrix(
[[1, 2, 3],
[4, 5, 6]])
B=sympy.Matrix(
[[7, 10],
[8, 11],
[9, 12]])
A*BMatrix([
[ 50, 68],
[122, 167]])
A.transpose()Matrix([
[1, 4],
[2, 5],
[3, 6]])
(A*A.transpose())**-1Matrix([
[ 77/54, -16/27],
[-16/27, 7/27]])
import numpy
A=numpy.array(
[[1, 2, 3],
[4, 5, 6]])
B=numpy.array(
[[7, 10],
[8, 11],
[9, 12]])
numpy.matmul(A, B)array([[ 50, 68],
[122, 167]])
A.transpose()array([[1, 4],
[2, 5],
[3, 6]])
library(matlib)
A <- matrix(c(1, 2, 3,
4, 5, 6), 2, 3, byrow=TRUE)
B <- matrix(c(7, 10,
8, 11,
9, 12), 3, 2, byrow=TRUE)
A%*%B [,1] [,2]
[1,] 50 68
[2,] 122 167
t(A) [,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
solve(A%*%t(A)) [,1] [,2]
[1,] 1.4259259 -0.5925926
[2,] -0.5925926 0.2592593
import sympy
M=sympy.Matrix(
[[2, 1],
[3, 5]])
M**-1Matrix([
[ 5/7, -1/7],
[-3/7, 2/7]])
M.det()7
N=sympy.Matrix(
[[2, 1, 4],
[3, 5, 2],
[2, 1, 0]])
N**-1Matrix([
[1/14, -1/7, 9/14],
[-1/7, 2/7, -2/7],
[ 1/4, 0, -1/4]])
N.det()-28
P=sympy.Matrix(
[[2, 1, 4, 5],
[3, 5, 0, 0],
[2, 1, 0, 1],
[4, 1, 0, 0]])
P**-1Matrix([
[ 0, -1/17, 0, 5/17],
[ 0, 4/17, 0, -3/17],
[1/4, 2/17, -5/4, 7/17],
[ 0, -2/17, 1, -7/17]])
P.det()68
P=sympy.Matrix(
[[2, 1, 4, 5, 4],
[3, 5, 0, 0, 3],
[2, 1, 0, 1, 2],
[4, 1, 0, 0, 1],
[0, 0, 0, 5, 0]])
P**-1Matrix([
[ 0, -1/21, -2/21, 1/3, 2/105],
[ 0, 2/7, -3/7, 0, 3/35],
[1/4, 1/21, -55/84, 1/6, -5/42],
[ 0, 0, 0, 0, 1/5],
[ 0, -2/21, 17/21, -1/3, -17/105]])
P.det()-420
M=sympy.Matrix(
[[2, 1],
[1, 3]])
b=sympy.Matrix(
[[6],
[7]])
M**-1*bMatrix([
[11/5],
[ 8/5]])
M.det()5
N=sympy.Matrix(
[[1, 2, 3],
[4, 5, 6],
[1, 0, 1]])
N**-1Matrix([
[-5/6, 1/3, 1/2],
[-1/3, 1/3, -1],
[ 5/6, -1/3, 1/2]])
N.det()-6
import sympy
P=sympy.Matrix(
[[2, 1, 4, 5, 4],
[3, 5, 0, 0, 0],
[2, 1, 0, 0, 2]])
P.nullspace()[Matrix([
[ 0],
[ 0],
[-5/4],
[ 1],
[ 0]]), Matrix([
[-10/7],
[ 6/7],
[ -1/2],
[ 0],
[ 1]])]
P.columnspace()[Matrix([
[2],
[3],
[2]]), Matrix([
[1],
[5],
[1]]), Matrix([
[4],
[0],
[0]])]
import sympy
lamda = sympy.symbols('lamda')
N=sympy.Matrix(
[[0.8, 0.3],
[0.2, 0.7]])
N.eigenvals(){1.00000000000000: 1, 0.500000000000000: 1}
N.eigenvects()[(1.00000000000000, 1, [Matrix([
[0.832050294337844],
[0.554700196225229]])]), (0.500000000000000, 1, [Matrix([
[-0.721110255092798],
[ 0.721110255092798]])])]
N.charpoly(lamda)PurePoly(1.0*lamda**2 - 1.5*lamda + 0.5, lamda, domain='RR')
N.diagonalize()(Matrix([
[0.832050294337844, -0.721110255092798],
[0.554700196225229, 0.721110255092798]]), Matrix([
[1.0, 0],
[ 0, 0.5]]))
import numpy
N=numpy.array(
[[0.8, 0.3],
[0.2, 0.7]])
numpy.linalg.eig(N)(array([1. , 0.5]), array([[ 0.83205029, -0.70710678],
[ 0.5547002 , 0.70710678]]))
library(matlib)
N <- matrix(c(0.8, 0.3,
0.2, 0.7), 2, 2, byrow=TRUE)
eigen(N) # baseeigen() decomposition
$values
[1] 1.0 0.5
$vectors
[,1] [,2]
[1,] 0.8320503 -0.7071068
[2,] 0.5547002 0.7071068
C <- matrix(c(1,2,3,
2,5,6,
3,6,10), 3, 3) # nonsingular, symmetric
eigen(C) # baseeigen() decomposition
$values
[1] 14.93303437 1.00000000 0.06696563
$vectors
[,1] [,2] [,3]
[1,] -0.2505248 -9.853455e-16 0.9681102
[2,] -0.5370109 -8.320503e-01 -0.1389662
[3,] -0.8055164 5.547002e-01 -0.2084492
Eigen(C)$values
[1] 14.93303437 1.00000000 0.06696563
$vectors
[,1] [,2] [,3]
[1,] 0.2505248 -1.041818e-09 -0.9681102
[2,] 0.5370109 8.320503e-01 0.1389662
[3,] 0.8055164 -5.547002e-01 0.2084492
showEig(C)Warning in showEig(C): 'X' has TRUE columns. Only the first two are used
import sympy
a=sympy.Matrix(
[[1],
[2]])
b=sympy.Matrix(
[[3],
[4]])
a.T*bMatrix([[11]])
import numpy
a = numpy.array([1,2,3])
b = numpy.array([0,1,0])
numpy.inner(a, b)2
a <- c(1, 2, 4, 5)
b <- c(-1, 2, 3, 4)
t(a)%*%b [,1]
[1,] 35
sum(a*b)[1] 35