我知道函数的范围,但是我不能画图。我试图以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()
我以为这会画一个图,但是不会。
答案 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()