使用Julia Symbolics,我可以解方程中的变量吗?

使用Julia Symbolics,我可以解方程中的变量吗?,julia,symbolic-math,Julia,Symbolic Math,我想在y=√((a^2+b^2)) 我尝试的是: julia> using Symbolics julia> @variables a b (a, b) julia> y = √((a^2 + b^2)) sqrt(a^2 + b^2) julia> eq = y = √((a^2 + b^2)) sqrt(a^2 + b^2) julia> eq sqrt(a^2 + b^2) 为了解决这个问题,我试着: julia> Symbolics.sol

我想在
y=√((a^2+b^2))

我尝试的是:

julia> using Symbolics

julia> @variables a b
(a, b)

julia> y = √((a^2 + b^2))
sqrt(a^2 + b^2)

julia> eq = y = √((a^2 + b^2))
sqrt(a^2 + b^2)

julia> eq
sqrt(a^2 + b^2)

为了解决这个问题,我试着:

julia> Symbolics.solve_for(eq,[a])
julia> Symbolics.solve_for(eq,a)
julia> Symbolics.solve_for(y,[a])
julia> Symbolics.solve_for(y,a)
所有这些都导致了错误:

ERROR: type Num has no field rhs

代码中有两个问题。第一个是等式应该有两部分,右侧(即
rhs
)和左侧(即
lhs
)。您的错误消息清楚地指出了问题:
sqrt(a^2+b^2)
是一种
Num
类型,因为
a
b
Num
的变量,因为它们将(假定)计算为数字。在Symbolics.jl中,声明方程式的方法是使用
~
。所以正确的方法来表达你的方程是

@variables a b y
eq = y ~ √((a^2 + b^2))
然而不幸的是,Symbolics.jl现在无法为您解决此问题,因为正如文档所述,
solve\u for
只能解决线性方程组

当前仅当所有方程均为线性时有效。检查expr是否为线性w.r.t变量

因此它将抛出
AssertionError:islinear(ex,vars)
error。但是,您可以使用一些简单的公式,如
a+b
来尝试此函数

julia> eq = y ~ a+b
y ~ a + b
Symbolics.solve_for([eq],[a])
1-element Vector{Num}:
 y - b
顺便说一句:

您可以使用
check=false
参数关闭线性检查,但几乎可以保证Symbolics.jl会给出错误的结果。例如,Symbolics.jl表示等式
y~的结果√((a^2+b^2))
a+y*sqrt(a^2+b^2)*(a^-1)-(a^-1)*(sqrt(a^2+b^2)^2))