猿问

类型错误:列表索引必须是整数或切片,而不是符号

所以,我得到了这段代码来解决我的电路问题(编码spyder):


from sympy.solvers import solve

from sympy import Symbol, simplify


vo = Symbol("vo") #amplitude of output voltage

vr = Symbol("vr") #amplitude of voltage r

ir = Symbol("ir") #amplitude of R-current

ic = Symbol("ic") #amplitude of C-current

il = Symbol("il") #amplitude of L-current

r = Symbol("r") #resistance

omega = Symbol("omega") #angular frequency

c = Symbol("c") #capacitance

l = Symbol("l") #inductance


eq1 = (vr + vo - 1,

 ir - ic - il,

 vr - ir*r,

 vo - ic/(1j*omega*c),

 vo - 1j*omega*l*il)


sol = solve(eq1, (vo, vr, ir, ic, il))

vos = simplify(sol[vo])

print(vos)

print(sol[vo])

输出为:


l*omega/(I*c*l*omega**2*r + l*omega - I*r)

l*omega/(I*c*l*omega**2*r + l*omega - I*r)

这是Vo我当前电路的解决方案


然后我更改了一些部分,eq1因为我要解决Vo另一个电路的问题,如下所示:


eq1 = (ir*(r + 1/ic + il) + vo - 1,

 ir - ic - il - vr/r,

 vr - ir*r,

 vo - ic/(1j*omega*c),

 vo - 1j*omega*l*il)

eq1 是我唯一更改的部分,但是当我运行它时,会出现此错误:


TypeError: list indices must be integers or slices, not Symbol

有谁知道如何解决这个问题?


茅侃侃
浏览 223回答 2
2回答

LEATH

从我所见,您尝试索引列表的唯一地方是在您致电时:sol[vo]vo是 Symbol 类型的对象,但列表要求您使用整数(或切片),正如错误所暗示的那样。例如:sol[5] sol[1:3]因此,您需要先转换vo为整数,然后再使用它来索引列表。
随时随地看视频慕课网APP

相关分类

Python
我要回答