如何将值数组插入 Python 中的符号函数
How to Insert an Array of Values to a Symbolic Function in Python
我想研究python中的符号函数。我想创建 y(x) = x^2 + 2x + 3
并将其绘制在 [1, 255]
范围内。我想使用 subs()
函数通过 for
循环计算值。但是,当我 运行 出现此错误时:
IndexError('list index out of range')
你能帮帮我吗?
import numpy as np
import matplotlib.pyplot as plot
from sympy import *
a = [1,2,3]
x = Symbol('x')
fx = a[0]*x**2 + a[1]*x + a[2]
t = list(range(1,256))
y = np.zeros(256)
for i in t:
y[i] = fx.subs({x:t[i]})
plot.plot(t,y)
plot.show()
只需替换为以下几行:
y = np.zeros(len(t))
for i in range(len(t)):
y[i] = fx.subs({x:t[i]})
问题是 t
的长度只有 255
但 y
的长度在你的代码中是 256
因为你定义了 y = np.zeros(256)
,因此 Index Error
因为没有 t[256]
。我使用 y = np.zeros(len(t))
是因为您的 y
点与 t
(或 x
)点一样多。顺便说一句,您很可能会像现在这样在 plot 命令中遇到错误,因为您调用了 import matplotlib.pyplot as plot
。我会简单地称它为 plt
而不是 plot
输出
我想研究python中的符号函数。我想创建 y(x) = x^2 + 2x + 3
并将其绘制在 [1, 255]
范围内。我想使用 subs()
函数通过 for
循环计算值。但是,当我 运行 出现此错误时:
IndexError('list index out of range')
你能帮帮我吗?
import numpy as np
import matplotlib.pyplot as plot
from sympy import *
a = [1,2,3]
x = Symbol('x')
fx = a[0]*x**2 + a[1]*x + a[2]
t = list(range(1,256))
y = np.zeros(256)
for i in t:
y[i] = fx.subs({x:t[i]})
plot.plot(t,y)
plot.show()
只需替换为以下几行:
y = np.zeros(len(t))
for i in range(len(t)):
y[i] = fx.subs({x:t[i]})
问题是 t
的长度只有 255
但 y
的长度在你的代码中是 256
因为你定义了 y = np.zeros(256)
,因此 Index Error
因为没有 t[256]
。我使用 y = np.zeros(len(t))
是因为您的 y
点与 t
(或 x
)点一样多。顺便说一句,您很可能会像现在这样在 plot 命令中遇到错误,因为您调用了 import matplotlib.pyplot as plot
。我会简单地称它为 plt
而不是 plot
输出