2017-09-17 97 views
0

我有一個函數2 * X * arcctg(X) - 1,我嘗試繪製它在Python:Python的繪圖三角FUNC

import os 
import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(0, np.pi/2) 
y = 2 * x * np.cos(2 * x)/np.sin(2 * x) 
plt.plot(x, y) 
plt.axis('tight') 
plt.show() 

,但它的情節smthg這樣的: Wrong pic in python 當我把它繪製在它的外觀上:

Right plot in Wolfram 我在做什麼錯?

+2

那麼對於初學者,'arcctg(X)'是不是'COS(2個)/罪(2X)'。 –

回答

3

的功能應該是:

2*x*arcctg(x) - 1 

arcctg(x)cos(2x)/sin(2x)(您在代碼中描述的表達)。 A ctg合作,因此cos(x)/sin(x)。這意味着arcctg(x)arctan(1/x)

所以,你可以使用:

import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(0, np.pi/2) 
y = 2 * x * np.arctan(1/x) - 1 
plt.plot(x, y) 
plt.axis('tight') 
plt.show()

這將產生以下情節:

The plot of 2x arcctg(x) - 1

與問題中的情節相匹配。

如果你想使劇情看起來比在Wolfram Alpha的更多,你可以像@MSeifert說,設置的範圍從-pi/2到pi/2,如:

import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(-np.pi/2, np.pi/2, 1000) 
y = 2 * x * np.arctan(1/x) - 1 
plt.plot(x, y) 
plt.axis('tight') 
plt.show()

這就產生:

plot with different bounds

+0

@MSeifert:因爲OP導入'os'。所以我的猜測是,他/她保存圖像。但在這種情況下,它確實不相關。 –

+0

啊,好的。只是另一個建議:'x = np.linspace(-np.pi/2,np.pi/2,10000)'會更準確地匹配wolfram輸出,並避免'0'處的無效值(至少與linspace創建的點數不奇怪) – MSeifert

+0

@ MSeifert:謝謝。我已經用你的建議更新了答案:)。 –