JuliaPy / SymPy.jl

Julia interface to SymPy via PyCall
http://juliapy.github.io/SymPy.jl/
MIT License
268 stars 62 forks source link

raise TypeError("Cannot convert expression to float") when assigning SymPy expression to an array #481

Closed xiang-yu closed 10 months ago

xiang-yu commented 1 year ago

julia> @syms x, y julia> xx = zeros(2,2) julia> xx[1, 1] = x*y ERROR: PyError (ccall(#= /Users/lixi307/.julia/packages/PyCall/ygXW2/src/conversions.jl:59 =# @pysym(:PyFloat_AsDouble), Cdouble, (PyPtr,), po)) <class 'TypeError'> TypeError('Cannot convert expression to float')

If I define "xx" in type "Any" xx = Array{Any}(undef, 2,2) julia> xx[1, 1] = x*y x⋅y

However, I need a zeros instead of "undef". How to initialise a zero symbolic array using SymPy.jl?

mzaffalon commented 1 year ago

You should use zeros(Sym,2,2):

julia> @syms x, y
(x, y)

julia> xx = zeros(Sym,2,2);

julia> xx[1, 1] = x*y
x⋅y
xiang-yu commented 1 year ago

Thanks. It works well.

mzaffalon commented 1 year ago

This issue can be closed.