2015-01-26 11 views
2

Я использую следующий код для построения точек пересечения на графике, а затем визуально проверяя точки пересечения, чтобы вернуться к коду и затенять область выполнимости.Использование Matplotlib и Numpy, есть ли способ найти все пересечения линий для линейных уравнений?

Есть ли лучший способ найти допустимую область, чем просто прорисовывать линии и считывать точки пересечения с графика?

# Filling a polygon locating the corner points 
# Then let Matplotlib fill within these points 
x= [0.0, 0.0, 6.67,5.0] 
y= [0.0, 4.0, .67, 0.0] 
fill(x,y) 
show() 

Полный пример кода:

x= arange(-3,10.1,0.1) 
y= arange(-3,10.1,0.1) 
y1= 0.4*x-2.0 
y2= 4.0-0.5*x 

xlim(-3,10) 
ylim(-3,10) 
hlines(0,-3,10,color='k') 
vlines(0,-3,10,color='k') 
grid(True) 

xlabel('x-axis') 
ylabel('y-axis') 
title ('Shaded Area Shows the Feasible Region') 

plot(x,y1,color='b') 
plot(x,y2,color='r') 
legend(['2x-5y=10','x+2y=8']) 

x= [0.0, 0.0, 6.67,5.0] 
y= [0.0, 4.0, .67, 0.0] 
fill(x,y) 
show() 

ответ

0

Если вы просто хотите, чтобы сделать технико-экономического региона вы можете сделать:

x= arange(-3,10.1,0.1) 
y= arange(-3,10.1,0.1) 
y1= 0.4*x-2.0 
y2= 4.0-0.5*x 

xlim(-3,10) 
ylim(-3,10) 
hlines(0,-3,10,color='k') 
vlines(0,-3,10,color='k') 
grid(True) 

xlabel('x-axis') 
ylabel('y-axis') 
title ('Shaded Area Shows the Feasible Region') 

plot(x,y1,color='b') 
plot(x,y2,color='r') 
legend(['2x-5y=10','x+2y=8']) 

bottom = np.maximum(y1, 0) 
fill_between(x, bottom, y2, where=(x>0) & (y2>y1)) 

enter image description here

+0

Спасибо Alyase, но я нужно знать сюжетные точки. Я обнаружил некоторые признаки того, что возможно что-то вроде объяснения здесь [link] (http://stackoverflow.com/questions/13662525/how-to-get-pixel-coordinates-for-matplotlib-generated-scatterplot), но я не знаю как заставить его работать с моим кодом. – Boerseun

+0

Точка пересечения проста, просто вычислите 'y1-y2' и посмотрите, где она пересекает 0. – elyase

+0

Не могли бы вы объяснить этот фрагмент чуть более подробно:' bottom = np.maximum (y1, 0) '? – bmc

 Смежные вопросы

  • Нет связанных вопросов^_^