跳至内容

脉冲星和中子星/Julia 入门教程 - 脉冲星天文学家

来自维基教科书,开放的书籍,为了开放的世界

Julia 是一种相对较新的语言,它非常强大,但目前文档难以查找和理解。在这里,我们提供一些对脉冲星天文学家感兴趣的笔记。维基百科上的许多图都是使用 Julia 制作的。Julia 可以轻松地 [下载 并安装到大多数计算机上。它有自己的强大例程,但也可以直接使用 Python 或 C 代码。它专为并行或分布式计算而设计,程序员为代码运行的速度感到自豪——它比 Python 快得多。

Julia 可以从个人电脑运行,使用 Julia 笔记本或使用网络托管服务。Julia 可以用作简单的计算器

julia> 3+3
6
julia> x=10
10
julia> x+2
12

也可以编写代数表达式(比大多数语言更简单)

julia> x=10
10
julia> 2x
20
julia> 2*x
20

字符串可以轻松创建

julia> x="Hello";
julia> x
"hello"

请注意行末使用“;”。如果使用,则该行不会输出任何内容。

创建值数组

[编辑 | 编辑源代码]
julia> x=linspace(0,99,100)
julia> x+10

将分配 100 个值,从 0 到 99。第二个命令将为数组中的每个元素加 10。

要设置初始化为零的数组,我们可以使用

julia> x=zeros(100)

将分配一个包含 100 个零的数组。

要分配均值为零、方差为 1 的随机高斯噪声,我们可以编写

julia> x = randn(100) # Gaussian, random noise
julia> y = rand(100) # Linear, random deviates between 0 and 1

请注意 # 符号用作注释。

制作图表

[编辑 | 编辑源代码]

在 Julia 中制作图表有多种方法,但它们需要添加新的包。这些包是

  • PyPlot
  • Winston
  • Gaston

要安装包,例如:

julia> Pkg.add("Gaston")

Gaston 基于 gnuplot,gnuplot 需要在您的系统上独立安装。

julia> Pkg.add("Gaston")  # This only needs to be done once
julia> using Gaston;
julia> set_terminal("x11");
julia> x=randn(1000); # Set some random numbers
julia> plot(x) # Note not using a semi-colon here as we want to see the result

我们也可以使用两个数组

julia> using Gaston;
julia> set_terminal("x11");
julia> x=linspace(0,100,1000);
julia> y=randn(1000); # Set some random numbers
julia> plot(x,y)

这将生成 MATLAB 风格的图表

julia> using Winston;
julia> x=linspace(0,100,1000);
julia> y=randn(1000); # Set some random numbers
julia> plot(x,y,"b") # Plot as a blue line
julia> plot(x,y,"r") # Plot as a red line
julia> plot(x,y,"ro") # Plot as red open circles
julia> plot(x,y,"x") # Plot as red crosses
julia> oplot(x,y,"b") # Overplot the current figure using a blue line
julia> xlabel("My x-label") # Add an x-label to the current figure
julia> ylabel("My y-label (\\mus s)") # Add a y-lable to the current figure. Note the use of LaTeX symbols
julia> title("This is my title") # Add a title to the plot
julia> savefig("try.png") # Save a png file of the figure in the local directory

图表也可以从多个组件构建,如下所示

julia> using Winston;
julia> p = FramedPlot(xlabel="x-label",ylabel="y-label",xlog=true,ylog=true,xrange=(9e-4,20),yrange=(1e-14,1e-9)) # Note the setting of labels and logarithmic scaling and ranges.
julia> x = abs(randn(1000))
julia> y = abs(randn(1000))*1e-11
julia> pts = Points(x,y)
julia> add(p,pts) # This will draw the figure as requested
julia> closefig() # This closes the current figure
julia> x2 = abs(randn(1000))
julia> y2 = abs(randn(1000))*1e-11
julia> l = Curve(x2,y2,"type","dotted") # this will now add a dotted line
julia> setattr(pts,label="My data points");  # Set a label
julia> setattr(l,label="a dotted line");
julia> leg = Legend(.1,.9, {pts,l})
julia> add(p,pts,l,leg)

Pyplot 使用 python 绘图例程

julia> using PyPlot
julia> x=linspace(0,100,1000);
julia> y=randn(1000); # Set some random numbers
julia> p = plot(x,y)
julia> xlabel("My x label")
julia> ylabel("My y label")
julia> title("My title")
julia> grid("on")
julia> cla() # Clear the figure
julia> p = plot(x,y,linestyle="-.",marker="None",label="Base Plot",color="red") # Plot using dotted lines in red

可以使用以下方法绘制 Aitoff 投影

julia> using PyPlot
julia> subplot(projection="aitoff")
julia> grid("on")

读取和写入文件

[编辑 | 编辑源代码]

数学例程

[编辑 | 编辑源代码]
华夏公益教科书