使用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))