【发布时间】:2021-11-16 17:31:33
【问题描述】:
在我的程序中,我使用 sympy 来获取一组常量(r、a、b 和 tau)的解析表达式,然后将 r 的图形绘制为 l 的函数。首先,我这样定义我的常量:
import sympy
import numpy
import matplotlib.pyplot as plt
[z1, z2, z3, k2] = [1, 2, 4, 2 * numpy.pi]
l = sympy.Symbol('l')
r = sympy.Symbol('r')
tau = sympy.Symbol('tau')
base = numpy.linspace(0, 10, 10000)
然后我定义并计算我的矩阵(其中 M2 是 [r, a, b, tau] 的转置):
M1 = sympy.Matrix([[-1, 1, 1, 0],
[1, z1/z2, - z1/z2, 0],
[0, sympy.exp(- 1j * k2 * l), sympy.exp(1j * k2 * l), -1],
[0, - sympy.exp(- 1j * k2 * l), sympy.exp(1j * k2 * l), z2/z3],
])
M3 = sympy.Matrix([[1], [1], [0], [0]])
M2 = (M1 ** -1) * M3
然后我尝试使用:
sympy.plot(M2[0].subs(l, base), base)
这会导致以下错误:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Program Files\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev \_pydev_bundle\pydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "C:\Program Files\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "matrix solver.py", line 47, in <module>
sympy.plot(M2[0].subs(l, base), base)
File "AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\plotting\plot.py", line 1641, in plot
plot_expr = check_arguments(args, 1, 1)
File "AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\plotting\plot.py", line 2302, in check_arguments
assert all(isinstance(e, Expr) for expr in exprs for e in expr)
AssertionError
【问题讨论】: