ジュリアで多項式を使用する方法
概要
Polynomials.jl
は多項式関数の表現や計算を含むパッケージだ。数学的に単純な多項式だからコーディングも簡単に考えがちだが、実際に必要な機能を実装し始めると、結構面倒だ。もちろんものすごく難しいわけではないが、できればパッケージを使用しよう。
パッケージの全ての機能をまとめたわけではなく、役に立ちそうなものだけをピックアップしたので、詳しくはリポジトリをチェックしてほしい1。
一般的な多項式関数
係数で多項式関数を定義する Polynomial()
julia> using Polynomials
julia> p = Polynomial([1,0,0,1])
Polynomial(1 + x^3)
julia> q = Polynomial([1,1])
Polynomial(1 + x)
julia> r = Polynomial([1,1], :t)
Polynomial(1 + t)
julia> p(0)
1
julia> p(2)
9
Polynomial{T, X}(coeffs::AbstractVector{T}, [var = :x])
- それ自体が多項式関数を返す。
coeffs
は係数の配列で、最初が定数項で、後ろに行くほど高次項になる。 var
では多項式関数の変数を与える。例のようにシンボル:t
を入れるとt
の多項式になる。
データで多項式関数を定義する fit()
julia> fit([-1,0,1], [2,0,2])
Polynomial(2.0*x^2)
fit(::Type{RationalFunction}, xs::AbstractVector{S}, ys::AbstractVector{T}, m, n; var=:x)
- $x$の座標が
xs
で、$y$の座標がys
の点を通る多項式関数を返す。
根で多項式関数を定義する roots()
julia> fromroots([-2,2])
Polynomial(-4 + x^2)
fromroots(::AbstractVector{<:Number}; var=:x)
- 与えられた配列の要素が根になるような多項式関数を返す。
演算 +
, -
, *
, ÷
julia> p + 1
Polynomial(2 + x^3)
julia> 2p
Polynomial(2 + 2*x^3)
スカラーを加えたり乗じたりすると、上のように直感的に演算される。
julia> p + q
Polynomial(2 + x + x^3)
julia> p - q
Polynomial(-x + x^3)
julia> p * q
Polynomial(1 + x + x^3 + x^4)
julia> p ÷ q
Polynomial(1.0 - 1.0*x + 1.0*x^2)
多項式関数間の四則演算は、+
, -
, *
, ÷
でオーバーライドされる。
根を求める roots()
julia> roots(p)
3-element Vector{ComplexF64}:
-1.0 + 0.0im
0.4999999999999998 - 0.8660254037844383im
0.4999999999999998 + 0.8660254037844383im
roots(f::AbstractPolynomial)
微分 derivative()
julia> derivative(p, 3)
Polynomial(6)
derivative(f::AbstractPolynomial, order::Int = 1)
f
のorder
次の導関数を返す。
積分 integrate()
julia> integrate(p, 7)
Polynomial(7.0 + 1.0*x + 0.25*x^4)
integrate(f::AbstractPolynomial, C = 0)
- 積分定数が
C
のf
の不定積分を返す。
特別な多項式関数
ローラン多項式関数 LaurentPolynomial()
julia> LaurentPolynomial([4,3,2,1], -1)
LaurentPolynomial(4*x⁻¹ + 3 + 2*x + x²)
LaurentPolynomial{T,X}(coeffs::AbstractVector, [m::Integer = 0], [var = :x])
- 次数が整数に拡張されたローラン多項式関数を返す。
- 最小項の次数は
m
で与えられる。
チェビシェフ多項式関数 ChebyshevT()
julia> ChebyshevT([3,2,1])
ChebyshevT(3⋅T_0(x) + 2⋅T_1(x) + 1⋅T_2(x))
ChebyshevT{T, X}(coeffs::AbstractVector)
- 第一種チェビシェフ多項式関数を返す。式の
T_n(x)
は$T_{n}(x) = \cos \left( n \cos^{-1} x \right)$を表す。
環境
- OS: Windows
- julia: v1.6.2