用Julia求非线性方程的零点

用Julia求非线性方程的零点,julia,sympy,nonlinear-functions,nonlinear-equation,Julia,Sympy,Nonlinear Functions,Nonlinear Equation,在朱莉娅的交响曲中经过一个过程后,我生成了一个非线性方程组。为了简单起见,我将在这里对一个非线性方程进行近似。我得到的是这样的等式: 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

在朱莉娅的交响曲中经过一个过程后,我生成了一个非线性方程组。为了简单起见,我将在这里对一个非线性方程进行近似。我得到的是这样的等式:

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
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中使用Symphy软件包的解决方案。

在Julia对话中回答了这个问题:

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

作为参考,解决方案是

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])

我认为这是数据类型问题。关于包repo,我认为您使用的是函数nlsolve(f,initial_x::AbstractArray;kwargs..)这里第一个变量是一个函数,它对您来说是
R
,而它接受的第二个变量应该是
Array
,而您提供的是
Float64
数字。尝试以类型数组的形式提供输入。希望这有帮助!!!我尝试了这个,并不断给出错误:nlsolve(R,[5.8])要完全停留在sympy中,就有nsolve。不用尝试,我想朱莉娅的版本会表现得更好,虽然也许可以忽略不计。是的,是我。我在这里问了这个问题后就把它贴了出来。你是如何相互参照的?我必须编辑我的问题并放置链接吗?就像我所做的那样-将链接发布到你提出问题的其他位置!