import matplotlib.pyplot as plt
import numpy as np
import math
"""
Simple little 2x2 system example:
x + 2y = 1
3x + 5y = 2
This can be written as matrix form [A][x] = [B]:
[1 2][x] = [1]
[3 5][y] [2]
"""
A = np.array([[1, 2],
[3, 5]])
B = np.array([1, 2])
XMIN, XMAX = -5, 5
YMIN, YMAX = -5, 5
GRIDSIZE = 1
STEPS = 101
a11 = A[0][0];
a12 = A[0][1];
a21 = A[1][0];
a22 = A[1][1];
b11 = B[0];
b12 = B[1];
def f(x):
return (-a11*x+b11)/a12
def g(x):
return (-a21*x+b12)/a22
x = np.linspace(XMIN,XMAX,STEPS)
plt.axis([XMIN,XMAX,YMIN,YMAX])
y1v = np.zeros(len(x))
y2v = np.zeros(len(x))
for i in range(len(x)):
try:
y1v[i] = f(x[i])
y2v[i] = g(x[i])
except:
pass
try:
solution = np.linalg.solve(A, B)
print("Solution")
print(solution)
solutionpoint = "(${0:.2f}, ${1:.2f})".format(solution[0], solution[1]);
plt.plot(solution[0],solution[1],'bo'); # blue circle
plt.annotate( solutionpoint,(solution[0],solution[1]));
except:
print("No solution")
eq1 = "{0}x+{1}y={2}".format(a11,a12,b11);
eq2 = "{0}x+{1}y={2}".format(a21,a22,b12);
plt.plot(x,y1v, color='r',label=eq1)
plt.plot(x,y2v, color='g',label=eq2)
# make axes
plt.axhline(y=0, color='k') # 'k' means black
plt.axvline(x=0, color='k')
# gca is get current axes
plt.gca().set_aspect('equal')
plt.gca().set_xticks(np.arange(XMIN,XMAX,GRIDSIZE))
plt.gca().set_yticks(np.arange(YMIN,YMAX,GRIDSIZE))
plt.grid(True)
plt.legend()
plt.show()
Wednesday, July 24, 2024
Python linear 2x2 system
This is a fun tool for any algebra 1 student. Solve a 2x2 linear system, and graph it.
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment