我必須繪製兩個圖表。問題:繪製幾個Y值vs X
f1 = x1*(x2-1)
f2 = x1^2+x2^2
限制:
x2 <= x1
x1 <= x2*4
0 <= x1 <= 1
0 <= x2 <= 1
我要繪製兩個圖表所有可能的值。 1 - x1與x2; 2 - f1與f2。 對於限制x2 < = x1和x1 < = x2 * 4我想出了x2<=x1<=x2*4
,所以它更容易編碼。
我試着創建一個小代碼,它會創建x1和x2,但不幸的是沒有運氣。
x1 = []
for n in range(1,1000,1):
x1.append(n/1000) #Couldn't find a better solution to create a list between 0 and 1
pValues11 = []
for n in range(1,10000,1):
pValues11.append(n/10000)
x2 = []
for index,n in enumerate(x1):
x2.append([])
for m in pValues11:
if n <= m and m <= 4*n:
x2[index].append(m)
x2創建列表的列表,而x1則像索引。但是,如果我嘗試繪製出來:
plt.plot(x1,x2,'bo')
plt.show()
我收到ValueError: setting an array element with a sequence.
總而言之,我認爲這是解決這個問題的一個混亂的方式,但我不知道該怎麼做乾淨。
結果應該是這樣的,我同學的:
我建議熟悉'numpy'。例如,你可以調用'numpy.linspace(0,1,1000)'產生'x1'(儘管它也會包含'1000')。 'pValues11'也一樣。我不確定你實際想要達到什麼,但是你可以將'x2'轉換成'numpy'二維數組(即矩陣),並繪製每個'x2'與'x1'的列:'plot(x1,numpy .array(×2))'。對於所有這些,你必須首先「輸入numpy」。我相信你當前的代碼會產生大量的零,因爲'python'默認使用整數除法,所以'999/1000 == 0'。 –
澄清我想達到的目標 - http://i.imgur.com/FlRNgSF.jpg –
您確定沒有任何限制嗎?或者你的規格是正確的?首先你說'x2