Попытка построить систему линейных уравнений с использованием matplotlib в 2D плоскости - PullRequest
0 голосов
/ 18 февраля 2019

Как видно из названия, я пытаюсь построить систему линейных уравнений, чтобы получить точку пересечения двух уравнений.

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 голосов
/ 18 февраля 2019

Для построения линий проще всего, если вы переставите свои уравнения в терминах 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

0 голосов
/ 18 февраля 2019
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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...