def main(): g = Graph() v1 = Matrix([[3, 0]]).T v2 = Matrix([[1, 2]]).T g.add_vector(v1, color='tab:green') g.add_vector(v2, color='tab:red') p1 = v1.copy() p2 = orthogonal(p1, v2) pprint([p1, p2]) g.add_vector(p1, color='tab:blue') # same as v1 (green) so it hides it g.add_vector(p2, color='tab:orange') g.show()
def main(): g = Graph() v1 = Matrix([[2, 1]]).T v2 = Matrix([[1, 1]]).T g.add_vector(v1) g.add_vector(v2) p1 = v1.copy() p2 = orthogonal(p1, v2) g.add_vector(p1, color='tab:blue') g.add_vector(p2, color='tab:blue') n1 = normalize(p1) n2 = normalize(p2) g.add_vector(n1, color='tab:green') g.add_vector(n2, color='tab:green') g.show()
import numpy as np from util.graph import Graph u = np.array([2, -1]) g = Graph() g.add_vector(u) g.add_vector(-u) g.add_vector(2 * u) g.add_vector(3 * u) g.add_vector(-2 * u) g.show()
from sympy import * from util.graph import Graph g = Graph() print('a') u = Matrix([[1, 1]]).T v = Matrix([[-1, 1]]).T pprint(u.T * v) g.add_vector(u) g.add_vector(v) print('b') u = Matrix([[-2, -3]]).T v = Matrix([[3, -2]]).T pprint(u.T * v) g.add_vector(u, color='tab:blue') g.add_vector(v, color='tab:blue') print('c') u = Matrix([[-4, 5]]).T v = Matrix([[5, 4]]).T pprint(u.T * v) g.add_vector(u, color='tab:green') g.add_vector(v, color='tab:green') print('d') u = Matrix([[2, 7]]).T v = Matrix([[-7, 2]]).T pprint(u.T * v) g.add_vector(u, color='tab:orange')
import numpy as np from util.graph import Graph A = np.array([[2, 2, 0], [0, 3, 0]]) print(A) g = Graph() for v in A.T: g.add_vector(v) A *= 2 print(A) for v in A.T: g.add_vector(v, color='tab:blue') g.show()
import numpy as np from util.graph import Graph u = np.array([7, -2]) v = np.array([-5, 3]) print('a', np.linalg.norm(u + v)) print('b', np.linalg.norm(u - v)) g = Graph() g.add_vector(u, color='r') g.add_vector(v, color='g') g.add_vector(u + v, color='b') g.add_vector(u - v, color='y') g.show()
x, y = symbols('x y') eq1 = Eq(2 * x - y, 0) eq2 = Eq(-x + 2 * y, 3) pprint(eq1) pprint(eq2) result = linsolve([eq1, eq2], [x, y]) print('x, y:', pretty(result)) # row "picture" # See an intersection at [1, 2] g_row = plot(solve(eq1, y)[0], show=False, line_color='tab:blue', xlim=[-5, 5], ylim=[-5, 5]) g_row.append(plot(solve(eq2, y)[0], show=False, line_color='tab:blue')[0]) g_row.show() # col "picture" g_col = Graph() M, b = linear_eq_to_matrix([eq1, eq2], x, y) # Show the columns vectors in green u = np.array(M.col(0)).T[0] v = np.array(M.col(1)).T[0] g_col.add_vector(u, color='tab:green') g_col.add_vector(v, color='tab:green') # Show [0, 3] in orange (2x the second column, added to the first) w = 2 * v g_col.add_vector(w, start=u, color='tab:orange') g_col.show()
import numpy as np from util.graph import Graph from sympy import * u = np.array([-3, 1]) v = np.array([1, -1 / 3]) # Solve Ax=0 where A = (u v) A = np.array([u, v, [0, 0]]).T A, _ = Matrix(A).rref() A = np.array(A, dtype='float') print(A) k, c = symbols('k c') e = k - (1 / 3) * c print(solveset(e, c)) # FiniteSet(3.0*k) # Show that any value of 1 results in ku + cv = the 0 vector k = 1 c = 3.0 * k print(k * u + c * v) # the 0 vector g = Graph() g.add_vector(u, color='tab:blue') g.add_vector(v, color='tab:green') g.show()
from sympy import * from util.graph import Graph g = Graph() P = Matrix([[0, 0]]).T Q = Matrix([[2, 0]]).T R = Matrix([[0, 3]]).T g.add_vector(P, color='tab:blue') g.add_vector(Q, color='tab:blue') g.add_vector(R, color='tab:blue') A = Matrix([[P, Q, R]]) B = Matrix([[2, 0], [3, 4]]) BA = B * A g.add_vector(BA.col(0), color='tab:green') g.add_vector(BA.col(1), color='tab:green') g.add_vector(BA.col(2), color='tab:green') print('determinant of B:', B.det()) g.show()
from sympy import * from util.graph import Graph u = Matrix([1, 2]) v = Matrix([3, 4]) i = u.T * v print('(i)', pretty(i)) ii = u.norm() * v.norm() print('(ii)', ii) iii = u.norm() + v.norm() print('(iii)', iii) iv = (u + v).norm() print('(iv)', iv) g = Graph() g.add_vector(u) g.add_vector(v) g.add_vector(u + v, color="tab:blue") g.show()
import numpy as np from util.graph import Graph u = np.array([3, -1]) v = np.array([-2, 3]) u_plus_v = u + v print(u_plus_v) g = Graph() g.add_vector(u) g.add_vector(v) g.add_vector(u_plus_v) g.show()
from sympy import * from util.graph import Graph g = Graph() x = Matrix([1, 2]) g.add_vector(x) A = Matrix([[2, 0], [0, 2]]) b = A * x g.add_vector(b, color='tab:blue') A = Matrix([[-1, 0], [0, -1]]) b = A * x g.add_vector(b, color='tab:green') g.show()
import numpy as np from util.graph import Graph g = Graph() u = np.array([-1, 1]) g.add_vector(u, 'tab:blue') v = np.array([3, -1]) g.add_vector(v, 'tab:green') m = np.array([u, v]) print(m) left = np.array([1, None]) left[1] = 1 w = np.dot(left, m) print('a', w) g.add_vector(w) left[1] = -1 w = np.dot(left, m) print('b', w) g.add_vector(w) left[1] = 1 / 2 w = np.dot(left, m) print('c', w) g.add_vector(w)
from sympy import * from util.graph import Graph T = Matrix([[1, -1], [1, 1]]) S = Matrix([[2, 3], [1, -5]]) g = Graph() v = Matrix([[2, 3]]).T g.add_vector(v) result = S * T * v pprint(result) g.add_vector(result) result = T * S * v pprint(result) g.add_vector(result) # 38, shows they are the same ST = S * T pprint(ST * v) TS = T * S pprint(TS * v) g.show()
import numpy as np from util.graph import Graph v = np.array([3, 1]) g = Graph() g.add_vector(0.5 * v) g.add_vector(2 * v) g.add_vector(3 * v) g.add_vector(-v) g.show()
m, _ = m.rref() k = m.row(0)[2] c = m.row(1)[2] print('k and c, respectively:') pprint([k, c]) print('ii') u = Matrix([1, 2]).T # first column of the original matrix v = Matrix([-1, 1]).T # second column of the original matrix # We want a vector [3 2] in terms of u and v, so we use k and c v1 = k.subs([(a, 3), (b, 2)]) * u v2 = c.subs([(a, 3), (b, 2)]) * v v1 = np.array(v1, dtype=float)[0] v2 = np.array(v2, dtype=float)[0] vv = v1 + v2 print('v1', v1) print('v2', v2) print('vv', vv) u = np.array(u, dtype=float).T v = np.array(v, dtype=float).T g = Graph() g.add_vector(v1, color='tab:blue') g.add_vector(v2, color='tab:green') g.add_vector(vv, color='tab:red') g.add_vector(u, color='tab:orange') g.add_vector(v, color='tab:olive') g.show()
import numpy as np from util.graph import Graph from math import acos, cos, sin, pi, degrees print('b') u = np.array([cos(pi / 4), sin(pi / 4)]) print(u) print('c') v = np.array([cos(pi / 4), -sin(pi / 4)]) print('d') n = u @ v d = np.linalg.norm(u) * np.linalg.norm(v) angle_cos = n / d angle = acos(angle_cos) print(degrees(angle)) g = Graph() g.add_vector(u, color='g') g.add_vector(v, color='b') g.show()
import numpy as np from util.graph import Graph u = np.array([-3, 2]) v = np.array([-2, -3]) g = Graph() g.add_vector(u) g.add_vector(v) g.show()
import numpy as np from util.graph import Graph u = np.array([1, 5]) v = np.array([4, 1]) print('i') print(np.linalg.norm(u @ v)) print('ii') print(np.linalg.norm(u) * np.linalg.norm(v)) print('iii') print(np.linalg.norm(u) + np.linalg.norm(v)) print('iv') print(np.linalg.norm(u + v)) g = Graph() g.add_vector(u) g.add_vector(v) g.add_vector(u + v, color='tab:blue') g.add_vector(u, v, color='tab:green') g.show()
import numpy as np from util.graph import Graph from sympy import Matrix u = np.array([-1, 1]) v = np.array([2, 3]) # Solve Ax=0 where A = (u v) A = np.array([u, v, [0, 0]]).T A, _ = Matrix(A).rref() A = np.array(A) print(A) # u and v are linearly independent because scalars k and c = zero g = Graph() g.add_vector(u, color='b') g.add_vector(v, color='g') g.show()
import numpy as np from util.graph import Graph u = np.array([1, -1]) v = np.array([2, 1]) print('e', np.dot(u, v)) print('f', np.dot(v, u)) print('g', np.dot(u, u)) print('h', np.dot(v, v)) g = Graph() g.add_vector(u) g.add_vector(v) g.add_vector(u + v) g.add_vector(u - v) g.show()