Apple M1设备运行LSODA.jl示例遇liblsoda未定义问题求助
在M1 MacBook Pro上使用Julia的LSODA求解ODE时遇到
liblsoda not defined错误 我在M1 MacBook Pro上尝试用Julia通过LSODA求解ODE,同一代码在Linux机器上运行正常,但在Mac上无法运行,甚至LSODA.jl README中的简单示例都报错。以下是已执行的操作及问题详情:
- 安装了适配macOS ARM(M系列)的Julia 1.8.0-rc3实验版;
- 在Julia控制台执行
] add LSODA,成功安装LSODA v0.7.0及相关依赖,安装输出如下:
(@v1.8) pkg> add LSODA Resolving package versions... Updating `~/.julia/environments/v1.8/Project.toml` [7f56f5a3] + LSODA v0.7.0 Updating `~/.julia/environments/v1.8/Manifest.toml` [9e28174c] + BinDeps v1.0.2 [7f56f5a3] + LSODA v0.7.0 [30578b45] + URIParser v0.4.1 [aae0fff6] + LSODA_jll v0.1.1+0
- 运行LSODA README中的最小示例时,出现以下错误:
julia> using LSODA julia> function rhs!(t, x, ydot, data) ydot[1]=1.0E4 * x[2] * x[3] - .04E0 * x[1] ydot[3]=3.0E7 * x[2] * x[2] ydot[2]=-ydot[1] - ydot[3] nothing end rhs! (generic function with 1 method) julia> y0 = [1.,0.,0.] 3-element Vector{Float64}: 1.0 0.0 0.0 julia> tspan = [0., 0.4] 2-element Vector{Float64}: 0.0 0.4 julia> res = lsoda(rhs!, y0, tspan, reltol= 1e-4, abstol = Vector([1.e-6,1.e-10,1.e-6])) ERROR: UndefVarError: liblsoda not defined Stacktrace: [1] lsoda_prepare @ ~/.julia/packages/LSODA/En9TK/src/types_and_consts.jl:88 [inlined] [2] lsoda(f::Function, y0::Vector{Float64}, tspan::Vector{Float64}; userdata::Nothing, reltol::Float64, abstol::Vector{Float64}, nbsteps::Int64) @ LSODA ~/.julia/packages/LSODA/En9TK/src/solver.jl:97 [3] top-level scope @ REPL[5]:1
- 手动编译生成了
liblsoda.dylib且库测试运行成功,但尝试过] build LSODA重建包、在库目录启动Julia、设置LD_LIBRARY_PATH环境变量等方法,均无法解决问题,运行示例仍报相同错误; - 验证Julia安装无问题:使用OrdinaryDiffEq包的Tsit5()求解器运行同一ODE示例,可正常输出结果:
julia> using OrdinaryDiffEq julia> function rhs!(du, u, p, t) du[1]=1.0E4 * u[2] * u[3] - .04E0 * u[1] du[3]=3.0E7 * u[2] * u[2] du[2]=-du[1] - du[3] nothing end rhs! (generic function with 1 method) julia> y0 = [1.,0.,0.] 3-element Vector{Float64}: 1.0 0.0 0.0 julia> tspan = (0., 0.4) (0.0, 0.4) julia> prob = ODEProblem(rhs!,y0,tspan) ODEProblem with uType Vector{Float64} and tType Float64. In-place: true timespan: (0.0, 0.4) u0: 3-element Vector{Float64}: 1.0 0.0 0.0 julia> sol = solve(prob, Tsit5()) retcode: Success Interpolation: specialized 4th order "free" interpolation t: 281-element Vector{Float64}: 0.0 0.0014148463701573728 0.002044917824570354 0.0031082395219656383 0.004077786184478819 0.005515331547111039 0.007190039901585917 0.009125371178864151 0.011053910882556455 0.012779075887510953 ⋮ 0.38962386292571205 0.39105986979707663 0.3924964595438138 0.39393300822861893 0.3953689357731328 0.39680395859574674 0.3982382036135917 0.3996721389859908 0.4 u: 281-element Vector{Vector{Float64}}: [1.0, 0.0, 0.0] [0.9999434113374243, 3.283958368828848e-5, 2.3749078887421564e-5] [0.9999182177955453, 3.554267892392701e-5, 4.623952553065492e-5] [0.9998757150665857, 3.630246922738996e-5, 8.798246418685756e-5] [0.9998369766423073, 3.6462803069599716e-5, 0.00012656055462304005] [0.9997795672802454, 3.646643085493869e-5, 0.00018396628889956693] [0.9997127287562698, 3.6447280004319005e-5, 0.00025082396372578164] [0.9996355450580071, 3.636681631277154e-5, 0.00032808812568000767] [0.99955869263762, 3.601892856283502e-5, 0.0004052884338170678] [0.9994899965749859, 3.4686952113841286e-5, 0.00047531647290014134] ⋮ [0.9855287248204975, 3.3380535729784715e-5, 0.01443789464377367] [0.9854791547754341, 3.3371763645216536e-5, 0.01448747346092161] [0.985429589879464, 3.3361195969757255e-5, 0.014537048924567189] [0.9853800515675893, 3.3349731795215403e-5, 0.014586598700616432] [0.9853305597195883, 3.3338642943875154e-5, 0.014636101637468868] [0.9852811239988389, 3.33290122744337e-5, 0.014685546988887663] [0.9852317399743383, 3.332125091318715e-5, 0.014734938774749495] [0.9851823915340508, 3.331492718519977e-5, 0.014784293538765007] [0.985171094472304, 3.359314691926523e-5, 0.01479531238077784]
目前找不到解决方法,请求帮助。
内容的提问来源于stack exchange,提问作者Vanessa
相关产品推荐
相关产品推荐

