我知道函数的范围,但是我不能画图

时间:2019-06-09 08:32:26

标签: python matplotlib

我知道函数的范围,但是我不能画图。我试图以y形式绘制5x^2 - 4xy + 2y^2 = 30的表达式。并且,结果如下:

y = ±sqrt((240 - 24 x^2)/4) + x (x ≤ 10^(1/2) , x ≥ -10^(1/2)

我想画一个叫y的图,但是范围如上。我不知道如何设置x ≤ 10^ (1/2)之类的范围,如果您知道如何更有效地绘制图形,请提出建议。下面的代码是我到目前为止编写的代码:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-10,10,1000000)
c = np.sqrt((240 - 24 * x ** 2) / 4) + x

y = c
y1 = - c

plt.plot(x, y ,'r')
plt.plot(x, y1, 'b')
plt.ylim(-10,10)
plt.xlim(-10,10)
plt.grid()
plt.xlabel('x')
plt.ylabel('i')
plt.show()

我以为这会画一个图,但是不会。

2 个答案:

答案 0 :(得分:0)

我尝试运行您的代码并收到此错误:

c = np.sqrt((-240 * 24 * x ** 2) / 4) + x
RuntimeWarning: invalid value encountered in sqrt

我认为您正在尝试对负数根求平方

答案 1 :(得分:0)

为什么要限制y:plt.ylim(-10,10) x值在(x≤10 ^(1/2),x≥-10 ^(1/2)而不是Y

所以您知道要删除:plt.ylim(-10,10)

,您在不使用保持功能的情况下绘制了两个图,这将删除第一个图并显示第二个图 如果要同时显示它们,则必须使用保持功能

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-10,10,1000000)
c = np.sqrt((240 - 24 * x ** 2) / 4) + x

y = c
y1 = - c

plt.plot(x, y ,'r')
plt.hold(True)
plt.plot(x, y1, 'b')
#plt.ylim(-10,10)
plt.xlim(-10,10)
plt.grid()
plt.xlabel('x')
plt.ylabel('i')
plt.show()