예 1.1.5
P = vector([1, 2])
Q = vector([-2, 3])
R = vector([2, 5])
a = (Q-P)+ (R-P)
print("vector PQ + vector PR =", a)
print("norm(vector PQ + vector PR)= ", norm(a))
예 1.1.8
P = vector([1, 2, 3, 4])
Q = vector([-1, 2, -3, 4])
R = vector([0, -2, 2, -1])
S = vector([0, 1, -2, 0])
vector_PQ = Q - P
vector_RS = S -R
print("vector PQ = ", vector_PQ)
print("vector RS = ", vector_RS)
print("norm of vector PQ =", norm(vector_PQ))
print("vector PQ + vector RS = ", vector_PQ + vector_RS)
print("2*vector_RS = ", 2*vector_RS)
예 1.2.1
a = 1/2
b = sqrt(3)/2
x = arccos(a)
y = arcsin(b)
print("(%s, %s) = (cos %s, sin %s) " %(a, b, x, y))
예 1.2.3
(1)
v = vector([12, -4, 3])
print(v/norm(v))
(2)
w = vector([100, -200, -200, 400, 1200])
print(w/norm(w))
예 1.2.9
(1)
u = vector([1, -2, 5])
v = vector([-7, 2, 8])
print(norm(u)*norm(v)-abs(u*v))
print(N((norm(u)*norm(v)-abs(u*v)))>= 0)
(2)
u = vector([1, -2, 0, 1])
v = vector([1, 12, -8, 1])
print(norm(u)*norm(v)-abs(u*v))
print(N((norm(u)*norm(v)-abs(u*v)))>= 0)
예 1.2.12
print(vector([2, -1])*vector([1, 2]))
theta = var("theta")
print(vector([cos(theta), sin(theta)])*vector([-sin(theta), cos(theta)]))
print(vector([1, 2, -5])*vector([1, 7, 3]))
예 1.2.13
a1, a2, a3 = var("a1 a2 a3")
b1, b2, b3 = var("b1 b2 b3")
a = vector([a1, a2, a3])
b = vector([b1, b2, b3])
n = vector([a2*b3 - a3*b2, -a1*b3 + a3*b1, a1*b2 - a2*b1])
print("a*n =",(a*n).full_simplify())
print("b*n =", (b*n).full_simplify())
예 1.3.5
x, y , z = var("x y z")
Q = vector([x, y, z])
P = vector([2, 1, -3])
a = Q - P
n = vector([3, -1, 2])
print(a*n, "= 0")
예 2.1.2
x1, x2 = var("x1 x2")
solve(x1 - 2*x2 == 3, x1)
예 2.1.3
x, y, z =var("x y z")
solve(3*x + 2*y - z == 3, z)
예 2.1.4
x, y =var("x y")
solve([2*x + 3*y == 8, -x + 2*y == 3], x, y)
예 2.1.6
x, y, z =var("x y z")
solve([x - 2*y + 3*z == 9, -x + 3*y == -4, 2*x -5*y + 5*z == 17], x, y, z)
예 2.1.7
x, y, z, k =var("x y z k")
solve([x - 2*y + 3*z == 9, -x + k*y == -4, 2*x -5*y + 5*z == 17], x, y, z)
예 2.2.4
matrix(2, 3, [1, 2, 3, -1, 0, 4])
matrix([[1, 2, 3], [-1, 0, 4]])
v1 = vector([1, 2, 3])
v2 = vector([-1, 0, 4])
A = matrix([v1, v2])
print(A)
예 2.2.5
A = matrix([[1, 2, 3], [-1, 0, 4]])
A12 = A[1][2]
print("A_12 = ", A12)
A00 = A[0][0]
print("A_00 = ", A00)
column_0 = A.column(0)
print("column 0 : ",column_0)
row_1 = A.row(1)
print("row 1 : ", row_1)
예 2.2.7
A = matrix([[1, 2, 3], [-1, 0, 4], [3, 1, 2]])
B = matrix([[1, 1, 1], [1, 1, 2], [-3, 2, -1]])
print(A+B)
print(3*A)
예 2.2.9
A = matrix([[1, 3]])
B = matrix([[2, 0], [-1, 4]])
print(A*B)
예 2.2.10
A = matrix([[1, 2, 3], [-1, 0, 4], [3, 1, 2]])
B = matrix([[1, 1, 2], [1, 1, 2], [-3, 2, -1]])
print(A*B)
예 2.2.12
A=matrix(3, [1,2,3,-1,0,4,3,1,2])
B=matrix(3, [1,1,2, 1,1, 2, -3, 2, -1])
print('3A+B =')
print(3*A+B)
print('')
print('A*B =')
print(A*B)
print('')
print('A^5 =')
print(A^5)
예 2.3.4 (1)
A=matrix(QQ,3, [1,-2,3,-1,3,0,2,-5,5])
b=vector(QQ, [9,-4,17])
Ab=A.augment(b)
print('Ab =')
print(Ab)
print('')
Ab.add_multiple_of_row(1, 0, 1)
print(Ab)
print('')
Ab.add_multiple_of_row(2, 0, -2)
print(Ab)
print('')
Ab.add_multiple_of_row(2, 1, 1)
print(Ab)
print('')
Ab.rescale_row(2,1/2)
print(Ab)
print('')
Ab.add_multiple_of_row(0, 1, 2)
print(Ab)
print('')
Ab.add_multiple_of_row(0, 2, -9)
print(Ab)
print('')
Ab.add_multiple_of_row(1, 2, -3)
print(Ab)
print('')
예 2.3.4 (2)
A=matrix(QQ,3, [1,-2,3,-1,3,0,2,-5,5])
b=vector(QQ, [9,-4,17])
Ab=A.augment(b)
print('Ab =')
print(Ab)
print('')
Ab_ech = Ab.echelon_form()
print('echelon form of Ab')
print(Ab_ech)
print('')
Ab_rref = Ab.rref()
print('reduced row echelon form of Ab')
print(Ab_rref)
print('')
예 2.3.8
A = matrix(QQ,[[2, 3, 5, 4], [4, 7, -10, 1], [2, 4, -15, -3]])
A.add_multiple_of_row(1, 0, -2)
print(A)
print('')
A.add_multiple_of_row(2, 0, -1)
print(A)
print('')
A.add_multiple_of_row(2, 1, -1)
print(A)
print('')
A.rescale_row(0,1/2)
print(A)
예 2.3.9
A = matrix(QQ,[[2, 3, 5, 4], [4, 7, -10, 1]])
A.add_multiple_of_row(1, 0, -2)
print(A)
print('')
A.rescale_row(0,1/2)
print(A)
print('')
A.add_multiple_of_row(0, 1, -3/2)
print(A)
예 2.3.10
A = matrix(QQ,[[1, -2, 3, 0], [-1, 3, 0, 0], [2, -5, 5, 0]])
A.add_multiple_of_row(1, 0, 1)
print(A)
print('')
A.add_multiple_of_row(2, 0, -2)
print(A)
print('')
A.add_multiple_of_row(0, 1, 2)
print(A)
print('')
A.add_multiple_of_row(2, 1, 1)
print(A)
print('')
A.rescale_row(2,1/2)
print(A)
print('')
A.add_multiple_of_row(0, 2, -9)
print(A)
print('')
A.add_multiple_of_row(1, 2, -3)
print(A)
예 2.3.11
A = matrix(QQ,[[3, 2, 1, 3], [2, 1, 1, 0], [6, 2, 4, 6]])
A.add_multiple_of_row(1, 0, -2/3)
print(A)
print('')
A.add_multiple_of_row(2, 0, -2)
print(A)
print('')
A.add_multiple_of_row(2, 1, -6)
print(A)
예 2.3.12
A = matrix(QQ, [[1, 2, 3, 10], [4, -3, 6, -4], [7, 3, 15, 26]])
A_ech = A.echelon_form()
print('echelon form of Ab')
print(A_ech)
예 2.4.3
x = var('x')
B = matrix([[-1,1,-1,1,2],[0,0,0,1,-1],[1,1,1,1,3], [8,4,2,1,4]])
C = B.rref()[:,-1]
y = sum([C[i]*x^(3-i) for i in range(4)])
print(y)
예 2.5.2
(1)
A = matrix([[1, 2, 3], [-1, 0, 4], [3, 1, 2]])
print("A transpose:")
print(A.transpose())
(2)
A = matrix([[1, 2, 4], [0, 1, -1], [0, 0, 3]])
B = matrix([[1, 2], [0, -1]])
C = matrix([[1, 0, 0], [7, 1, 0], [-2, 1, 3]])
print("A transpose:")
print(A.transpose())
print("")
print("B transpose:")
print(B.transpose())
print("")
print("C transpose:")
print(C.transpose())
예 2.5.9
A = matrix([[1, 2], [1, 1]])
B = matrix([[-1, 0], [1, -1]])
print((A*B) == (B*A))
예 2.5.11
A=matrix([[1,2,4],[0,1,-1],[0,0,3]])
B=matrix([[1,2,5],[1,-1,-2],[2,0,0]])
C=matrix([[1,0,0],[7,1,0],[-2,1,3]])
print(A*(B*C)==(A*B)*C)
예 2.6.6
P=matrix(7,3, [8, 18, 24, 9, 24, 2, 8 , 15, 0, 1, 18, 4, 14, 19, 2,
14, 15, 9, 15, 0, 0 ])
A=matrix(3,3,[2,-1,1, 1,0,1, -1,2, -1])
P*A
예 2.6.10
A = matrix(QQbar, [[3, 2 -5*I],[2+4*I, I]])
print('A conjugate: ')
print(A.C)
print('A Hermitian: ')
print(A.H)
B = matrix(QQbar, [[3, 2], [4, 5]])
print('B conjugate: ')
print(B.C)
print('B Hermitian: ')
print(B.H)
C = matrix(QQbar, [[3, 2-5*I], [2+5*I, -4]])
print('C conjugate: ')
print(C.C)
print('C Hermitian: ')
print(C.H)
예 2.6.11 - (1)
A = matrix(3, [1,2,3,-1,0,4,3,1,2])
inv_A = A^(-1)
print('inverse matrix of A')
print(inv_A)
예 2.6.11 - (2)
A = matrix( 3, [1,2,3,-1,0,4,3,1,2])
print(A.is_invertible())
예 2.6.11 - (3)
A = matrix(QQ, 3, [1,2,3,-1,0,4,3,1,2])
print(A.is_invertible())
예 2.6.12
A = matrix([[2, 3], [-1, 2]])
A_inv = A^(-1)
print("A^(-1):")
print(A_inv)
v = matrix([[8], [3]])
print("solution: ")
print(A_inv*v)
예 2.7.16 - (1)
A=matrix(QQ,[[1,-2, 3],[-1,3,0], [2,-5,5]])
P, L, U = A.LU()
print('P =')
print(P)
print('')
print('L =')
print(L)
print('')
print('U =')
print(U)
예 2.7.16 - (2)
B=matrix(RDF,[[2,-5,5], [1,-2, 3],[-1,3,0]])
P, L, U = B.LU()
print('P =')
print(P)
print('')
print('L =')
print(L)
print('')
print('U =')
print(U)
예 3.1.7
A=matrix([[5,-4,4], [2,4,1], [3,2,3]])
B=matrix([[5,-4,4 ,0], [ 0,2,4,1], [1,3,2,3], [0,1,0,-1]])
print('determinant of A')
print(A.det())
print('')
print('determinant of B')
print(B.det())
예 3.2.3
A = matrix([[5,-4,4], [2,4,1], [3,2,3]])
A1 = A.row(0)
A2 = A.row(1)
A3 = A.row(2)
A = matrix([A1, A2, A3])
print("A =")
print(A)
print('')
S12=matrix([A2,A1,A3])
print("S12 =")
print(S12)
print('')
S13=matrix([A3,A2,A1]);S13
print("S13 =")
print(S13)
print('')
print("det(A)=", A.det())
print("det(S12)=", S12.det())
print("det(S13)=", S13.det())
예 3.2.9
A = matrix([[-4, 5, 3], [12, -15, -9], [2, 5, 5]])
print("det(A)=", A.det())
예 3.2.13
A = matrix([[2, -3, 10], [1, 2, -2], [0, 1, -3]])
print("det(A)=", A.det())
예 3.2.18
A = matrix([[1, 2, -2, 24], [-1, 1, 0, 2], [0, 2, 0, 3], [3, 4, 0, -2]])
print("det(A)=", A.det())
예 3.2.19
A = matrix([[-3, 2, -3], [5, -4, 0], [2, -1, 6]])
print("det(A)=", A.det())
예 3.3.3
A = matrix([[5,-4,4], [2,4,1], [3,2,3]])
print(A.adjugate())
print('')
print(A.det())
print('')
print(A*A.adjugate())
예 3.4.2
A = matrix([[1, 2, 1], [2, 3, 1], [1, -1, 1]])
print("Area =", A.det()/2)
예 3.4.6
x, y , z = var("x y z")
A = matrix([[x, y, z, 1], [0, 1, 0, 1], [-1, 3, 2, 1], [0, 0, 1, 1]])
print( (A.det()).full_simplify(), " = " , 0)
예 4.2.12
v1 = vector([1,0])
v2 = vector([1/2, 1])
v = vector([0,1])
A = matrix([v1, v2]).transpose()
A_rref = A.augment(v).rref()
print('A_rref =')
print(A_rref)
print('')
print('solution :')
print(A_rref[:,-1])
예 4.2.14
v1=matrix(3, 1, [1, -1, 3])
v2=matrix(3,1,[2, 0, 1])
v3=matrix(3,1,[0, -2,6])
v=matrix(3,1,[12, -5, 20])
print('reduced row echelon form =')
sol = v1.augment(v2).augment(v3).augment(v).rref()
print(sol)
print('')
print('solution :')
print(sol[:,-1])
예 4.3.3
A = matrix([[2, 3, 8, -5], [-1, 2, 3, 4], [5, 4, 13, -14]])
print(A.rref())
print('')
print(A.transpose().rref())
예 4.3.4
A = matrix([[1, 1, 2], [0, 1, 2], [-1, 1, 2], [1, 3, 1]])
print(A.rref())
예 4.3.13
A=matrix(QQ, 5, 7, [[1,3,2,2,2, 7,4], [1, 2, 5, -1,3, 0,0],
[5,2,-1,4,4,4,4], [0,-2,5,5,5,5,5], [4, 2, 0,0,3,3,3]])
print('A =')
print(A)
print('')
print(A.right_kernel())
print("null(A)=", A.right_kernel().dimension())
print("rank(A)=", A.rank())
A.right_kernel().dimension()+A.rank()==7
예 5.1.9
def ip(f, g): return integral(f*g, x, 0, 1)
print( "d(1, x)=", sqrt(ip(1-x, 1-x)))
print( "d(1, x^2)=", sqrt(ip(1-x^2, 1-x^2)))
print( "d(1, x^3)=", sqrt(ip(1-x^3, 1-x^3)))
예 5.2.3
(1)
u = vector([5, -5, 5])
v = vector([1, -1, 1])
print(((u*v)/(v*v))*v)
(2)
u = vector([5, 5, 0])
v = vector([1, -1, 1])
print(((u*v)/(v*v))*v)
(3)
u = vector([5, 5, 5])
v = vector([1, -1, 1])
print(((u*v)/(v*v))*v)
예 5.2.6
u=vector([17, -12, 10])
v=vector([1, -1, 1])
print(((u*v)/(v*v))*v)
예 5.2.7
def ip(f, g): return integral(f*g, x, -1, 1)
(ip(x^2+2*x, x)/ip(x, x))*x
예 5.3.6
v1 = vector([2, 3, 2, -2])
v2 = vector([1, 0, 0, 1])
v3 = vector([-1, 0, 2, 1])
v4 = vector([-1, 2, -1, 1])
(v1*v2==0)and(v1*v3==0)and(v1*v4==0)and(v2*v3 ==0)and(v2*v4==0)and(v3*v4==0)
예 5.3.8
def coordinate_vector(v1,v2, v3, w): return v1*w, v2*w, v3*w
v1=vector([3/5, 4/5, 0])
v2=vector([-4/5, 3/5, 0])
v3=vector([0,0,1])
w=vector([5,-5,2])
coordinate_vector(v1,v2, v3, w)
예 5.4.2
(1)
v1=vector([1, 0])
v2=vector([2, 1])
w1=v1; print("w1=",w1)
w2= v2-((v2*w1)/(w1*w1))*w1; print("w2=", w2)
u1=w1/norm(w1); print("u1=", u1)
u2=w2/norm(w2); print("u2=", u2)
(2)
v1=vector([1, 1])
v2=vector([2, 1])
w1=v1; print("w1=",w1)
w2= v2-((v2*w1)/(w1*w1))*w1; print("w2=", w2)
u1=w1/norm(w1); print("u1=", u1)
u2=w2/norm(w2); print("u2=", u2)
예 5.4.5
(1)
v1=vector([2,4,0])
v2=vector([1,3,3])
w1=v1; print("w1=",w1)
w2= v2-((v2*w1)/(w1*w1))*w1; print("w2=", w2)
u1=w1/norm(w1); print("u1=", u1)
u2=w2/norm(w2); print("u2=", u2)
(2)
v2=vector([1,3,3])
A=matrix(2,3,[v1,v2])
[G, mu]=A.gram_schmidt() #mu*G=A
print("G:")
print(G)
print('mu:')
print(mu)
w1=G.row(0) # G의 1행
w2=G.row(1) # G의 2행
print('')
u1=G.row(0)/G.row(0).norm();print("u1=", u1)
u2=G.row(1)/G.row(1).norm();print("u2=", u2)
예 5.4.6
v1=vector([1,1,1,-1])
v2=vector([2,-1,-1,1])
v3=vector([0,3,3,-3])
v4=vector([-1,2,2,1])
A=matrix(4,4,[v1,v2, v3, v4])
[G, mu]=A.gram_schmidt(); print(G)
u1=G.row(0)/G.row(0).norm()
u2=G.row(1)/G.row(1).norm()
u3=G.row(2)/G.row(2).norm()
print(u1, u2, u3)
예 5.4.7
def ip(f, g): return integral(f*g, x, -1, 1)
v1=1
v2=x
v3=x*x
v4=x*x*x
w1=v1; print("w1=",w1)
w2= v2-(ip(v2,w1)/ip(w1,w1))*w1;
print("w2=", w2)
w3 = v3 - (ip(v3, w1)/ip(w1,w1))*w1 -(ip(v3,w2)/ip(w2,w2))*w2
print('w3=',w3)
w4 = v4 - (ip(v4, w1)/ip(w1,w1))*w1 -(ip(v4,w2)/ip(w2,w2))*w2 - (ip(v4,w3)/ip(w3,w3))*w3
print('w4=',w4)
예 5.5.7
v = vector([13, 2, 3, 7])
e1 = vector([1, 0, 0, 0])
e2 = vector([0, 1, 0, 0])
e3 = vector([0, 0, 1, 0])
proj = (v*e1)*e1 + (v*e2)*e2 + (v*e3)*e3
print(proj)
예 5.5.9
(1)
v1=vector([1, 0, 0])
v2=vector([0, 1, 0])
A=matrix(2,3,[v1,v2])
[G, mu]=A.gram_schmidt(); print(G)
u1=G.row(0)/G.row(0).norm()
u2=G.row(1)/G.row(1).norm()
v = vector([1, -2, 3])
proj = (v*u1)*u1 + (v*u2)*u2
print(proj)
(2)
v1=vector([0, 3, 1])
v2=vector([2, 0, 0])
A=matrix(2,3,[v1,v2])
[G, mu]=A.gram_schmidt(); print(G)
u1=G.row(0)/G.row(0).norm()
u2=G.row(1)/G.row(1).norm()
v = vector([1, 2, 3])
proj = (v*u1)*u1 + (v*u2)*u2
print(proj)
예 5.5.11
v1=vector([1, 1, 1])
v2=vector([1, 2, 3])
v = vector([0, 1, 4])
A=matrix(2,3,[v1,v2])
[G, mu]=A.gram_schmidt(); print(G)
u1=G.row(0)/G.row(0).norm()
u2=G.row(1)/G.row(1).norm()
proj = (v*u1)*u1 + (v*u2)*u2
print(proj)
B = matrix(3, 3, [v1, v2, proj]).transpose()
print(B)
print('')
print(B.rref())
예 5.6.3
n=2
A=matrix([[1,1],[1,2],[1,3]])
b=vector([0, 1, 4])
x=(A.transpose()*A).augment(A.transpose()*b).rref().column(n)
print(x)
예 5.6.4
n=2
A=matrix([[1,1],[0,-1],[2,0],[0,1]])
b=vector([2,1,0,1])
x=(A.transpose()*A).augment(A.transpose()*b).rref().column(n)
print(x)
print(A*x)
예 5.6.7
A=matrix(QQ, 6,3,[1,0,0,1,1,1,1,2,4,1,3,9,1,4,16,1,5,25])
b=matrix(QQ, 6,1,[51,73,94,114,132,152])
(A.transpose()*A).augment(A.transpose()*b).rref()
예 6.2.4
(1)
x, y = var('x y')
h(x, y) = [x-y, x+y]
T = linear_transformation(QQ^2, QQ^2, h) # define LT
C = T.matrix(side='right') # standard matrix
print(C)
print("\n")
(2)
k(x, y) = [2*x -y, x-2*y, x+y]
L = linear_transformation(QQ^2, QQ^3, k)
D = L.matrix(side= "right")
print(D)
예 6.4.3
x, y = var('x y')
h(x, y) = [2*x-y, x-2*y, x+y]
T = linear_transformation(QQ^2, QQ^3, h)
C = T.matrix(side='right')
print(C)
print("reduce echelon form:")
print(C.rref())
print("Nullspace:", T.kernel())
예 6.4.7
A=matrix(QQ, 4,5,[1,2,0,3,7, 1,-1,3,-2,-8, 1,1,3,1,0,0,0,0,1,3])
print("Image of a linear transformation:")
print(A.image())
print("Kernel of a linear transformation:")
print(A.right_kernel())
예 6.6.3
U = QQ^4
V = QQ^5
A=matrix(QQ, [[1,0,0,0], [0,1,0,0],[0,0,1,0],[0,0,0,1], [1,1/2,1/3,1/4]])
T = linear_transformation(U, V, A, side='right')
print (T.image())
print("\n")
print (T.kernel())
print("\n")
x0 = vector(QQ, [2, 0, -3, 10])
print (T(x0))
예 6.7.2
x,y,z=var('x y z')
A(x,y,z)=(2*x-z, y-2*z,x-2*z)
B(x,y,z)=(x+y, y+z)
T1=linear_transformation(QQ^3, QQ^3,A)
T2=linear_transformation(QQ^3, QQ^2,B)
C = T1.matrix(side='right')
D = T2.matrix(side='right')
print ("[T1]=")
print (C)
print ("[T2]=")
print (D)
print ("[T2*T1]=")
print (D*C)
예 6.8.3
v1=matrix(QQ, 2,1, [1,0])
v2=matrix(QQ, 2, 1, [1/2, 1])
w1=matrix(QQ, 2, 1, [1,0])
w2=matrix(QQ, 2, 1, [0, 1])
A=v1.augment(v2).augment(w1).augment(w2)
A.rref()
예 7.1.7
A = matrix( [[5, 3], [2,0]] )
f = A.charpoly()
print(f)
예 7.1.8
A = matrix( [[1, 2], [3, 4]] )
f = A.charpoly()
print(f)
예 7.1.9
A = matrix( [[1, 0, 0], [3, 1, 0], [1, 1, 2]] )
f = A.charpoly()
print(f)
예 7.1.12
A=matrix([[-2, 0, -6], [0, 1, 0], [-4, 1, 0]])
f = A.charpoly()
print(f)
solve(x^3 + x^2 - 26*x + 24 , x)
print(A.eigenvalues())
print(A.eigenvectors_right())
예 7.1.13
A=matrix([[2, 1, -1], [0,0,9], [0,-1, 6]])
print(A.eigenvalues())
print(A.eigenvectors_right())
B=matrix([[2, 1, -1], [0,4,2], [0,-2,0]])
print(B.eigenvalues())
print(B.eigenvectors_right())
예 7.1.17
A=matrix(3,[[0,-4,0],[1,4,0],[0,0,2]])
print(factor(A.charpoly()))
print(A.eigenvectors_right())
B=matrix([[2, -2, 5], [0, 2, 0], [0,0,2]])
print(factor(B.charpoly()))
print(B.eigenvectors_right())
C=matrix([[2, 5, -7], [0, 2, 1], [0,0,2]])
print(C.charpoly())
print(C.eigenvectors_right())
예 7.2.4
A=matrix([[1,3,0], [0,1,0], [0,0,2]])
print(A.eigenspaces_right())
A=matrix([[1,0,3], [0,1,0], [0,0,2]])
print(A.eigenspaces_right())
A=matrix([[1,0,0], [0,1,3], [0,0,2]])
print(A.eigenspaces_right())
A=matrix([[1,3,4], [0,1,5], [0,0,2]])
print(A.eigenspaces_right())
A=matrix([[1,0,4], [0,1,5], [0,0,2]])
print(A.eigenspaces_right())
예 7.3.1
A=matrix( [[-2,0,-6],[0,1,0],[-4,1,0]])
P=matrix([[1,-2,3],[0,-7,0],[-1,1,2]])
D=P.inverse()*A*P
print(D)
예 7.3.2
A=matrix( [[5,3], [2,0]])
P=matrix([[3,1],[1,-2]])
D=P.inverse()*A*P
print(D)
예 7.3.6
A=matrix( [[5,3,0,0,0], [2,0,0,0,0], [0,0,-2,0,-6], [0,0,0,1,0], [0,0,-4,1,0]])
A.eigenvectors_right()
P= matrix([[1,0,0,1,0],[1/3,0,0,-2,0],[0,1,1,0,1],[0,0,7/2,0,0],[0,-1,-1/2,0,2/3]])
D=P.inverse()*A*P
print(D)
예 7.4.6
A=matrix([[3,-2,4],[-2,6,2],[4,2,3]])
A.eigenvectors_right()
v1=vector([1,0,1])
v2=vector([1,-2,0])
v3=vector([2,1,-2])
w1=v1
print("w1=",w1)
w2= v2-((v2*w1)/(w1*w1))*w1
print("w2=", w2)
u1=w1/norm(w1); print("u1=", u1)
u2=w2/norm(w2); print("u2=", u2)
u3=v3/norm(v3); print("u3=", u3)
예 7.4.7
A=matrix([[2,-3,0,0],[-3,2,0,0],[0,0,4,2],[0,0,2,7]])
A.eigenvectors_right()
v1=vector([0,0,1,2])
v2=vector([1,-1,0,0])
v3 = vector([0,0,1,-1/2])
v4 =vector([1,1,0,0])
A=matrix(4,4,[v1,v2,v3,v4])
[G, mu]=A.gram_schmidt(); print(G)
u1=G.row(0)/G.row(0).norm()
u2=G.row(1)/G.row(1).norm()
u3=G.row(2)/G.row(2).norm()
u4=G.row(3)/G.row(3).norm()
print(u1)
print(u2)
print(u3)
print(u4)
예 7.5.8
P=matrix(QQ, 3, [0.2,0.2,0.3,0.4,0.5,0.6,0.4,0.3,0.1])
P.eigenvectors_right()
예 7.5.13
(1)
B=matrix ( 5, [0, 1/2, 1/3, 0, 1/5, 1, 0, 1/3, 1/3, 1/5, 0, 1/2, 0, 1/3, 1/5, 0, 0, 1/3, 0, 1/5, 0, 0, 0, 1/3, 1/5])
N=matrix ( 5, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
(85/100)*B + (15/500)*N
(2)
1단계
B=matrix ( 5, [0, 1/2, 1/3, 0, 1/5, 1, 0, 1/3, 1/3, 1/5, 0, 1/2, 0, 1/3, 1/5, 0, 0, 1/3, 0, 1/5, 0, 0, 0, 1/3, 1/5])
N=matrix ( 5, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
G=(85/100)*B + (15/500)*N
G.eigenvectors_right()
2단계
v=vector([1, 5120/3709, 248601/285593, 1533/3709, 81049/285593])
(1/(1 + (5120/3709) + (248601/285593) + (1533/3709) + (81049/285593)))*v
예 8.1.1
(3+4*I).abs()
(3-4*I).abs()
예 8.1.2
z = 2+ 3*I
print(1/z)
w = z.conjugate()/(z*z.conjugate())
print(w)
예 8.2.9
v = vector([2-3*I, 2]); w = vector([5+2*I, 1 -3*I])
print(v*w.conjugate())
v = vector([5+2*I, 1-3*I]); w = vector([5+2*I, 1 -3*I])
print(v*w.conjugate())
예 8.3.2
예 8.4.2
A = matrix(QQ, [[1, 2], [3, 4]])
print(3*A**2 -2*A + 3)
print(A**2 -5*A -2)
예 8.4.7
A1 = matrix(QQ, [[2, 0, 0], [0, 2, 0], [0, 0, 2]])
A2 = matrix(QQ, [[2, 0, 0], [0, 2, 1], [0, 0, 2]])
A3 = matrix(QQ, [[2, 1, 1], [0, 2, 1], [0, 0, 2]])
print('p1(A1): ')
print(A1 -2, '\n')
print('p2(A1): ')
print((A1 -2)**2, '\n')
print('p(A1): ')
print((A1 -2)**3, '\n')
print('p1(A2): ')
print(A2 -2, '\n')
print('p2(A2): ')
print((A2 -2)**2, '\n')
print('p(A2): ')
print((A2 -2)**3, '\n')
print('p1(A3): ')
print(A2 -2, '\n')
print('p2(A3): ')
print((A3 -2)**2, '\n')
print('p(A3): ')
print((A3 -2)**3, '\n')
예 9.3.5
A=matrix([[2,5,-7], [0,2,1],[0,0,2]]);
print('A:')
print(A)
J,P = A.jordan_form(transformation=True);
print('Jordan form (upper triangle):')
print(J)
print('Transition matrix P:')
print(P)
print('\n')
print("P^(-1)*A*P = J:", P.inverse()*A*P == J)
print('Note that to get a jordan form with lower trianglular form, \n we need to rearange the basis in backward order')