我是一个新手,目前正在尝试绘制此函数,以便我可以选择应该在ChemistryLab中执行实验的x值范围。
我找到了不同的关于绘制函数的文章,它们都适用于像sin(x)这样的泛型函数。但是一旦我输入了我的函数,它就不起作用了。问题已经出现在前两行之后:
import numpy as np
import math
X = np.linspace(0, 512, 256)
f = ((x+22)- math.sqrt((x+22)**2-4*2*x))
--> TypeError: only size-1 arrays can be converted to Python scalars我发现一些帖子说X应该是矢量化的,但是我想不出一个解决方案。
提前感谢您的帮助!
发布于 2021-06-01 04:26:41
创建一个矢量化函数。例如:
equation_func = np.vectorize(math.sqrt)
new_f = equation_func(X)将math.sqrt替换为包含更复杂的方程的函数,您就可以轻松自如了。
发布于 2021-06-01 04:38:10
在Python中实现数学函数的一个好方法可能并不奇怪,就是将其作为Python函数。然后,例如,您可以在列表理解中使用该函数来获得一个值数组:
import numpy as np
import math
import matplotlib.pyplot as plt
X = np.linspace(0, 512, 256)
def f(x):
return x + 22 - math.sqrt((x + 22)**2 - 8 * x)
Y = np.array([f(x) for x in X])
plt.plot(X, Y);

https://stackoverflow.com/questions/67779763
复制相似问题