尝试在2D平面中使用matplotlib绘制线性方程组

时间:2019-02-18 09:44:31

标签: python numpy matplotlib

正如标题所述,我正在尝试绘制线性方程组以获取2个方程的交点。

8a-b = 9

4a + 9b = 7

下面是我尝试过的代码。

import matplotlib.pyplot as plt
from numpy.linalg import inv
import numpy as np

a = np.array([[8,-1],[4,9]])
b = np.array([9,7])
c = np.linalg.solve(a,b)

plt.figure()

# Set x-axis range
plt.xlim((-10,10))
# Set y-axis range
plt.ylim((-10,10))
# Draw lines to split quadrants
plt.plot([-10,-10],[10,10], linewidth=4, color='blue' )


#draw the equations
plt.plot(a[0][0],a[0][1], linewidth=2, color='red' )
plt.plot(a[1][0],a[1][1], linewidth=2, color='red' )

plt.plot(c[0],c[1], marker='x', color="black")

plt.title('Quadrant plot')

plt.show()

我只能得到交点,而不能得到2D平面上的线,如下图所示。

enter image description here

我想要这样的东西。

enter image description here

2 个答案:

答案 0 :(得分:1)

x1 = np.arange(-10, 10, 0.01) # between -10 and 10, 0.01 stepsize
y1 = 8*x1-9

x2 = np.arange(-10, 10, 0.01) # between -10 and 10, 0.01 stepsize
y2 = (7-4*x2)/9

这是行的等式。

现在使用plt.plot(x1,y1)等绘制这些。

plt.figure()
# Set x-axis range
plt.xlim((-10,10))
# Set y-axis range
plt.ylim((-10,10))
# Draw lines to split quadrants
plt.plot([-10,-10],[10,10], linewidth=4, color='blue' )
plt.plot(x1,y1)
plt.plot(x2,y2)

#draw the equations
plt.plot(a[0][0],a[0][1], linewidth=2, color='red' )
plt.plot(a[1][0],a[1][1], linewidth=2, color='red' )

plt.plot(c[0],c[1], marker='x', color="black")

plt.title('Quadrant plot')

plt.show()

答案 1 :(得分:1)

要绘制线条,最简单的方法是将方程式重新排列为b。这样8a-b=9变成b=8a-9,而4a+9b=7变成b=(7-4a)/9

您似乎也想绘制图形的“轴”,我也在下面的代码中对此进行了修复。

以下应该可以解决问题:

import matplotlib.pyplot as plt
import numpy as np

a = np.array([[8,-1],[4,9]])
b = np.array([9,7])
c = np.linalg.solve(a,b)

plt.figure()

# Set x-axis range
plt.xlim((-10,10))
# Set y-axis range
plt.ylim((-10,10))
# Draw lines to split quadrants
plt.plot([-10, 10], [0, 0], color='C0')
plt.plot([0, 0], [-10, 10], color='C0')

# Draw line 8a-b=9 => b=8a-9
x = np.linspace(-10, 10)
y = 8 * x - 9
plt.plot(x, y, color='C2')

# Draw line 4a+9b=7 => b=(7-4a)/9
y = (7 - 4*x) / 9
plt.plot(x, y, color='C2')

# Add solution
plt.scatter(c[0], c[1], marker='x', color='black')
# Annotate solution
plt.annotate('({:0.3f}, {:0.3f})'.format(c[0], c[1]), c+0.5)

plt.title('Quadrant plot')

plt.show()

这给了我以下情节: enter image description here