我正在尝试编写一个简单的程序来绘制 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 代码快得多(有时快几个数量级),这就是人们喜欢它的原因。许多基本操作(+
、-
、*
、/
、**
) 甚至重载。查看“引用”部分中的最后一项以获取更多信息。
引用资料
关于Python 没有正确计算方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32869206/