Julia将符号引擎表达式写入文件

Julia将符号引擎表达式写入文件,julia,symengine,Julia,Symengine,当我尝试将表达式从代码写入文件时,我收到一个错误: MethodError:没有与写入匹配的方法(::IOStream,::symmengine.Basic) 我使用的代码被认为是将表达式写入文件,然后在其他程序中从文件中获取表达式。这是我的密码: using SymEngine function Legendre(n) @vars x a = 1 Pn = (x^2-1)^n for k = (1:n) Pn = diff(Pn,x) a = a*2*k

当我尝试将表达式从代码写入文件时,我收到一个错误:

MethodError:没有与写入匹配的方法(::IOStream,::symmengine.Basic)

我使用的代码被认为是将表达式写入文件,然后在其他程序中从文件中获取表达式。这是我的密码:

using SymEngine

function Legendre(n)
 @vars x
 a = 1
 Pn = (x^2-1)^n

 for k = (1:n)
     Pn = diff(Pn,x)
     a = a*2*k
        end

       Pn = Pn/a
end

function Asos_Legendre(n,s)
 @vars x
 Pn=Legendre(n)
        for l = (1:s)
            Pn = diff(Pn,x)
        end
        a = (1-x^2)^(s/2)*(-1)^(s)
        Pn = Pn*a

end

function Asos_Legendre_diff(n,s)
 @vars x
        Pn=Asos_Legendre(n,s)
        Pn1 = diff(Pn,x)
        d = (1-x^2)^(s/2)*(-1)^s
        b = x*(-1)^(s+1)*s*(1-x^2)^(s/2-1)
        a = Pn1*d + Pn*b

    open("C:/stj/Julia/test3.txt", "w") do f
            write(f,)
        end
end

也许有一种方法可以将
symmengine.Basic
对象转换为
String
并反转?我可以将它们写为
字符串
,然后将它们转换回
symmengine

Do
ex=convert(Expr,b)
symmengine.Basic
更改为
Expr
。从那里,您可以
转换(String,ex)
,或者如果您尝试将其写入文件,则它将自动转换为字符串。

谢谢您的帮助。我使用
convert
函数将
symmengine
输出的类型
Expr
repr
函数更改为字符串。但现在要做的是相反的任务。我从文件中读取值,使用
parse
函数将其转换为
Expr
。现在如何将其转换为一些
f(x)
功能模拟?例如,如果
3.0x
是表达式,则当我将
2
放入表达式时,我希望接收
6
。我试图使用
eval
函数,但收到一个错误
LoadError:UndefVarError:x未定义
下面是代码:
open(“C:/stj/Julia/test3.txt”,“r”)do f
a=readline(f)
d=a[2:end]b=parse(d)println(“b”)println(b)println(typeof(b))x=0.5c=eval(b)println(“c=$c”)结束
.txt
fie::(3.0x)的内容,这是一个不同的问题。StackOverflow是一个问题的一个答案。要问一个新问题,提出一个新问题。我不知道如何回答这个问题。如果您试图写入一个文件,然后将其读回,那么写入字符串是完全不正确的方法。为什么不直接使用JLD2或BSON.jl来做呢?我已经解决了。我使用
parse
函数来获得一个表达式,然后给该函数一个
x
,并使用
eval
函数。如果将来有人面临这样的问题,下面是代码:
函数evaluate(x)f=open(“/home/fatima/az_cosm_pract/test3.txt”,“r”)a=readline(f)d=a[2:end]:b=parse(d)println(“b”)println(b)println(typeof(b))\x=0.5c=eval(b)println(“c=$c”)end