【发布时间】:2021-08-16 05:21:34
【问题描述】:
在使用 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
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 包的解决方案。
【问题讨论】:
-
我认为这是数据类型问题。参考包回购,我认为你正在使用这个
function nlsolve(f, initial_x::AbstractArray; kwargs..)这里第一个变量是一个函数,它是R,而它接受的第二个变量应该是Array,而你正在提供一个@987654327 @ 数字。尝试将输入作为类型数组。希望这会有所帮助!!! -
我试过了,一直报错:nlsolve (R, [5.8])
-
要完全留在 sympy 中,有 nsolve。如果不尝试,我猜 julia 版本的性能会更好,尽管可能可以忽略不计。
标签: julia sympy nonlinear-functions nonlinear-equation