我正在尝试编写一个简单的程序来绘制 x对比y .但是,它似乎没有计算出 y 的正确值。 .
例如在第一种情况下 x = -1 e^(x^2/2 - x) -1 的值应该是 3.48 ,而是返回 1 .
我遇到的另一个错误是它似乎没有绘制 x对比y , 而不是为 x 的每个值单独一行.
import numpy as np
import math
import matplotlib.pyplot as plt
x = np.arange(-2, 2)
y = np.arange(-2, 2)
for i in range(-3, 3):
y[i] = math.exp(( x[i]^2/2 ) - x[i])-1
print x, y
plt.plot([x, y])
plt.show()
请您参考如下方法:
内置的 numpy 数组操作非常适合这个。
这是你想要的行:
y = np.exp(np.power(x, 2)/2 - x) - 1
然后完整代码变为
import numpy as np
import math
import matplotlib.pyplot as plt
x = np.arange(-2, 2)
y = np.exp(np.power(x, 2)/2 - x) - 1
print(x, y)
plt.plot(x, y)
plt.show()
(注意,这里的plot语句也有变化)
详情
如果您在使用 numpy 时开始编写循环,请寻找其他方法。矢量运算可以比相应的 python 代码快得多(有时快几个数量级),这就是人们喜欢它的原因。许多基本操作(+、-、*、/、**) 甚至重载。查看“引用”部分中的最后一项以获取更多信息。
