【发布时间】:2019-10-26 14:01:34
【问题描述】:
我有一个要执行的函数,它已经编译,但是执行时它显示了一个 MethodError,这里是函数
对于这个函数,我使用的是 SymPy
function op_mat(op)
op = op.as_poly(domain="C")
op_a = op.x.gens
nab = op.length()
op_ab = ones(SymPy.Sym, nab)
coef = zeros(Complex, nab)
mat = zeros(Int64, length(op_a), nab)
for (i, (ps, c)) in enumerate(op.as_dict())
for (j, p) in enumerate(ps)
mat[j, i] = p
op_ab[i] = op_a[j]^p * op_ab[i]
end
coef[i] = c
end
return op_a, op_ab, mat, coef
end
我收到的错误消息是这样的:
Complex(::T<:Number) where T<:Number at boot.jl:718
Complex(::Real) at complex.jl:16
Complex(::T<:Real, ::T<:Real) where T<:Real at complex.jl:12
...
Stacktrace:
[1] convert(::Type{Complex}, ::Sym) at ./number.jl:7
[2] setindex!(::Array{Complex,1}, ::Sym, ::Int64) at ./array.jl:766
[3] op_mat(::Sym) at ./REPL[3]:13
[4] top-level scope at REPL[7]:1
【问题讨论】:
-
coef[i] = c中的c是什么类型?在该行之前添加@show typeof(c) -
你能添加调用函数的示例多项式吗?
-
尝试用 N(c) 赋值?
-
对于多项式,您可以尝试一个简单的多项式,例如
op=x+y其中x=symbols("x")和y=symbols("y") -
c的类型是Sym@giordano