使用Julia求非线性方程的零



在Julia中对SymPy进行处理后,我生成了一个非线性方程组。为了简单起见,我将在这里给出一个非线性方程的近似值。我得到的是这样的方程:

R = (p) -> -5.0488*p + p^2.81 - 3.38/( p^(-1.0) )^2.0

我可以绘制R函数

using Plots
plot(R, 0,8)

我们可以看到R函数有两个零:p=0和5.850<p<8.75.我想找正零点。为此,我尝试了nlsolve函数,但出现了错误:

using NLsolve
nlsolve(R , 5.8)
MethodError: no method matching nlsolve(::var"#1337#1338", ::Float64)
Closest candidates are:
nlsolve(::Any, ::Any, !Matched::AbstractArray; inplace, kwargs...)

首先,nlsolve函数哪里出了问题?

如果可能的话,我将感谢在Julia中使用SymPy包的解决方案。

这个问题已经在这里的Julia讨论中得到了回答:https://discourse.julialang.org/t/find-zero-of-a-nonlinear-equation-using-julia/61974

在多个平台上进行询问时,交叉参考总是很有帮助的。

作为参考,溶液为

using NLSolve
function R(F,p) #p is a vector too, not a number
F[1] = -5.0488*p[1] + p[1]^2.81 - 3.38/( p[1]^(-1.0) )^2.0
end
nlsolve(R , [5.8])

最新更新