Julia 微积分简要介绍

Table of Contents

1. 介绍

JuliaMath 下有一个微积分包,闲得没事看看文档,给大家简要整理了一下

  • derivative 求导
  • second_derivative 求二阶导

然而关于积分,文档里说

The Calculus package no longer provides routines for univariate numerical integration. Use QuadGK.jl instead.

他说单变量的积分在这个包中不再支持,可以去使用 QuadGK.jl 包中
我又尝试了下 Calculus 包中的 integrate 函数

f((x, y)) = sin(x) + cos(y)

shortcut.png

我发现,这个错误中的 quadgkQuadGk 中的 quadgk 不是同一个函数,他指的是 Calculus.quadgk
这个函数不存在

另外我去谷歌了一下,发现 Quadgk 不支持多重积分,所以我推荐使用同在 JuliaMath 仓库下的 Cubature.jl
既可以做单变量积分,又可以做多变量积分

2. 使用

2.1. 导数 using Calculus

derivative

derivative(sin, 0) == cos(0)
derivative(sin, 1) == cos(1)
derivative(sin, float(pi)) = cos(float(pi))

2.2. 多元导数 using Calculus

derivative

julia> derivative(f, [1, 1])
2-element Vector{Float64}:
  0.5403023058631036
 -0.8414709847974693

2.3. 积分 using Cubature

hquadrature

julia> (val, err) = hquadrature(x -> x^3, 0, 1)
(0.25, 2.7755575615628914e-15)

(val, err) = hquadrature(f::Function, xmin, xmax;
                         reltol=1e-8, abstol=0, maxevals=0)

其中

  • f 是被积函数
  • xminxmax 是积分区间
  • reltol 表示 required relative error tolerance
  • abstol 表示 required absolute error tolerance
  • maxevals 表示 指定函数评估的(粗略)最大数量

2.4. 多元积分 using Cubature

hcubature

(val,err) = hcubature(f::Function, xmin, xmax;
                      reltol=1e-8, abstol=0, maxevals=0)

只有函数名不同,参数类型不同,其他解释同上

f((x, y)) = x^3 * y^2
hcubature(f, [0,0],[1,1])
julia> hcubature(f, [0,0],[1,1])
(0.08333333333333331, 2.7755575615628914e-17)

3. 补充说明

这份介绍主要是简单介绍,详细内容可以去查看这两个包的文档

Author: Steiner

Created: 2022-04-25 一 23:29

Validate