运行环境:Win11 or Deepin 20.2.3,Python 3.8.5,Julia 1.5.3
没用过Julia语言的话..简介及安装步骤见另一篇文。
话说,博主桃超级开心在10月5日顺利装备上了Win11,虽然除了界面变得像果冻了一些,并没有感觉到很大差别(>▽<)
总之今天是第一篇建立在Win11环境上的博文啦~以后应该再不会有运行环境为Win10的文出现了ㄟ(≧◇≦)ㄏ
今日份的文起源是无聊(×)的我在找一个复杂又无聊的函数的极小值点的时候突发奇想要用Julia语言写,确实也写出来了:
using Optim
using Printf
using Plots
using IntervalArithmetic, TaylorModels
a = 5
b = 5
n = 5
function U(h)
u = zeros(Float64,n)
for i = -a:a
for j = -b:b
for k = 0:n-1
u[k+1] += 4 * 0.128736 * (3^12 * (2.773^2 * (i^2 + j^2 + i*j) + (h + k*2.26)^2)^(-6) - 3^6 * (2.773^2 * (i^2 + j^2 + i*j) + (h + k*2.26)^2)^(-3))
end
end
end
return sum(u)
end
res = optimize(U, 0.0, 12.5)
Printf.@printf "极小值点 %.2f\n" Optim.minimizer(res)
Printf.@printf "极小值 %.2f\n" Optim.minimum(res)
############## 画图 #############
#=
h = range(0.0,stop=12.5,step=0.001)
PES = Plots.plot(h,U.(h),xlims=(0,12.5),ylims=(-2,10),size=(1000,600),lw=5,lab="Potential-energy-curve at S-site",dpi=300,axis = font(20),legendfont=(20))
y = 0
Plots.hline!([0],ls=:dash,lw=3,lab="")
Plots.scatter!([Optim.minimizer(res)], [U(Optim.minimizer(res))], lab="",ms=10)
Plots.savefig(PES, "PES.png")
=#
就是上面这个U(h),但是我其他处理数据的代码都是Python写的。现在想要调用U了,我还得在Python里面再输入一遍。。这怎么能行?重复劳动没前途,于是继续又开发了一下在Python中调用Julia函数的技能。
步骤很简单(所以我前面水了一堆废话):
- 命令行
pip3 install julia
- Julia REPL,先输入
]
,进入pkg>模式,输入add PyCall
- Python REPL>>>
julia.install()
然后Julia和Python就成功在一起啦!
在Python脚本调用test.jl文件中U(h)函数的方法:
from julia import Main
Main.include("test.jl")
print(Main.U(5))
如果要在Deepin系统(或者其他Debian系统上,以及在Windows系统里用conda安装的Python)实现Python调用Julia的话,前面的操作是类似的,但可能最后会报错,说“Your Python interpreter is statically linked to libpython”。可以选择简单的,在Python前面加上两行,也就是:
from julia.api import Julia
jl = Julia(compiled_modules=False)
from julia import Main
Main.include("test.jl")
print(Main.U(5))
这样会使程序变慢,更彻底的选择是自己重装Python,详细可以参考官方手册上的说明。
我在deepin系统上并没有安装anaconda环境,而是直接在terminal运行python脚本。我没有遇到你这个问题,不确定是什么原因导致的QAQ
您好作者 很幸运也很高兴能读到您写的这篇blog 目前我正在用anaconda环境创建python的工程去做一些运算 我的情况和你一样 有一部分程序是julia写的 我现在已经从官网下载julia的安装包然后添加路径后能在我的ubuntu20系统下运行 julia的脚本也运行的很成功 但是 按照您的方法 我不知道为什么到 Python REPL>>>julia.install() 这一步的时候 提示错误 我是打开terminal然后切换到anaconda的自定义环境中下尝试的 然后又把之前的julia安装路径和安装包删掉 还是不行 不知道怎么解决 希望能得到博主的回复和建议