Julia: isposdef () рдЧрд▓рдд рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рдЬрдире░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: JuliaLang/julia

isposdef() рджрд╛рд╡рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреБрдЫ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рднреА рдирд╣реАрдВ) рд╕рдХрд╛рд░рд╛рддреНрдордХ-рдЕрд░реНрдз рдирд┐рд╢реНрдЪрд┐рдд рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдЬрдм рд╡реЗ рдирд╣реАрдВ рд╣реИрдВ:

julia> A = [1.69  2.21; 2.21  2.89]
2├Ч2 Array{Float64,2}:
 1.69  2.21
 2.21  2.89
julia> det(A)
0.0
julia> isposdef(A)
true
julia> isposdef(ones(2,2))
false

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИ - рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ isposdef() рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдЪреЛрд▓реНрд╕реНрдХреА рдЕрдкрдШрдЯрди рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрд░реНрдз-рдирд┐рд╢реНрдЪрд┐рдд рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдЪреЛрд▓реНрд╕реНрдХреА рдЕрдкрдШрдЯрди рд╣реЛрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдИрдЖрдИрдЖрд░рд╕реА рдЙрдиреНрд╣реЗрдВ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдирд╣реАрдВ рд╣реИ) . рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд▓реНрд╡реЗрд╕реНрдЯрд░ рдХреЗ рдорд╛рдирджрдВрдб рдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛:

sylvestor(A) = issymmetric(A) & all([det(A[1:j, 1:j]) > 0 for j = 1:size(A)[1]])

рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА:

julia> versioninfo()
Julia Version 0.5.0
Commit 3c9d753 (2016-09-19 18:14 UTC)
Platform Info:
  System: NT (x86_64-w64-mingw32)
  CPU: Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.7.1 (ORCJIT, haswell)

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЪреЛрд▓реНрд╕реНрдХреА рдЧреБрдгрдирдЦрдВрдб рдХреА рдЧрдгрдирд╛ рдХреЗ рджреМрд░рд╛рди рдЧреЛрд▓рд╛рдИ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреА рд╣реИред рдЖрдо рддреМрд░ рдкрд░, рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдореЗрдЯреНрд░рд┐рд╕реЗрд╕ рдХреА рд╡рд┐рд▓рдХреНрд╖рдгрддрд╛ рдХрд╛ рдордЬрд╝рдмреВрддреА рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рдЗрдирд░реА рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдПрдХрд╡рдЪрди рдирд╣реАрдВ рд╣реИ

julia> det(big(A))
2.13162820728030047872728228063319445882714347172137703267935663215914838016073e-16

рдирд┐рд░реНрдзрд╛рд░рдХ рдЖрдорддреМрд░ рдкрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЧрдгрдирд╛рдУрдВ рдореЗрдВ рдХрд╛рдлреА рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╢рдмреНрдж рдЗрддрдиреА рддреЗрдЬреА рд╕реЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд▓реНрд╡рд░рд╕реНрдЯрд░ рдХрд╛ рдорд╛рдирджрдВрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реИред рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рдВрдЧрдгрдирд╛рдУрдВ рдореЗрдВ, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЪреЛрд▓реНрд╕реНрдХреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд╣реА рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрд╛рдлреА рд╕рд╕реНрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрджрд▓реЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рдзрд┐ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рд╕реАрдорд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд▓реЗрдмрд▓ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЪреЛрд▓реНрд╕реНрдХреА рдЧреБрдгрдирдЦрдВрдб рдХреА рдЧрдгрдирд╛ рдХреЗ рджреМрд░рд╛рди рдЧреЛрд▓рд╛рдИ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреА рд╣реИред рдЖрдо рддреМрд░ рдкрд░, рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдореЗрдЯреНрд░рд┐рд╕реЗрд╕ рдХреА рд╡рд┐рд▓рдХреНрд╖рдгрддрд╛ рдХрд╛ рдордЬрд╝рдмреВрддреА рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рдЗрдирд░реА рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдПрдХрд╡рдЪрди рдирд╣реАрдВ рд╣реИ

julia> det(big(A))
2.13162820728030047872728228063319445882714347172137703267935663215914838016073e-16

рдирд┐рд░реНрдзрд╛рд░рдХ рдЖрдорддреМрд░ рдкрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЧрдгрдирд╛рдУрдВ рдореЗрдВ рдХрд╛рдлреА рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╢рдмреНрдж рдЗрддрдиреА рддреЗрдЬреА рд╕реЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд▓реНрд╡рд░рд╕реНрдЯрд░ рдХрд╛ рдорд╛рдирджрдВрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реИред рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рдВрдЧрдгрдирд╛рдУрдВ рдореЗрдВ, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЪреЛрд▓реНрд╕реНрдХреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд╣реА рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрд╛рдлреА рд╕рд╕реНрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрджрд▓реЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рдзрд┐ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рд╕реАрдорд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд▓реЗрдмрд▓ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред

@andreasnoack рдХреНрдпрд╛ рдпрд╣ рдпрд╣рд╛рдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЕрдиреБрдореЛрджрди рдХреЗ рдмрд╛рдж рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред
isposdef(A) тЖТ рдмреВрд▓
рдЪреЛрд▓реНрд╕реНрдХреА рдЕрдкрдШрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд▓реНрд╡реЗрд╕реНрдЯрд░ рдХреА рдХрд╕реМрдЯреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд┐рд░реНрдзрд╛рд░рдХ рд╕рдВрдЧрдгрдирд╛ рдХреЗ рдХрд╛рд░рдг рдЕрд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдПрдХрд╡рдЪрди (рдЧреИрд░-рдЙрд▓рдЯрд╛) рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрд░реНрдз-рдирд┐рд╢реНрдЪрд┐рдд рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪреЛрд▓реНрд╕реНрдХреА рдлрд╝реИрдХреНрдЯрд░рд╛рдЗрдЬреЗрд╢рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд░рд╛рдЙрдВрдбрд┐рдВрдЧ рдФрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдЧреИрд░ рдПрдХрд╡рдЪрди рдмрд╛рдЗрдирд░реА рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдХрд╛рд░рдг рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рдВрдЫрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рдХрд┐ рд╕рд┐рд▓реНрд╡реЗрд╕реНрдЯрд░ рдХреА рдХрд╕реМрдЯреА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕