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
。Doex=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