NumericalAnalysis.Fundamentals
NumericalAnalysis.Fundamentals.Polynomial — TypePolynomial{T}(coe::Vector{<:Real}, roots::Vector{<:Real}) where T <: Real
Polynomial(coe::Vector{<:Real}, roots::Vector{<:Real}=Vector{Int}())(实)多项式类
\[p(x)=a_nx^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0, \quad a_n\neq 0.\]
参数
T<:Real: 类型参数, 若没有显式给定, 则隐式地由多项式系数coe的元素类型决定. 若显式给出, 可与coe的元素类型不一致, 但必须要有promote_type(T, eltype(coe))==T, 此时将会对coe做类型提升处理.coe::Vector{<:Real}: 多项式的系数 $[a_n,a_{n-1},\cdots,a_1, a_0]$, 按幂次降序排列, 并且对于非常数多项式要求coe[1]非零, 即最高次项系数不为零.roots::Vector{<:Real}: 多项式的根, 默认为(整型)空向量
例子
coe = [1, 2, 0, 4] # 系数
p = Polynomial(coe) # Polynomial(x^3+2x^2+4)
q = Polynomial{Float64}(coe) # Polynomial(x^3+2.0x^2+4.0)NumericalAnalysis.Fundamentals.Polynomial — Method(::Polynomial)(::Real)将多项式实例变为一个函数, 调用 evaluate 或 qevaluate 计算多项式的值.
例子
p = Polynomial(rand(4))
x = randn()
p(x) # == evaluate(p, x)Base.:* — Method*(::Polynomial, ::Polynomial)多项式的乘法, 利用快速傅立叶变换.
Base.:* — Method*(::Real, ::Polynomial)多项式标量乘法
Base.:+ — Method+(::Polynomial, ::Polynomial)多项式加法.
Base.:- — Method-(::Polynomial, ::Polynomial)多项式减法.
Base.:- — Method-(p::Polynomial)给定多项式 p, 返回其加法逆元 -p.
Base.:== — Method==(::Polynomial, ::Polynomial)通过比较两个多项式的系数向量(值与类型)比较两个多项式是否相等.
Base.getproperty — Method将上面求出的多项式次数作为多项式本身的性质.
例子
p = Polynomial([1, 3, 4])
p.degreeBase.iszero — Methodiszero(::Polynomial)判断一个多项式是否为 0 多项式.
Base.show — Methodshow(::io, ::MIME"text/plain", ::Polynomial)输出可视化
Base.zero — Methodzero(::Type{Polynomial{T}})
zero(::Type{Polynomial})生成 T 类型的 0 多项式, 若 T 未给出, 则默认为整型.
NumericalAnalysis.Fundamentals.degree — Methoddegree(p::Polynomial)::Int多项式 p 的次数, 0 多项式的次数设为 -1.
NumericalAnalysis.Fundamentals.evaluate — Methodevaluate(p::Polynomial, x::Real)秦九韶算法求多项式值 p(x).
例子
p = Polynomial([1, 2, 3, 0, -1])
evaluate(p, 1.2)NumericalAnalysis.Fundamentals.from_roots — Functionfrom_roots(roots::Vector{<:Real}, a::Real=1) :: Polynomial使用根向量 roots 生成多项式, a 为最高次项系数.
例子
roots = [1, 2, 3]
p = from_roots(roots)NumericalAnalysis.Fundamentals.isconstant — Methodisconstant(::Polynomial)判断一个多项式是否为常多项式.
NumericalAnalysis.Fundamentals.qevaluate — Methodqevaluate(p::Polynomial, x::Real)已知多项式 p 的根全为实根, 并且由 p.roots 给出, 使用 $\Pi_{1\leqslant k\leqslant n}(x-x_i)$ 计算值 p(x), 这里 $(x_1,x_2,\cdots, x_n)$=p.roots, $n$=p.degree.
NumericalAnalysis.Fundamentals.∂ — Method∂(::Polynomial)给定一个多项式, 得到其导多项式, 用法为 ∂(p), p 为某一多项式.