Julia: рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕

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

рдЕрдм рдЬрдмрдХрд┐ .op рдЖрдо рддреМрд░ рдкрд░ op рдХрд╛ рд╕рджрд┐рд╢ рд░реВрдк рд╣реИ, рдпрд╣ рдмрд╣реБрдд рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдХрд┐ .' рдХрд╛ рдЕрд░реНрде рд╣реИ ' рдХреЗ рд╕рджрд┐рд╢ рд░реВрдк рдХреЗ рдмрдЬрд╛рдп рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХрд░рдирд╛ (рдЖрд╕рдиреНрди, рдЙрд░реНрдл тАЛтАЛctranspose ) рдпрд╣ рдореБрджреНрджрд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдФрд░/рдпрд╛ рдЖрд╕рдиреНрди рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

linear algebra parser

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

tr(A) рдорд╛рдзреНрдп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рдмрд╣реБрдд рдкреБрд░рдЬреЛрд░ рд╡рд┐рд░реЛрдз - рд╣рд░ рдХреЛрдИ рдпрд╣ рд╕реЛрдЪрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрд░реНрде рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЯреНрд░реЗрд╕ рд╣реИ: https://en.wikipedia.org/wiki/Trace_ (linear_algebra)

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

рдПрдВрдбреНрд░рд┐рдпрд╛рд╕ рдиреЗ #19344 рдореЗрдВ Aс╡А (рдФрд░ рд╢рд╛рдпрдж Aс┤┤ ) рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ред рд╣рдо рдЗрд╕реА рддрд░рд╣ ^ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдШрд╛рддрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ T (рдФрд░ рд╢рд╛рдпрдж H ) рдХреЗ рд╕рд╛рде рдкрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ A^T рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЫрд╛рдпрд╛рджрд╛рд░ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрдИ рдЕрдиреНрдп рдЕрдЪреНрдЫреЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдЬреЛ рдЕрднреА рднреА рдЧрдгрд┐рдд рд╕рдВрдХреЗрддрди рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ t(A) рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдПрдХ рдЕрдХреНрд╖рд░ рдХрд╛ рдирд╛рдо "рдЪреЛрд░реА" рдХрд░рдирд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИред

рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рджреВрд╕рд░реЗ рдореБрджреНрджреЗ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ (рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рднреА рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ...):

+1 .' рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдореБрдЭреЗ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝рд┐рд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╡рд╛рд▓реА рднрд╛рд╖рд╛рдПрдБ рдирд╣реАрдВ рдорд┐рд▓реАрдВ, рд╕рд┐рд╡рд╛рдп рдПрдкреАрдПрд▓ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ тНЙ , рдФрд░ рдкрд╛рдпрдерди рдЬреЛ *X (рдЬреЛ рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХрдИ рднрд╛рд╖рд╛рдПрдВ transpose(X) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ; рдЖрд░ t(X) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ .' рд╕реЗ рднреА рдмрджрддрд░ рдирд╣реАрдВ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдЖрдк ' рдХреЛ .' рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд▓реБрднрд╛рддреЗ рд╣реИрдВ: рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ рдХрд┐ рдпреЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдСрдкрд░реЗрд╢рди рд╣реИрдВред

рд░реЛрд╕реЗрдЯрд╛ рдХреЛрдб рджреЗрдЦреЗрдВред (рдмреАрдЯреАрдбрдмреНрд▓реВ, рдЬреВрд▓рд┐рдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрдпреБрдЧреНрдорд┐рдд рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ ...)

рдХреНрдпрд╛ рдЕрдиреНрдп рдЯрд┐рдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? ` рдпрд╛ "

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

рдЬрдм рддрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрдпреБрдЧреНрдорд┐рдд рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ, рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░ рдЕрдзрд┐рдХрддрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдирд┐рдпрдорд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╣реЛрдиреЗ рдкрд░ рдореБрдЭреЗ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИред transpose рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ; рдХреНрдпрд╛ рд╣рдо рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ? рдореБрдЭреЗ t(x) R-ism рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд╛рдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рдЕрд▓рдЧ рдЯрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЬреАрдм рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП A` рдлрд╝реЙрдиреНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ $# A' 3$#$ рдЬреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ A" A'' $ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ .

рдпрджрд┐ рд╣рдо #20978 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рд╡реИрдХреНрдЯрд░ x рдФрд░ y рд╣реИрдВ рдФрд░ рдЖрдк рдЙрди рдкрд░ f рдпреБрдЧреНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ f.(x, y.') ... #20978 рдХреЗ рд╕рд╛рде , рдпрд╣ рдордирдорд╛рдирд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ред

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдЕрднреА рднреА рдЗрд╕реЗ рд╡реИрд╕реЗ рд╣реА рдЫреЛрдбрд╝рдирд╛ рд╣реИред рдХреЛрдИ рднреА рд╕реБрдЭрд╛рд╡ рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯ рд╕реБрдзрд╛рд░ рдЬреИрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред .' рдХреЛ рдореИрдЯрд▓реИрдм рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рд▓рд╛рдн рд╣реИред . рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ f.(x, y.') рдЬреИрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдбреЙрдЯ-рдХреЙрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╣рдж рддрдХ рдЕрдиреБрд░реВрдк рд╣реИ, рдФрд░ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ (рдХреБрдЫ рд╣рдж рддрдХ рд╕рд╣реА) рдХрд┐ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ "рдлрд╝реНрдпреВрдЬрд╝" (рдпрд╣ RowVector рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ рдзрдиреНрдпрд╡рд╛рдж

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдЗрд╕реЗ рдФрд░ рдЖрдЧреЗ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ f.(x, g.(y).') рдПрдХ рдлреНрдпреВрдЬрд╝рд┐рдВрдЧ рдСрдкрд░реЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛рдиреА рд╣рдо .' рдХреЛ рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА ala #20978 рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЕрдиреНрдп рдиреЗрд╕реНрдЯреЗрдб рдбреЙрдЯ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдлреНрдпреВрдЬрди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред (рдпрджрд┐ рдЖрдк рдЧреИрд░-рдлрд╝реНрдпреВрдЬрд╝рд┐рдВрдЧ рд╕рдВрд╕реНрдХрд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк transpose рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред)

рдореБрдЭреЗ рд╡рд╣ рдпреЛрдЬрдирд╛ рдмрд╣реБрдд рдкрд╕рдВрдж рд╣реИ, @stevengjред

рдПрдХ рд╢рд┐рдХрди: рд╕рдВрднрд╡рддрдГ @. рдореИрдХреНрд░реЛ y' рдХреЛ y.' рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧрд▓рдд рд╣реЛрдЧрд╛)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ y' рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝реНрдпреВрдЬреНрдб рдПрдбрдЬреЙрдЗрдВрдЯ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ f.(x, g.(y).') рдХреЛ рдлрд╝реНрдпреВрдЬрд╝рд┐рдВрдЧ рд╕реЗрдореЗрдиреНрдЯрд┐рдХреНрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдл рддрд░реАрдХрд╛ рдвреВрдВрдв рд░рд╣реА рд╣реИред рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рдпрд╣ рд╣реЛрдЧреА рдХрд┐ рдЗрд╕реЗ f.(x, g.(y.')) рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕рд▓рд┐рдП broadcast(x,y -> f(x, g(y)), x, y.') ?

рдзреНрдпрд╛рди рджреЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдлрд╝реЙрд▓рдмреИрдХ transpose(x) = x рдкрджреНрдзрддрд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдо рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░рд╣рдиреЗ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддрдп рдХрд░рдирд╛ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдбреЙрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдлреНрдпреВрдЬрди рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВред рдЗрд╕реЗ рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдирд╣реАрдВ рд╣реИред

@StefanKarpinski , рдпрджрд┐ рдлреЙрд▓рдмреИрдХ transpose(x) = x рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рдиреЗ рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЗрд░рдгрд╛ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдпрджрд┐ рдлрд╝реЙрд▓рдмреИрдХ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реИ?

@jebej , рд░рд┐рдХрд░реНрд╕рд┐рд╡ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рд░реИрдЦрд┐рдХ рдСрдкрд░реЗрдЯрд░реЛрдВ рдкрд░ рдЧрдгрд┐рддреАрдп рдСрдкрд░реЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдореБрдЭреЗ рдареАрдХ рд╕реЗ рдпрд╛рдж рд╣реИ, рддреЛ рдЗрд╕реЗ рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рдмрдирд╛рдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рдерд╛ рдХрд┐ рд╣рдореЗрдВ MethodError рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп transpose(x) = x рдлрд╝реЙрд▓рдмреИрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди рдлреЙрд▓рдмреИрдХ рд╣реЛрдирд╛ рднрдпрд╛рдирдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рджреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдЬреЛрдбрд╝рдиреЗ рджреЗрдВ (рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реА рдЪрд░реНрдЪрд╛ рдХреЛ рджреЗрдЦрд╛ рд╣реИ рдФрд░ рдЙрди рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ - рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдЕрдЧрд░ рдореИрдВрдиреЗ рдХреБрдЫ рдЫреЛрдбрд╝рд╛ рд╣реИ):

  • permutedims рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБ-рдЖрдпрд╛рдореА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рд╣реИред transpose рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреЛ рдкрдврд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдпрд╣ рдирд╣реАрдВ рд╣реИред
  • рдХрд┐рд╕реА рдХреЛ рд╕рджрд┐рд╢ x=["a", "b"] рдХрд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреИрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рд╡рд╛рд╕реНрддрд╡ y=x.' рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рдЪрд░ рдмрдирд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди getindex рдЙрд╕ рдкрд░ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред AFAIK рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП reshape(x, 1, :) рдпрд╛ рдмрд╣реБрдд рдзреАрдореА hcat(x...) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди Vector ( permutedims рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛрдирд╛ рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ рд╣реИ рдпрд╣рд╛рдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ )

рддрд╛рд░реЛрдВ рдХреЗ рд╡реЗрдХреНрдЯрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рдХреНрдпрд╛ рд╣реИ?

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

x = ["$(j+i)" for j in 1:3, i in 1:5]
y = ["$i" for i in 5:9]

рдФрд░ рдореИрдВ y рдХреА рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХреЗ рдмрд╛рдж x рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдФрд░ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ vcat рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг y ред

рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрдм рдкрд╛рда рдбреЗрдЯрд╛ рдХреЛ Matrix{String} (рдореИрдВ Vector{Vector{String}} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ) рдореЗрдВ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд▓реЙрдЧрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ (рдпрд╛ рдлрд┐рд░ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИ рдХрд┐ Vector{Vector{String}} рдХреЛ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП Matrix{String} рд▓рдЧрд╛рддрд╛рд░ рддрддреНрд╡реЛрдВ рдХреЛ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдХрд░)ред

рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛: рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдЙрддреНрдкрд╛рдж ( f.(v, w.') ) рдкрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝рд┐рдВрдЧ рджреЛ рд╡реИрдХреНрдЯрд░ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдСрд░реНрдереЛрдЧреЛрдирд▓ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред

рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ: рдХрд▓ рдореБрдЭреЗ рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ "рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ-рдПрдбрдЬреЙрдЗрдВрдЯ" рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рднреНрд░рдорд┐рдд рдПрдХ рдкрд╛рд░реНрдЯреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдпрд╣ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХреА рддрд░рд╣ рдХреНрдпреЛрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╢реНрд░реЗрд╖реНрда!

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ "рдЯрд┐рдХ" рдиреЛрдЯреЗрд╢рди рдХреЗ рдХреЗрд╡рд▓ transpose рд╣реЛрдирд╛ рдареАрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп, рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП ' рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдЧрд░ рд╣рдо рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХрд╛ рдлрд╝реНрдпреВрдЬрд╝рд┐рдВрдЧ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ .' рд╕рд╣реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИред

рдпреЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ рд╣реИред рддрд░реНрдХрд╕рдВрдЧрдд рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдЖрд╕рдиреНрди рдХреЛ рд╕реБрдкрд░-рдХреЙрдореНрдкреИрдХреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЖрдЗрдП рдмрд╕ рдЗрд╕реЗ transpose рдХрд╣рддреЗ рд╣реИрдВ рдФрд░ .' рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо .' рдХреЛ рдмрд┐рдВрджреБрд╡рд╛рд░ рд╕рд╣рд╛рдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рд╣рдо рдореИрдЯрд▓реИрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдлрдБрд╕рд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдпреА-рдкрджрд╛рд╡рдирдд рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЕрднреА рдкрдВрдЬреАрдХреГрдд рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ .' рдХреЗ 600+ рдЙрдкрдпреЛрдЧ рдкрд╛рдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рджреБрд░реНрд▓рдн рдирд╣реАрдВ рд╣реИред рдФрд░ рдбреЙрдЯ рдХреЙрд▓ / broadcast (рдЬреЛ рдХреЗрд╡рд▓ 0.6 рдореЗрдВ рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛) рдХреЗ рд╕рд╛рде, рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рд░рдгреА (рдЬрд╣рд╛рдВ рдЖрд╕рдиреНрди рдХрдо рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ) рдХреЛ рдЖрд▓рд╕реА рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧреА, рдЗрд╕рд▓рд┐рдП рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХреБрдЫ рд╣рдж рддрдХ рдордЬрдмреВрдд рд╣реЛрддрд╛ рд╣реИред

рдлрд┐рд░ рд╣рдо рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ .' рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рд╣рдЯрд╛ рджреЗрдВрдЧреЗ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЕрдзрд┐рдХ рдХреЛрдб рдЦрд░рд╛рдм рдЙрдкрдпреЛрдЧ рдкреИрдЯрд░реНрди рдореЗрдВ рдлрдВрд╕ рдЬрд╛рдПред

рдпрд╣ рдмреБрд░рд╛ рдХреНрдпреЛрдВ рд╣реИ?

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ .' рдЕрдм рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреЙрдЯреЗрдб рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдХрд╣рд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ . рдХрд╛ рдЕрд░реНрде рд╡реИрд╢реНрд╡реАрдХрд░рдг рд╣реИ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╡реЗрдХреНрдЯрд░рдХреГрдд рдЖрд╕рдиреНрди рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬреЛ рдореИрдЯрд▓реИрдм рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @stevengj рдПрдХ рдЕрдЪреНрдЫрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рддрд╛ рд╣реИ - рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреА рдЗрдЪреНрдЫрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд▓реЛрдХрдкреНрд░рд┐рдп рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ с╡А рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░рд┐рдпрд╛рд╕ рдХреЗ #19344 рдХрд╛ рдкрдХреНрд╖ рд▓реЗрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдореИрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ _all_ рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкрдХреНрд╖ рд▓реЗрддрд╛ рд╣реВрдВ, рдФрд░ _any_ рдЕрдиреБрдЧрд╛рдореА рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ literal_pow рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝рд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рднреА рдПрдХ рдорд╛рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рдВ, ╧З┬▓ рдФрд░ рдЬреИрд╕реЗ рдЪрд░ рдирд╛рдореЛрдВ рдХреЛ рдЦреЛрдирд╛ рджреБрдЦрдж рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рд╛рдн рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдореИрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ _all_ рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкрдХреНрд╖ рд▓реЗрддрд╛ рд╣реВрдВ, рдФрд░ _any_ рдЕрдиреБрдЧрд╛рдореА рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдореЗрд░рд╛ рдХреЛрдб рд░рд┐рдк рдХрд░реЗрдВ
screenshot from 2017-11-09 22-08-25

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдореИрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдкрдХреНрд╖ рд▓реЗрддрд╛ рд╣реВрдВ

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрддрд╛ рдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдЬрдм рд╣рдо рдХреЗрд╡рд▓ T рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВред

рдПрдХ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╕рдВрдЧрддрд┐ ...

рд╣рд╛рдВ, рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП .' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрд╕рдВрдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рддрдХ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рднреА рд╡рд┐рдХрд▓реНрдк рдмрджрддрд░ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдХрд╣рдирд╛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдмреБрд░реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ " .' рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рд╣реИ, рдбреЙрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдХрд╛ рдЕрдкрд╡рд╛рджред" рдЖрдк рдЗрд╕реЗ рд╕реАрдЦреЗрдВ рдФрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВред

рдПрдХ рдмрд╛рдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ .' рдкрд░ рдбреЙрдЯ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдХрд┐рд╕реА рднреА рд╕рдВрднрд╛рд╡рд┐рдд рднреНрд░рдо рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рдпрд╣ рдПрдХ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░ рд╣реИ, рдЬрдмрдХрд┐ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд┐рдВрдЧ op. рд╣реИ рдФрд░ рдЗрдВрдлрд┐рдХреНрд╕ .op рд╣реИред рддреЛ рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ . рдХрд╛ рдорддрд▓рдм рдкреНрд░рд╕рд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдЬрдм рдпрд╣ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рд╣реЛред рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ . рдХрд╛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдлрд╝реАрд▓реНрдб рд▓реБрдХрдЕрдк рд╣реИ, рдФрд░ getfield(x, ') рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдиреНрдп рдЕрд░реНрдереЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИред

(рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореИрдВ $# .' transpose(x) рдкрдХреНрд╖ рд▓реЗрддрд╛ рд╣реВрдВред)

@stevengj рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкрдВрдЬреАрдХреГрдд рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ .' рдХреЗ 600+ рдЙрдкрдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдХрдИ (рд╢рд╛рдпрдж рдЕрдзрд┐рдХрд╛рдВрд╢) рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреАрдордд рдХреЗ ' рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

рд╕рдВрднрд╡рдд: рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ " рдФрд░ ` рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред' рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкрдВрдЬреАрдХреГрдд рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ 'рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреАрдордд рдХреЗ рдкрдардиреАрдпрддрд╛' рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХреЛрдб рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рдмрд╛рд░ #23424 рд▓реИрдВрдб рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╡рдЧреИрд░рд╣ рдХреА рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ transpose рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди adjoint рдирд╣реАрдВред x.' рдХреЗ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ conj(x') рдЬреИрд╕рд╛ рдХреБрдЫ рдмрди рдЬрд╛рдПрдЧрд╛ (рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЖрд▓рд╕реА рд╣реИ, рдпрд╛рдиреА рдореБрдлрд╝реНрдд)ред рдЬрдмрдХрд┐ рдореИрдВ рдЗрд╕рдХреА рдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рдХреЗ рд▓рд┐рдП .' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рд╢рд╛рдпрдж рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рд╕реЗ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд╣реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдбреЗрдЯрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡рд░реНрддрдиреА-рдЖрдЙрдЯ transpose рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╡рд╣рд╛рдБ рдЕрднреА рднреА рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ "рдФрд░ `?

transpose() рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рдЖрдИрдПрдордПрдЪрдУ рдХреЗрд╡рд▓ .' рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ conj(x') рдФрд░ transpose рдХреЗ рд╕рд╛рде рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ .' рдореИрдЯрд▓реИрдм рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдореИрдЯрд▓реИрдм рдЖрдЧреНрд░рд╣ рдХреЗ рдХрд╛рд░рдг рдЗрддрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХрд┐ рд╕реБрд╕рдВрдЧрдд рд╕реНрд▓рд╛рдЗрд╕рд┐рдВрдЧ рдирд┐рдпрдореЛрдВ рдХреА рдХрдореА рдХреЗ рд╕рд╛рде "рд╕рдм рдХреБрдЫ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ" рдЬреИрд╕реЗ рдХрд┐ рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдпрд╣рд╛рдБ рддрд░реНрдХреЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

  1. .' рдЕрдм рдПрдХ рдбреЙрдЯреЗрдб рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдХреЗрд▓рд╛ рд╕реНрдЯреИрдВрдбрдЖрдЙрдЯ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдЕрдирдбреЙрдЯреЗрдб рдСрдкрд░реЗрдЯрд░ рдПрд▓рд┐рдореЗрдВрдЯрд╡рд╛рдЗрдЬ рд▓рд╛рдЧреВ рдХрд░реЗрдВ"; рдореИрдЯрд▓реИрдм рд╕реЗ рдирд╣реАрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдПрдХ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдЬрд╛рд▓ рд▓рдЧрддрд╛ рд╣реИред

  2. .' рдЕрдм рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ: рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм transpose рдерд╛ рдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм conj(x') рдерд╛? рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, .' рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд░рд╛рд╕рдд рдЙрдкрдпреЛрдЧ рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реАрдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ 2-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдХреНрдпрд╛ рдпрд╣ "рдЕрд╕рдВрдпреБрдЧреНрдорд┐рдд рд╕рд╣рд╛рдпрдХ" рдХрд░ рд░рд╣рд╛ рд╣реИред

рдкрд╣рд▓рд╛ рдореБрджреНрджрд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдШрд╛рддрдХ рдирд╣реАрдВ рд╣реИ; рджреВрд╕рд░рд╛ рдореБрджреНрджрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд░рд╛рдм рд╣реИ - рдпрд╣ рдЕрдм рдПрдХ рдПрдХрд▓ рд╕реБрд╕рдВрдЧрдд рд╕рдВрдЪрд╛рд▓рди рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрд░реНрдереЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВрдиреЗ рдЕрднреА рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдордиреЗ рдХрднреА рднреА .' рдХреЛ "рдПрд▓рд┐рдореЗрдВрдЯрд╡рд╛рдЗрдЬ рдПрдбрдЬреЙрдЗрдВрдЯ" рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рддреЛ conj(x') рдореЛрдЯреЗ рддреМрд░ рдкрд░ x'.' рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ рдФрд░ conj(x)' рдореЛрдЯреЗ рддреМрд░ рдкрд░ x.'' рд╣реЛрдЧрд╛ x.' рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИред

рд╕рдВрднрд╡рдд: рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ "рдФрд░ `?

рдкреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЛрдб рдХреЛ рд╕реНрд▓реИрдХ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЛ рдирд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ...

рдХреБрдЫ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░реЗрд╖рдг рддрдВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "рдЙрддреНрдкрд╛рдж рдХреЛ рдкрд╛рд░ рдХрд░рдирд╛" рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреНрдп рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд╛рдорд╛рди рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдлрд╝реЙрд▓рдмреИрдХ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЬреЛ рд╣реИрдХ рджреЗрдЦреЗрдВрдЧреЗ рд╡рд╣ рдХреЗрд╡рд▓ transpose(x) = x рдлрд╝реЙрд▓рдмреИрдХ (рдпрд╛ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░, рдЗрд╕рд▓рд┐рдП рдкреИрдХреЗрдЬ рдореЗрдВ рдЯрд╛рдЗрдк-рдкрд╛рдЗрд░реЗрд╕реА) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИред рддрд░рд╣ рдХреА рдЪреАрдЬ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЗрд╕рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ: Complex рдЕрдЬреАрдм рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ? рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЬреЛрдбрд╝ рд╕реНрд╡рдпрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдореНрдорд┐рд╢реНрд░ рдХрд╛ рдирд┐рдХрдЯрд╡рд░реНрддреА рд╡рд╣ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ: рдХреНрдпрд╛ рдЗрд╕реЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдореИрдВ рдпрд╣рд╛рдВ рджреЛ рдмрд╣реБрдд рд╣реА рд╕рдВрдмрдВрдзрд┐рдд рдЪреАрдЬреЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ:

1) x' рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
2) transpose(x) x.' рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ (1) рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдЯрд┐рд▓ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджреБрд░реНрд▓рдн рд╣реИрдВред

рд▓реЗрдХрд┐рди рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп (2), рдХреНрдпреЛрдВ рди рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ (1) рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ?

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЙрдЪрд┐рдд рдлрд┐рдХреНрд╕ рд╕рд┐рд░реНрдл рдПрдХ рдореИрдХреНрд░реЛ рд╣реИ рдЬреЛ ' рдХреЛ рдЖрд╕рдиреНрди рдХреЗ рдмрдЬрд╛рдп рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ?

рд▓реЗрдХрд┐рди рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп (2), рдХреНрдпреЛрдВ рди рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ (1) рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ?

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

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ .' рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрдкрд░реЗрд╢рди рд╣реИрдВ: рд╕рд░рдгреА рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝рд┐рд╢рди рдФрд░ рдЧреИрд░-рд╕рдВрдпреБрдЧреНрдорд┐рдд рдЖрд╕рдиреНрдиред рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рддрдереНрдп рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рддреА рд╣реИ рдХрд┐ рдпреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрдкрд░реЗрд╢рди рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдереА рд▓реЛрдЧ рдЕрдбрд╝реЗ рд╣реБрдП рд▓рдЧрддреЗ рд╣реИрдВ рдХрд┐ рдЧреИрд░-рд╕рдВрдпреБрдЧреНрдорд┐рдд рд╕рдВрдпреБрдХреНрдд рдСрдкрд░реЗрд╢рди (рдП) рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ (рдмреА) рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рд░рд▓ рд╕реНрд╡реИрдкрд┐рдВрдЧ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕рд╣реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреИрд░-рд╕рдВрдпреБрдЧреНрдорд┐рдд рдЖрд╕рдиреНрди рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рджреВрд╕рд░реА рдУрд░, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░рдгреА рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ .' рдХреЗ рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдЕрд░реНрде рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред .' рдХреЛ рдкрджрд╛рд╡рдирдд рдХрд░рдирд╛ рдЗрд╕реЗ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ, рдЬрдмрдХрд┐ рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ permutedims(x, (2, 1)) рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ 2d рд╕рд░рдгреА рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдореБрдЭреЗ рдпрд╣ рддрд░реНрдХ рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ transpose(x) рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдСрдкрд░реЗрд╢рди рдЗрддрдирд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓, рд╕реНрдкрд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ? рд╕рдЪ рдореЗрдВ? рдХреНрдпрд╛ рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХрд░рдирд╛ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреНрдп рд╕рднреА рдЪреАрдЬреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рд╣рд╛рдЙрд╕рд╣реЛрд▓реНрдбрд░ рдиреЛрдЯреЗрд╢рди adjoint рдХрд╛рдлреА рдЦрд╛рд╕ рдмрдирд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо v'v , v*v' рдФрд░ v'A*v рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП adjoint рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдорд┐рд▓рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╕рд░рдгреА рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА? рдпрд╣ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдПрдХ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╡рд╛рд░рдВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдордЬрдмреВрдд рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдХреНрд╕рд░ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд╕рд░рдгрд┐рдпреЛрдВ (рдЬрдм рд╕рд╛рдзрд╛рд░рдг рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрдм рдореИрдВ рдЕрдкрдиреА рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХреБрдЫ рд╡реИрдХреНрдЯрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ ( рдФрд░ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рд╣рдореЗрд╢рд╛ рдирд┐рд░рд╛рд╢ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рддреЛ рдЖрд░рдИрдкреАрдПрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди рд╣реИред (рд╕рд╛рде рд╣реА, рдпрд╣ рдкрдВрдХреНрддрд┐-рдкреНрд░рдореБрдЦ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП "рдСрд░реНрдбрд░ рд╕реНрд╡рд┐рдЪ" рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 2d рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреВрд▓рд┐рдпрд╛ рдХреЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдордЬрдмреВрдд рддрд░реНрдХ рднреА рдирд╣реАрдВ рд╣реИ)ред рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ https://github.com/JuliaLang/julia/pull/19344#issuecomment -261621763 рдкрд░ рдХреБрдЫ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереА, рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рдерд╛:

julia> const с╡А, с┤┤ = transpose, ctranspose;

julia> for op in (с╡А, с┤┤)
           <strong i="7">@eval</strong> Base.:*(x::AbstractArray{T}, f::typeof($op)) where {T<:Number} = f(x)
       end

julia> A = rand(2, 2)
2├Ч2 Array{Float64,2}:
 0.919332  0.651938
 0.387085  0.16784

julia>  Aс╡А = (A)с╡А    # variable definition and function application are both available!
2├Ч2 Array{Float64,2}:
 0.919332  0.387085
 0.651938  0.16784

julia> Aс┤┤ = (A)с┤┤
2├Ч2 Array{Float64,2}:
 0.919332  0.387085
 0.651938  0.16784

рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣реИрдХ рдХреЗ рдмрд┐рдирд╛, рдХреЗрд╡рд▓ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд┐ "рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди" рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ (x)f рдХреЛрд╖реНрдардХ рдХреА рдорд╛рдВрдЧ рдХрд░рддрд╛ рд╣реИ, рдмрд┐рдВрджреАрджрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕ рддрд░рд╣ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (x).f ( xf рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдЧрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ f рдПрдХ рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рддреАрдХ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж)ред

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╣реИрдХ 0.6 рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдЕрдм:

julia> Aс╡А = (A)с╡А               
ERROR: syntax: invalid operator

julia> Aс╡А = (A)transpose       
2├Ч2 Array{Float64,2}:          
 0.995848  0.549117            
 0.69401   0.908227            

julia> Aс┤┤ = (A)с┤┤               
ERROR: syntax: invalid operator

julia> Aс┤┤ = (A)ctranspose      # or adjoint or whatever
2├Ч2 Array{Float64,2}:          
 0.995848  0.549117            
 0.69401   0.908227            

рдЬреЛ рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ, рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛:

julia> square(n) = n^2; cube(n) = n^3;

julia> Base.:*(n, f::typeof(square)) = f(n)

julia> Base.:*(n, f::typeof(cube)) = f(n)

julia> const ┬▓ = square    # why?
syntax: invalid character "┬▓"

julia> const ┬│ = cube    # why?
syntax: invalid character "┬│"

рдЬреЛ рдореИрдВрдиреЗ рднреЛрд▓реЗрдкрди рд╕реЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ: n┬▓ = (n)┬▓ рдФрд░ n┬│ = (n)┬│ рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╣реЛрдиреЗ рд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ (A)тБ╗┬╣ рдиреЗ рднреА рдХрд╛рдо рдХрд┐рдпрд╛, рдЬрд╣рд╛рдВ тБ╗┬╣ const тБ╗┬╣ = inv рдерд╛ред

рдореИрдВрдиреЗ InfixFunctions.jl рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рд╣реИрдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред

рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рд╕рд┐рд░реНрдл PostfixFunctions.jl рдкреИрдХреЗрдЬ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдФрд░ рдЬреЛ рдХреБрдЫ рднреА рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рдЙрд╕рд╕реЗ рдЦреБрд╢ рд░рд╣реЗрдВред рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рддрд┐рдмрдВрдз:

  • рдХрд┐рд╕реА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕реБрдкрд░рдЗрдВрдбрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ
  • рд╕реБрдкрд░рдЗрдВрдбреЗрдХреНрд╕ x * с╢а рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдореЗрдВ (рд╣реИрдХ рдореЗрдВ рдирд┐рд╣рд┐рдд рдЧреБрдгрди) (x)с╢а рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ

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

рдЪреАрдпрд░реНрд╕!

рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреНрдп рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрдгреЛрдВ рдХреА рдХреБрдЫ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП #10762 рджреЗрдЦреЗрдВред

рджреВрд╕рд░рд╛ рдореБрджреНрджрд╛ #22089, рдСрдкрд░реЗрдЯрд░ рдкреНрд░рддреНрдпрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред +с╡А рдЕрдм рдПрдХ рд╡реИрдз рдСрдкрд░реЗрдЯрд░ рд╣реИ, рдЬрд┐рд╕рдиреЗ (рд╢рд╛рдпрдж рдЧрд▓рддреА рд╕реЗ) рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЙрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдСрдкрд░реЗрдЯрд░ рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдмрдЧ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рднреА рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд╣реИ рдХрд┐ с╡А рдПрдХ рд╡реИрдз рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди -с╡А рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ -(с╡А) ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рджреБрдирд┐рдпрд╛ рдХрд╛ рдЕрдВрдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдИрдПрдордУ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ с╡А рдХреЗ рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рдЦреЛрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

@ рдЗрд╕реНрдорд╛рдЗрд▓-рд╡реАрд╕реА, рдореИрдВ рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ (x)с╡А рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ - рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдФрд░ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд▓реЛрдЧреЛрдВ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд░рдЧрдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдХрд┐рд╕реА рднреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рдорд┐рд▓рддреА рд╣реИред рдореИрдВ рдЗрд╕реЗ рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ рд╕реАрдорд┐рдд рд░рдЦреВрдВрдЧрд╛ред

@StefanKarpinski , рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рд╕рд░реНрд╡рд╕рдореНрдорддрд┐ .' рдорддрд▓рдм рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА, рдЧреИрд░-рд╕рдВрдпреБрдЧреНрдорд┐рдд рд╕рд░рдгреА рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝рд┐рд╢рди (рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдСрдкрд░реЗрдЯрд░ рд╣реИ) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рдерд╛, рдЬрдмрдХрд┐ ' рдкреБрдирд░рд╛рд╡рд░реНрддреА, рд╕рдВрдпреБрдЧреНрдо рд╣реИ рд╕рдВрдпреБрдХреНрдд рд╕рдВрдЪрд╛рд▓рдиред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП с╡А рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирдлрд░рдд рдХрд░рддрд╛ рд╣реВрдВред рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ , рдЬреИрд╕реЗ aс╡Аa рдпрд╛ Lс╡АDL = ltdlfact(A) ред (рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдПрдХ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ с╡А рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрдмрдХрд┐ рдЕрдиреНрдп рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рдЪрд╛рди рдореЗрдВ рдорд╛рдиреНрдп рд╣реИрдВ, рдЕрдЬреАрдм рд╣реЛрдЧрд╛ред)

рдпрд╣ рдореЗрд░реА рд╕рдордЭ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдерд╛ - рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рд▓рд┐рдирд╛рд▓рдЧ рд▓реЛрдЧ a.' рдХреЛ рдпрдерд╛рд╡рдд рд░рдЦрдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдереЗ, рдЕрд░реНрдерд╛рдд conj(a)' ред .' рд░рдЦрдирд╛ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╕рд░рдгреА рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдореЗрдВ рдмрджрд▓рдирд╛ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИ - рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ с╡А рдХрд╛ рд╣реЛрдирд╛ рдХрд╖реНрдЯрдкреНрд░рдж рдФрд░ рдЕрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ @ рдЗрд╕реНрдорд╛рдЗрд▓-рд╡реАрд╕реА рдХрд╛ (a)с╡А рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╕рдВрдж рд╣реИ, рдЬреЛ рдПрдХ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ aс╡А рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХреЗрдЧрд╛ред

рдЙрди рдЪрд░реНрдЪрд╛рдУрдВ рдХреА рдореЗрд░реА рдпрд╛рджрджрд╛рд╢реНрдд рд╕реНрдЯреАрд╡рди рдХреА рд╣реИред рдкреБрдирд░рд╛рд╡рд░реНрддреА, рдЧреИрд░-рд╕рдВрдпреБрдЧреНрдорд┐рдд рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рджреБрд░реНрд▓рдн рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реИред рдпрд╣рд╛рдБ рдЕрдЪреНрдЫрд╛ рд╕рд╛рд░рд╛рдВрд╢: https://github.com/JuliaLang/julia/issues/20978#issuecomment -316141984ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ ' рдЖрд╕рдиреНрди рд╣реИ рдФрд░ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ .' рд╕рдмрдСрдкреНрдЯрд┐рдорд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА (рд╕рдВрд░рдЪрдирд╛рддреНрдордХ) рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИред

рдареАрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрд┐рди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╕рднреА рд╕рд╣рдордд рд╣реИрдВ:

  1. a' рдХреЗ рд▓рд┐рдП adjoint(a) рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
  2. conj(a)' рдпрд╛ conj(a') рдХрд╛ рдЙрдкрдпреЛрдЧ (рдЧреИрд░-) рд╕рдВрдпреБрдЧреНрдорд┐рдд рдЬреЛрдбрд╝ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВред

рддреЛ рд╡рд┐рд╡рд╛рдж рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд░рдгреА рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдП:

  • a.' рдпрд╛ . рдХреЗ рд░реВрдк рдореЗрдВ
  • transpose(a) рдпрд╛ . рдХреЗ рд░реВрдк рдореЗрдВ
  • (a)с╡А рдХреЗ рд░реВрдк рдореЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдЖрдХрд▓рди рд╕рд╣реА рд╣реИ?

рд╣рд╛рдВ, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ (рдЬрд╣рд╛рдВ "рд╕рд░рдгреА рд╕реНрдерд╛рдирд╛рдВрддрд░рдг" рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реИ)ред

рд╕рд╛рде рд╣реА, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╣рд░ рдХреЛрдИ рд╕рд╣рдордд рд╣реИ рдХрд┐ transpose(a) рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡реИрдз рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ (рдФрд░ рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЕрд╕рд╣рдорддрд┐ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ .' рдФрд░/рдпрд╛ (a)с╡А рд╡реИрдХрд▓реНрдкрд┐рдХ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордХрдХреНрд╖) рд╡реИрдз рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рджреГрд╖реНрдЯрд┐рдХреЛрдг (1) https://github.com/JuliaLang/julia/issues/20978#issuecomment -315902532 рд╕реЗ, рдЬрд┐рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд░реНрдерди рдорд┐рд▓рд╛ (рдЬреИрд╕реЗ https://github.com/JuliaLang/julia/issues/20978# рдирд┐рд░реНрдЧрдорди-316080448), рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рдмрдиреА рд╣реБрдИ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕рдордЭрдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╢рд╛рдЦрд╛ рд╣реИ ( flip(A) рдкреЗрд╢ рдХрд░рдирд╛) рдЬрд┐рд╕реЗ рдореИрдВ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореИрдВ .' рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рднреНрд░рдо рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдордЬрдмреВрдд рддрд░реНрдХ рд╣реИред рд╢реНрд░реЗрд╖реНрда!

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬрдм рддрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ ' рд╣реИ, рддрдм рддрдХ рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ f рдХреЛ f.(v, w') рдХреЗ рд╕рд╛рде рд╡реИрдХреНрдЯрд░ рдХреЗ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдЙрддреНрдкрд╛рдж рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рд▓реЛрдЧ рдЯреЗрдмрд▓-рдЬреИрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдХреЗ рдкрдВрдХреНрддрд┐-рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╡реЗрдХреНрдЯрд░ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рддреЛ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдордиреЗ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ: A*' тАФ рдПрдХ рдирдпрд╛ рдЬреАрд╡рдирд╡реГрддреНрддред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрдгрд┐рдд рд╕рдВрдХреЗрддрди рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ conj(A)' рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИред рдпрд╣ 0.6 рдкрд░ рдЙрдкрд▓рдмреНрдз рдерд╛, рд▓реЗрдХрд┐рди 0.7 рдкрд░ рд╣рдо рд╡рд░реНрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП * рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ ...

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ " рдФрд░ ` рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рд╕реЗ рдкрд░реЗ рдХрд╕реНрдЯрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрдХреНрд╖рд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ * рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рднреА рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдкреНрд░рд╛рдЗрдо AтА▓ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдпреВрдирд┐рдХреЛрдб рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ Aс╡А рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╣реИред

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореЗрд░реЗ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ .' рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рддрд╛, рдЗрд╕рд▓рд┐рдП transpose(a) рд╢рд╛рдпрдж рдареАрдХ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЕрднреА рдкрдВрдЬреАрдХреГрдд рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ .' рдХреЗ 600+ рдЙрдкрдпреЛрдЧ рдкрд╛рдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рджреБрд░реНрд▓рдн рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдерд╛рди рдХреА рдмрд┐рд▓реНрдХреБрд▓ рдЬрд╛рдВрдЪ рдХреА рдЧрдИ рдереА рдХрд┐ рдХреНрдпрд╛ .' рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд╣рд╛рдВ ' рдареАрдХ рд╣реЛрддрд╛? рдореИрдВ рдпрд╣ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╕рдЪ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд╛рди рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ .' рдХрд╛ рд╡реИрдз рдЙрдкрдпреЛрдЧ рджреЗрдЦрд╛ рд╣реИ, рдкреНрд▓реЙрдЯреНрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдерд╛ред рдЬреЗрдПрд▓ рд▓реЗрдмрд▓ рдПрдХ рд╡реЗрдХреНрдЯрд░ (рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рд╡реЗрдХреНрдЯрд░ рдЪрд╛рд╣рддрд╛ рдерд╛) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ T = transpose рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреВрдВрдЧрд╛, рдпрд╛ ' рд╕реЗ transpose рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛ рдлреЗрдВрдХ рджреВрдВрдЧрд╛ред

<strong i="17">@transpose</strong> A = A'*A*B'*B*C'*C

рдЙрд╕ рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕рд╛рде рдареАрдХ рд░рд╣реЗрдЧрд╛ред

рд▓реЛрдЧ f.(v, w') рдХреЗ рд╕рд╛рде рд╡реИрдХреНрдЯрд░ рдХреЗ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдЙрддреНрдкрд╛рдж рдкрд░ f рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рд▓реЛрдЧ рдЯреЗрдмрд▓-рдЬреИрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдХреЗ рдкрдВрдХреНрддрд┐-рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╡реЗрдХреНрдЯрд░ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рддреЛ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдпрд╣ рдХрдерди рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдХреЗрд╡рд▓ transpose рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдареАрдХ рдирд╣реАрдВ рд╣реИ?

conjugate-adjoint рдХреЗ рд▓рд┐рдП a*' рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдмреЗрд╣рддрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред &a рдЬрд▓реНрдж рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ рдФрд░ рдЪреАрдЬреЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╛рд░рдВрдкрд░рд┐рдХ рдиреЛрдЯреЗрд╢рди рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИред

рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рд╕реНрдЯреНрд░реЙ рдкреЛрд▓ рдХрд╛ рд╕рдордп рд╣реИ?

рд╣рдореЗрдВ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреИрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

(рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдХреНрд░рдо рдореЗрдВ; рдпрд╣рд╛рдВ рдЗрдореЛрдЬреА рдирд╛рдореЛрдВ рдкрд░ рдХреЛрдИ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд╣реИ)

  • : A.' тАФ рдмрд╕ рдЕрд░реНрде рдмрджрд▓реЗрдВ, рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╡рд╣реА рд░рдЦреЗрдВ
  • : transpose(A) тАФ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ
  • : t(A) рдпрд╛ tr(A) тАФ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯрд╛ рдирд╛рдо рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ
  • : Aс╡А тАФ рдХреЗрд╡рд▓ с╡А рдХреЗ рд╕рд╛рде рдФрд░ рд╢рд╛рдпрдж рдПрдХ рдпрд╛ рджреЛ рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рд╕реЗ рд╡рд┐рд╢реЗрд╖-рдЖрд╡рд░рдг
  • : (A)с╡А - рд╕рднреА рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЕрд▓рдЧ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
  • тЭдя╕П: A*' - рдЙрд╕ рдЕрд▓реМрдХрд┐рдХ рдШрд╛рдЯреА рдХреЗ рдареАрдХ рдКрдкрд░ рдЪрдордХ, рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг
  • рдпрджрд┐ рдЖрдк &A рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рддреБрд░рдВрдд рдКрдкрд░ рд╕реНрдЯреАрдлрди рдХреА рдкреЛрд╕реНрдЯ рдкрд░ рдПрдХ рдлреЗрдВрдХ рджреЗрдВ (рд╣рдо рдЗрдореЛрдЬреА рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВ)

LinAlg рдЪрд░реНрдЪрд╛рдУрдВ рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ .тАЩ рдХреЛ рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣рд╕реНрддрд╛рдВрддрд░рдг рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд╣рд╛рд░ рджреЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА, рдХреНрдпреЛрдВрдХрд┐ conj(xтАЩ) рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ с╡А рдЧрдгрд┐рддреАрдп рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрдгрд┐рддреАрдп рдЕрд░реНрде рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрджрд┐ рдХреБрдЫ рднреА)ред

tr(A) рдорд╛рдзреНрдп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рдмрд╣реБрдд рдкреБрд░рдЬреЛрд░ рд╡рд┐рд░реЛрдз - рд╣рд░ рдХреЛрдИ рдпрд╣ рд╕реЛрдЪрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрд░реНрде рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЯреНрд░реЗрд╕ рд╣реИ: https://en.wikipedia.org/wiki/Trace_ (linear_algebra)

рдпрджрд┐ рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрджрд╛рд╡рдирдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрд┐рд╕ рдкрд░ рд╕рдВрднрд╡рддрдГ 1.0 рд╕реЗ рдкрд╣рд▓реЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ) рддреЛ с╡А(A) рднреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рд╕реБрдЭрд╛рд╡ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ (A)с╡А , рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдкрдЯрд░реА рд╕реЗ рдЙрддрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдХреНрд╖рдорд╛рдпрд╛рдЪрдирд╛:

рдореИрдВрдиреЗ рдХрднреА рднреА тИЪ рдХреЛ рдпреВрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХреА рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдЖрдк рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ тИЪ(...) рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдВрдЧреЗ рдЬреИрд╕реЗ рд╣реА рдЖрдк рдЗрд╕реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЪрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдПрдХ рдпрд╛ рдХреБрдЫ рд╡рд░реНрдгред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ a┬▓ рдФрд░ тИЪa рдХреЗ рдмреАрдЪ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╣реА рдХреГрддреНрд░рд┐рдо рдЕрдВрддрд░ рдкрд╛рдпрд╛ рд╣реИред рдпрд╣ рд╢рд╛рдпрдж рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдпреВрдирд┐рдХреЛрдб рдХрдХреНрд╖рд╛рдУрдВ рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдФрд░ рдХреЛ рдпрд╣ рдмреЗрддреБрдХрд╛ рд▓рдЧрддрд╛ рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡реИрдз рдЪрд░ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ a┬▓ $ рд╣реЛрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реА рддрд░рд╣ тИЪa a рдХреЗ рд╡рд░реНрдЧрдореВрд▓ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдЪрд░ рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрдИ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдмрд╛рд░ред рдпрд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдВ рдЬреИрд╕реЗ a┬▓b рдФрд░ рдЗрд╕рдХрд╛ рд╡рд░реНрдЧрдореВрд▓ aтИЪb , рдЬрд╣рд╛рдВ рдкреВрд░реНрд╡ рдПрдХ рдорд╛рдиреНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдмрдврд╝рдХрд░, рдореБрдЭреЗ рдирд┐рд░рдВрддрд░рддрд╛ рдкрд╕рдВрдж рд╣реИред

рддреЛ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдпреВрдирд┐рдХреЛрдб рдпреВрдирд░реА рдСрдкрд░реЗрдЯрд░ тИЪ (рдФрд░ рдЙрд╕рдХреЗ рд░рд┐рд╢реНрддреЗрджрд╛рд░реЛрдВ) рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ (A)с╡А , (a)┬▓ рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╕рдВрдж рд╣реИ рддрд╛рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬрдмрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрднреА рднреА рд╕реБрд▓рдн рд╣реИ тИЪ(a) )ред

@Jutho рдиреЗ рдЬреЛ рдХрд╣рд╛ рдЙрд╕рд╕реЗ рдореИрдВ 100% рд╕рд╣рдордд рд╣реВрдВ рдФрд░ рдХрдИ рдореМрдХреЛрдВ рдкрд░ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк @Jutho рдХреЛрдИ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдкреНрд░рд╕реНрддрд╛рд╡: рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд╛рдореЛрдВ рдореЗрдВ тИЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, op рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП тИЪ(x) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдЧрд▓рд╛ рдкреНрд░рд╢реНрди -> 2 |> тИЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рдЖрдЗрдП рдПрдХ рдЕрдиреНрдп рд╕реВрддреНрд░ рдореЗрдВ тИЪ рдХреА рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ 2 |> тИЪ рдХрд╛ рдЕрд░реНрде рд╣реИ тИЪ(2) ред

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдФрд░ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, A^T рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ ( T рдХреЛ ^ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдЧрд▓рдЯрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ)ред тАж рдУрд╣, рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ @mbauman рдХреЗ рдкрд╛рд╕ рднреА рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдерд╛ред рдпрд╣ рдереЛрдбрд╝рд╛ рдмрджрд╕реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди A.' рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдмрд╣реБрдд рдирд┐рд╡реЗрд╢рд┐рдд рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╡рд╛рд▓реА рд╣рдЬрд╛рд░реЛрдВ рд▓рд╛рдЗрдиреЗрдВ рдХреМрди рдЯрд╛рдЗрдк рдХрд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред

transpose(A) # with no special syntax рдКрдкрд░ рд╡реЛрдЯ рдЬреАрдд рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдЖрдВрдЦреЛрдВ рдФрд░ рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рджрд░реНрджрдирд╛рдХ рд╣реИред

рдкрд╛рдпрдерди рдореЗрдВ рдЖрдо рдЙрдкрдпреЛрдЧ рд╢рд╛рдпрдж numpy рдФрд░ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдирд┐рдореНрди рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИрдВ:

import numpy as np
# define matrix X of n columns, with m rows of observations
error = X.dot(Theta.T) - Y
gradient = (1 / m) * (X.dot(Theta.T) - Y).T.dot(X)

рдореИрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛:

grad = 1/m * transpose(X * transpose(Theta) - Y)) * X

рдпрд╣ рдЙрд╕ рд╕рдореНрдореЗрд▓рди рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреА рдорд╛рдирд╕рд┐рдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЧрдгрд┐рдд рд╕рдВрдХреЗрддрди рдмрд╕ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рд╕рдВрдХреЗрддрдХ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ Aс╡А рдпрд╛ Aс╡Ч ред

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ A' рд╕реЗ рдмрд╣реБрдд рдЦреБрд╢ рд╣реВрдВ рдЬреЛ рдЬреВрд▓рд┐рдпрд╛ v.0.6 рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЗрд╕реЗ рдПрдбрдЬреЙрдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЬрд╛рдПред рдХреНрдпрд╛ рдПрдбрдЬреЙрдЗрдВрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЕрдХреНрд╕рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдпрд╣рд╛рдБ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╣реИрдВ:

Aс╡А or Aс╡Ч    if the world won't accept unicode operators, let them use transpose(A)
A'          close to math notation, easy to type and *especially* easy to read
A^'         this could signal `^` not to be parsed as Exponentiation.
A.'         conflicts with dotted operator syntax, but at face value OK
A^T or A^t  these are pretty good, but what if variable `T` is meant to be an exponent? 
A.T         same as numpy, same dotted operator collision
t(A)        nesting reverses semantics, 3 keystrokes and two of them with shift key.
transpose(A) with no special syntax     # please don't do this.

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ A' рд╕реЗ рдмрд╣реБрдд рдЦреБрд╢ рд╣реВрдВ рдЬреЛ рдЬреВрд▓рд┐рдпрд╛ v.0.6 рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдХреНрдпрд╛ рдПрдбрдЬреЙрдЗрдВрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЕрдХреНрд╕рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛, A' рд╣рдореЗрд╢рд╛ рд╕реЗ A рдХрд╛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред рд╣рдо рдХрдВрдЬреБрдЧреЗрдЯ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди ctranspose рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рдереЗ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ рд╕рдордХрдХреНрд╖ рд╢рдмреНрдж adjoint рдХрд░ рджрд┐рдпрд╛ред

рдпрджрд┐ рдЖрдк рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рд╡реИрд╕реЗ рднреА рдПрдХ рд╕рдВрдпреБрдЧреНрдорд┐рдд рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк $#$ transpose(A) $#$ рдХреЗ рдмрдЬрд╛рдп A' рдЯрд╛рдЗрдк рдХрд░реЗрдВрдЧреЗред рдЧреИрд░-рд╕рдВрдпреБрдЧреНрдо рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ (рд╕рдВрднрд╡рддрдГ) рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЧреИрд░-рд╕рдВрдпреБрдЧреНрдорд┐рдд рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рддреАрдп рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдЖрдк рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ ...

рдЕрдЧрд░ рдЖрдкрдХрд╛ рдЯреВрд▓ рд╣реИрдорд░ рд╣реИ рддреЛ... :)

... рдЖрдкрдХреЛ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред

рд╢рд╛рдпрдж рдирд╣реАрдВ, рд╢рд╛рдпрдж рдпрд╣ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╣реЗрдЧрд╛ - рдЬреЛ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдореЗрд░реЗ рдЬреИрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ред :)

@mahiki , рдЖрдк NumPy рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:

import numpy as np
# define matrix X of n columns, with m rows of observations
error = X.dot(Theta.T) - Y
gradient = (1 / m) * (X.dot(Theta.T) - Y).T.dot(X)

рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛:

error = X*╬Ш' - Y
gradient = (1/m) * (X*╬Ш' - Y)' * X

рдпрд╛ рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╡реЗрдХреНрдЯрд░ рдЙрд╕ NumPy рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ рдФрд░ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдХреЙрд▓рдо рд╣реЛрдВрдЧреЗ:

error = X'╬Ш - Y
gradient = (1/m) * (X'╬Ш - Y) * X'

рдЬреЛ рдЬрд┐рддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЧрдгрд┐рддреАрдп рд▓рдЧрддрд╛ рд╣реИ рдЙрддрдирд╛ рд╣реА рд▓рдЧрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХрд╛ рдбреЗрдЯрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИ, рддреЛ рдПрдбрдЬреЙрдЗрдВрдЯ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдПрдХ рд╣реА рдСрдкрд░реЗрд╢рди рд╣реИрдВ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдЖрдк рдКрдкрд░ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рд▓реЗрдХрд┐рди рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рдЖрд╕рдиреНрди рд╕рд╣реА рдСрдкрд░реЗрд╢рди рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ @ararslan рдиреЗ рдХрд╣рд╛, X' рдХрд╛ рдорддрд▓рдм рд╣рдореЗрд╢рд╛ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ adjoint рд╣реЛрддрд╛ рд╣реИ (рдФрд░ рдореИрдЯрд▓реИрдм рдореЗрдВ рднреА)ред рдЗрд╕реЗ рдкрд╣рд▓реЗ " conjugate transpose " рдХреЗ рд▓рд┐рдП ctranspose рдЫреЛрдЯрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╛рдо рдПрдХ рдорд┐рдереНрдпрд╛ рдирд╛рдо рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдСрдкрд░реЗрдЯрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрдкрддреНрддрд┐ рдпрд╣ рд╣реИ рдХрд┐

dot(A*x, y) == dot(x, A'y)

рдЬреЛ рдХрд┐ рд╣рд░реНрдорд┐рдЯрд┐рдпрди рдПрдбрдЬреЙрдЗрдВрдЯ рдХреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм A рдПрдХ рдЬрдЯрд┐рд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ, рддреЛ рд╕рдВрдпреБрдЧреНрдорд┐рдд рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП "adjoint" рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрдж рд╣реИред

рдЬреЛ рдХреБрдЫ рднреА рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдКрдкрд░ transpose(a) рдФрд░ a.' рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд╛ рдорддрд▓рдм a.' рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реЛрдЧрд╛ред рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдФрд░ рднрд▓реЗ рд╣реА рдпрд╣ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдореЗрдВ "рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рд╕рд╣реА" рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЗрдиреЗрд░рд┐рдХ рдХреЛрдб рдореЗрдВ conj(a') рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдирд╛ рдПрдХ рд╢рд┐рдХреНрд╖рд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд┐рд░ рдкрд░ рдЪреЛрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@mahiki рдЕрдЧрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ adjoint $ рдХреЗ рдмрдЬрд╛рдп transpose рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк @t рдЬреИрд╕реЗ рдЫреЛрдЯреЗ рдореИрдХреНрд░реЛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдкрдирд╛рдо transpose (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдХреЛрдб рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ)ред

рдЖрдкрдХреЛ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред

@ рд▓рд┐рд╕реЛ77 рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдиреИрдиреЛрд╕реЙрд▓реНрдбрд┐рдпрд░ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рддрд╛ рд╣реИ рдЬреЛ рдЧрд┐рдЯрд╣рдм рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ рдФрд░ рдорд╛рдВрдЧ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛рддрд╛ рд╣реИ, рд╕рднреА рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рд╣реИ, рдФрд░ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рд╖рдп рд╡рд┐рд╖рдп рд╕реЗ рд╣рдЯ рдЬрд╛рдПред

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдЬреЛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реИрдз рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ - рдЧрдгрд┐рддреАрдп рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╕рдВрдХреЗрддрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЦрд░рд╛рдм рд╡рд╛рдХреНрдп рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬреЛ рдорд╛рдВрдЧ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП transpose (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ permutedims , рдЖрдкрдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░)ред

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдЬреЛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реИрдз рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ - рдЧрдгрд┐рддреАрдп рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╕рдВрдХреЗрддрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЦрд░рд╛рдм рд╡рд╛рдХреНрдп рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

рдЪреВрдБрдХрд┐ A.' рд╕рд╛рдорд╛рдиреНрдп рдЕрд░реНрдереЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдЧрдгрд┐рддреАрдп рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╕рдВрдХреЗрддрди" рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдпрд╛ рд╡рд┐рдкрдХреНрд╖ рдореЗрдВ рддрд░реНрдХ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @ararslan рдореМрдЬреВрджрд╛ .' рдХреЗ рдЦрд┐рд▓рд╛рдл рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдмрд▓реНрдХрд┐ рдПрдХ рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдЯреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реИред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ - рдпрджрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм рдЖрд╕рдиреНрди рдХреА рд░реИрдЦрд┐рдХ-рдмреАрдЬрдЧрдгрд┐рдд рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рднрд▓реЗ рд╣реА рдЖрдкрдХрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реЛ)ред рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ, рддреЛ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреЛ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реИрдз рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдСрдкрд░реЗрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝" рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдФрд░ рдЧрдгрд┐рддреАрдп рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдЯреА рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рд╢рд╛рдпрдж рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рднреНрд░рдорд┐рдд рд╣реЛрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд┐рддрд┐ рдЬрд╣рд╛рдВ рдПрдХ рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдЯреА рдиреЛрдЯреЗрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдЖрдк рдкрд░рдорд┐рдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рдиреНрди рд░реИрдЦрд┐рдХ рдСрдкрд░реЗрдЯрд░ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдФрдЪрд┐рддреНрдп рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рд╕рдВрджрд░реНрднред https://github.com/JuliaLang/julia/issues/20978#issuecomment -315902532ред рд╢реНрд░реЗрд╖реНрда!

... рд▓реЗрдХрд┐рди рдпрд╣ рдСрдкрд░реЗрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд╕реНрдерд╛рдирд╛рдВрддрд░рдг" рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, ...

рдпрджрд┐ рдпрд╣ рдЗрддрдирд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИ рддреЛ рдЕрд░рд░реНрд╕рд▓рд╛рди рдФрд░ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреА рд╡рд░реНрддрдиреА рдХреЗ рд▓рд┐рдП transpose(A) рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЛрдЯ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ?

рдзрдиреНрдпрд╡рд╛рдж @StefanKarpinski @ararslan @ttparkerред рдореБрдЭреЗ рдЕрдкрдиреЗ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рдкрд╛рда рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдерд╛ рдФрд░ рдЖрд╕-рдкрд╛рд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрдЬрдирд╛ рдерд╛, рдпрд╣ рд╕рдм рдареАрдХ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рд╕реЗ рдкрд╣рд▓реЗ рд▓рд┐рдпрд╛ рдерд╛, рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ред

рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдкрд╕рдВрдж рд╣реИ
gradient = (1/m) * (X'╬Ш - Y) * X'

рдореЗрд░рд╛ рднреНрд░рдо рд╕рдВрджрд░реНрдн рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ, рдХрд╛рдЧрдЬрд╛рдд, рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХреЛрдВ рдЖрджрд┐ рдореЗрдВ 'рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝' (рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреА рдХреЗ рд░реВрдк рдореЗрдВ) рдХреЗ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░рдпреВ рдПрдирдЬреА рдХреЗ рд╕реНрдЯреИрдирдлреЛрд░реНрдб рд╕реАрдПрд╕ 229 рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдиреЛрдЯреНрд╕ , рдЬрд╣рд╛рдВ рд╕рдВрдмрдВрдзрд┐рдд рдЬреВрд▓рд┐рдпрд╛ рдХреЛрдб adjoint рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдКрдкрд░ @StefanKarpinski рдХреЗ рд╕рд╛рдл-рд╕реБрдерд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ (рджрд╛рдПрдВ?) рдЕрджреНрдпрддрди: рд╣рд╛рдБ

рдЕрдм рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдЕрдВрдХрди рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд╕рдВрдЧрдд рд╣реИред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ .' рдмрд┐рдВрджреАрджрд╛рд░ рдСрдкрд░реЗрдЯрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде transpose(A) рдкрд░ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпреВрдирд┐рдХреЛрдб рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХреЛрдИ рднреА рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ @ttparker рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рд╣реИ рдЕрдЧрд░ рдореИрдВ рдЦреБрдж рдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдХреНрд░реЛ @t рдЬреЛ рдЙрдкрдирд╛рдо transpose ред

рдлрд┐рд░, рдореБрдЭреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдореЗрдВ рдЧрд▓рддреА рд╣реБрдИ:

transpose(A) with no special syntax # please don't do this.

рд╕реНрдирд╛рддрдХ рд╕реНрддрд░ рдХреЗ рдЧрдгрд┐рдд рдХреЗ рд╕рд╛рде рдореЗрд░реА рдЦрд░рд╛рдм рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдореЗрд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

( рдкреНрд░рд╡рдЪрди рд╕реЗред)

рдореИрдВ ' рдХреЛ рдПрдХ рдкреЛрд╕реНрдЯ-рдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░ рдмрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ $ f' рд╕реЗ '(f) рддрдХ рдореИрдк рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ Base.:'(x::AbstractMatrix) = adjoint(x) рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ рдЬреЛрдбрд╝ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд▓реЛрдЧ df/dt рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП f' рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред)

0.7 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдСрдкрд░реЗрдЯрд░ рдкреНрд░рддреНрдпрдп рдХреЗ рд╕рд╛рде, f'с╡Г рдХреЗ рд▓рд┐рдП 'с╡Г(f) $ рдкрд░ рдореИрдк рдХрд░рдирд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреЗрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ Base.:'с╡А(x::AbstractMatrix) = transpose(x) рдФрд░ Base.:'тБ╗┬╣(x::Union{AbstractMatrix,Number}) = inv(x) рдЖрджрд┐ рд╣реЛрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

A'с╡А рд▓рд┐рдЦрдирд╛ рд╢рд╛рдпрдж Aс╡А рдЬрд┐рддрдирд╛ рд╕рд╛рдл рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП с╡А рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдирд╛рдореЛрдВ рдХреЛ рдкрджрд╛рд╡рдирдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдиреЙрди-рдмреНрд░реЗрдХрд┐рдВрдЧ рдлреАрдЪрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЪрддреБрд░ рд╕рдордЭреМрддрд╛ рд╣реИред рдореБрдЭреЗрдВ рдпрд╣ рдкрд╕рдВрдж рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ ' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖ рд░рд╣рд╛ рд╣реИ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ 'рдлрдВрдХреНрд╢рди' рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖ рд░рд╣рд╛ рд╣реИ

apostrophe ? рдмрд╣реБрдд рд╢рд╛рдмреНрджрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ...

рдХреНрдпрд╛ рдЙрдкрд╕рд░реНрдЧ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдкрд╖реНрдЯ (')(A) рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде?)? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ https://github.com/JuliaLang рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реВ рдХрд┐рдП рдЧрдП if-you-can-define-the-symbol-name-then-you-can-override-its-syntax рдирд┐рдпрдо рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ:

julia> (')(A)


ERROR: syntax: incomplete: invalid character literal

julia> (')(A) = 2


ERROR: syntax: incomplete: invalid character literal

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ ' рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдХрдард┐рди рд╡рд░реНрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рдорд╛рдгреБ (рдЕрдХреНрд╖рд░) рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдмрд╣реБрдд рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ (рд╕реНрд╡рдпрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рдмрд░рд╛рдмрд░)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ (')' рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ ' $ рдХрд╛ рдПрдХ рдЖрд╡реЗрджрди рд╣реИ, рдпрд╛ рдПрдХ рдЦреБрд▓реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрд╛рдж ')' рд╢рд╛рдмреНрджрд┐рдХ рд╣реИ?

рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛ рдЕрд▓реНрдкрд╛рд╡рдзрд┐ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реИ, рд╡рд╣ рд╣реИ рдЪрд░рд┐рддреНрд░ рд╢рд╛рдмреНрджрд┐рдХреЛрдВ рдХреЛ ' рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп c"_" рдЬреИрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд░ ' рдбреЙрдЯ-рдХреЛрд▓рди рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ Base.:' рдХрд╛рдо рдХрд░реЗ?

рдмреЗрд╢рдХ (@__MODULE__).:'(x) = function_body рд▓рд┐рдЦрдирд╛ рдереЛрдбрд╝рд╛ рдмреЛрдЭрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди (x)' = function_body рдХреЛ рд╡рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдирд╣реАрдВ, рдЪреВрдВрдХрд┐ (x)' рдХреЛ ' рдореЗрдВ Base рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдк рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ ' рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдмреЛрдЭрд┐рд▓ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдпрд╛ '' рдХреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ ' рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрдм рдЗрд╕реЗ рдЕрдиреНрдпрдерд╛ рдПрдХ рдЦрд╛рд▓реА рд╡рд░реНрдг рд╢рд╛рдмреНрджрд┐рдХ (рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ-рд╕реНрддрд░реАрдп рддреНрд░реБрдЯрд┐ рд╣реИ) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реА рддрд░рд╣, ''с╡Г рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░реЗрдЧрд╛ 'с╡Г , рдЖрджрд┐ред

рд╕рдм рдХреБрдЫ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рд╡рд╣ рдЕрднреА рднреА рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдкрд╛рд░реНрд╕ рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 2'' рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ ' рд╣реИ рдЬрд┐рд╕реЗ 2 $ рдкрд░ рджреЛ рдмрд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд▓реЗрдХрд┐рди 2*'' рдЕрдм рд╣реЛрдЧрд╛ рдкрд╛рд░реНрд╕ рдХреЛ рджреЛ рдЧреБрдирд╛ ' рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВред

рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ a'' === a рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди ''(a) === a' ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ Base.apostrophe рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд▓рдЧрддрд╛ рд╣реИ (рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ)ред

рдХреНрдпрд╛ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдПрдХ рдирдП Github рдореБрджреНрджреЗ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ ' рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝рд┐рд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ?

рдХреНрдпрд╛ рдореБрджреНрджреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддрд░реАрдХрд╛ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рдореБрдЭреЗ рдмрд╕ рдПрдХ рдирдпрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдмрд╛рдж рд╡рд╛рд▓рд╛

рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд┐рддрд┐ рдЬрд╣рд╛рдВ рдПрдХ рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдЯреА рдиреЛрдЯреЗрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдЖрдк рдкрд░рдорд┐рдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рдиреНрди рд░реИрдЦрд┐рдХ рдСрдкрд░реЗрдЯрд░ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдФрдЪрд┐рддреНрдп рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

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

рдореИрдВ transpose рдХреЗ рдХрдИ рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ (рд╢рд╛рдпрдж рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░рдиреЗ рд╕реЗ рдмрдЪ рд╕рдХрддрд╛ рд╣реВрдВ?)

using LinearAlgebra

# f : RтБ┐ тЖТ R
#     x  тЖж f(x) = xс╡А * x / 2
f(x) = 0.5 * transpose(x) * x

# Fr├йchet derivative of f
# Df : RтБ┐ тЖТ L(RтБ┐, R)
#      x  тЖж Df(x) : RтБ┐ тЖТ R (linear, so expressed via multiplication)
#                   h  тЖж Df(x)(h) = Df(x) * h
Df(x) = transpose(x) 

# Complex-step method version of Df
function CSDf(x) 
    out = zeros(eltype(x), 1, length(x))
        for i = 1:length(x)
        x2 = copy(x) .+ 0im
        h = x[i] * 1e-50
        x2[i] += im * h
        out[i] = imag(f(x2)) / h
    end
    return out
end

# 2nd Fr├йchet derivative
# D2f : RтБ┐ тЖТ L(RтБ┐ тКЧ RтБ┐, R)
#       x  тЖж D2f(x) : RтБ┐ тКЧ RтБ┐ тЖТ R (linear, so expressed via multiplication)
#                     hтВБ тКЧ hтВВ тЖж D2f(x)(hтВБ тКЧ hтВВ) = hтВБс╡А * D2f(x) * hтВВ
D2f(x) = Matrix{eltype(x)}(I, length(x), length(x))

# Complex-step method version of D2f
function CSD2f(x)
    out = zeros(eltype(x), length(x), length(x))
    for i = 1:length(x)
        x2 = copy(x) .+ 0im
        h = x[i] * 1e-50
        x2[i] += im * h
        out[i, :] .= transpose(imag(Df(x2)) / h)
    end
    return out
end 

# Test on random vector x of size n
n = 5
x = rand(n)
Df(x) тЙИ CSDf(x)
D2f(x) тЙИ CSD2f(x)

# test that the 1st derivative is correct Fr├йchet derivative
x╧╡ = тИЪeps(norm(x))
for i = 1:10
    h = x╧╡ * randn(n) # random small y
    println(norm(f(x + h) - f(x) - Df(x) * h) / norm(h)) # Fr├йchet check
end

# test that the 2nd derivative is correct 2nd Fr├йchet derivative
for i = 1:10
    hтВБ = randn(n) # random hтВБ
    hтВВ = x╧╡ * randn(n) # random small hтВВ
    println(norm(Df(x + hтВВ) * hтВБ - Df(x) * hтВБ - transpose(hтВБ) * D2f(x) * hтВВ) / norm(hтВВ)) # Fr├йchet check
end
# Because f is quadratic, we can even check that f is equal to its Taylor expansion
h = rand(n)
f(x + h) тЙИ f(x) + Df(x) * h + 0.5 * transpose(h) * D2f(x) * h

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ f рдФрд░ Df рдХреЛ transpose рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЖрд╕рдиреНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдЬрдЯрд┐рд▓ рдХрджрдо рд╡рд┐рдзрд┐ рд╕реБрдкрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рднреЗрджрднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдл рд╣реИрдХ/рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рднрд╛рд╖рд╛ рдХреБрд╢рд▓ рдмрд┐рд▓реНрдЯрд┐рди рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХреБрд╢рд▓ Dual рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рднреЗрджрднрд╛рд╡ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВред

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

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

рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рд╣рд░реНрдорд┐рдЯрд┐рдпрди рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝рд░ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдШрдирддреНрд╡ рд▓рдЧрднрдЧ 1 рд╕реЗ 1 рд╣реИред рддреЛ рдЕрдкрд░рд╛рдЬрд┐рдд рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдмрд╛рд╣рд░реА рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдЕрдиреНрдп рдХреЛрдб рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд░рдиреЗ рдпрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрди рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЖрдХрд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

рдореИрдВ рдЕрднреА рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдХреНрд░реЛ рдпрд╛ рдПрдХ рдХреИрд░реЗрдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреБрд░рд╛рдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕рдордХрдХреНрд╖ рдХреНрдпрд╛ рд╣реИ, рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ () рдпрд╛ рдкрд░рдорд┐рдЯрд┐рдореНрд╕ ()?

transpose рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ рдФрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реИ, рдФрд░ permutedims рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреА рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП рд╣реИред

рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрддрдирд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рддрдирд╛ рдХрд┐ рдЖрд╕рдиреНрдиред рдореИрдВ рд╡рд╣реА рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдореИрдВ рдЧрд▓рддрд┐рдпрд╛рдБ рдХрд░рддрд╛ рдерд╛ рдЬрд╣рд╛рдБ рдореЗрд░рд╛ рдбреЗрдЯрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдерд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реГрддреНрдд рд╣реБрдЖ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рдиреНрди рд╕рд╣реА рдСрдкрд░реЗрд╢рди рдерд╛ (рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд - рдореЗрд░реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП рдЖрд╕рдиреНрди рд╕рд╣реА рдСрдкрд░реЗрд╢рди рдерд╛)ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ (рдХрдИ) рд╡реИрдз рдЕрдкрд╡рд╛рдж рд╣реИрдВред

рдЗрд▓реЗрдХреНрдЯреНрд░реЛрдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣рд░ рдЪреАрдЬ рдореЗрдВ, рдЖрдк рдЕрдХреНрд╕рд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЬреИрд╕реЗ рд╡реИрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрд░ ^ n (рдЖрдорддреМрд░ рдкрд░ n = 3) рдореЗрдВ рд╡реЗрдХреНрдЯрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд transpose рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рднрд▓реЗ рд╣реА рдЖрдкрдХреЗ рд╡реИрдХреНрдЯрд░ рдЬрдЯрд┐рд▓-рдореВрд▓реНрдпрд╡рд╛рди рд╣реЛрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХ рдлреВрд░рд┐рдпрд░ рд░реВрдкрд╛рдВрддрд░рдг рд▓рд┐рдпрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ @mattcbro рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИред

рдРрд╕рд╛ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐, рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЪрд░реНрдЪрд╛рдУрдВ рдкрд░ рдкрдврд╝рддреЗ рд╕рдордп, рдореИрдВ рдЕрдХреНрд╕рд░ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд░реНрдмреЛрдЬрд╝ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╡рд╣ рдЪреАрдЬ рд╣реИ рдЬреЛ рдореЗрд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЧрддрд┐ рдпрд╛ рджрдХреНрд╖рддрд╛ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддреА рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рдмрд╕реЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ/рдХреБрд╢рд▓ рддрд░реАрдХреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

рдЗрд▓реЗрдХреНрдЯреНрд░реЛрдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣рд░ рдЪреАрдЬ рдореЗрдВ, рдЖрдк рдЕрдХреНрд╕рд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЬреИрд╕реЗ рд╡реИрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрд░ ^ рдПрди (рдЖрдорддреМрд░ рдкрд░ рдПрди = 3) рдореЗрдВ рд╡реЗрдХреНрдЯрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╛рдиреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛, рднрд▓реЗ рд╣реА рдЖрдкрдХреЗ рд╡реИрдХреНрдЯрд░ рдЬрдЯрд┐рд▓-рдореВрд▓реНрдпрд╡рд╛рди рд╣реЛрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдлреВрд░рд┐рдпрд░ рд▓рд┐рдпрд╛ рд╣реИ рдкрд░рд┐рд╡рд░реНрддрдиред

рдЬрд░реВрд░реА рдирд╣реАред рдЕрдХреНрд╕рд░ рдЖрдк рдлреВрд░рд┐рдпрд░ рдЖрдпрд╛рдореЛрдВ рд╕реЗ рд╕рдордп-рдФрд╕рдд рдорд╛рддреНрд░рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдк рдЬрдЯрд┐рд▓ рдбреЙрдЯ рдЙрддреНрдкрд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ┬╜тДЬ[ЁЭРД*├ЧЁЭРЗ] рдЬрдЯрд┐рд▓ рдлреВрд░рд┐рдпрд░ рдШрдЯрдХреЛрдВ рд╕реЗ рд╕рдордп-рдФрд╕рдд рдкреЙрдпрдВрдЯрд┐рдВрдЧ рдкреНрд░рд╡рд╛рд╣ рд╣реИ рдФрд░ ┬╝╬╡тВА|ЁЭРД|┬▓ рдПрдХ рд╣реИ рд╕рдордп-рдФрд╕рдд рд╡реИрдХреНрдпреВрдо рдКрд░реНрдЬрд╛ рдШрдирддреНрд╡ред рджреВрд╕рд░реА рдУрд░, рдЪреВрдВрдХрд┐ рдореИрдХреНрд╕рд╡реЗрд▓ рдСрдкрд░реЗрдЯрд░ (рдЖрдорддреМрд░ рдкрд░) рдПрдХ рдЬрдЯрд┐рд▓-рд╕рдордорд┐рдд рдСрдкрд░реЗрдЯрд░ ("рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ") рд╣реИ, рдЖрдк рдЕрдХреНрд╕рд░ ЁЭРД(ЁЭР▒) рдЖрджрд┐ рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ (рдЕрдирдВрдд-рдЖрдпрд╛рдореА) рдмреАрдЬрдЧрдгрд┐рдд рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕рдВрдмрджреНрдз "рдЖрдВрддрд░рд┐рдХ рдЙрддреНрдкрд╛рдж" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕рднреА рдЬрдЧрд╣ред

рдпрд╣ рд╕рдЪ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╡рд╛рдХреНрдп рдореЗрдВ рдЕрдХреНрд╕рд░ рд╢рдмреНрдж рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ :-)ред

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

рдЗрди рдмреАрдЬрдЧрдгрд┐рддреЛрдВ рдореЗрдВ рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрди morphisms рдХреЛ рдЕрдХреНрд╕рд░ рдЬрдЯрд┐рд▓ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝, рд╣рд░реНрдорд┐рдЯрд┐рдпрди рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдФрд░ рд╕рдВрдпреБрдЧреНрдорди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред

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

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ xH рдФрд░ xT . рдХреЗ рд╕реБрдкреАрд░рд┐рдпрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдкрдХреНрд╖ рд▓реЗрддрд╛ рд╣реВрдВ

1.0 рдореЗрдВ рдЕрдм рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдХреБрд╢рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

function Base.getproperty(x::AbstractMatrix, name::Symbol)
    if name === :T
        return transpose(x) 
    #elseif name === :H # can also do this, though not sure why we'd want to overload with `'`
    #    return adjoint(x)
    else
        return getfield(x, name)
    end
end 

рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди рдФрд░ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рд╣реИред рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ getproperty рдХреЗ рдСрд░реНрдереЛрдЧреЛрдирд▓ рдЙрдкрдпреЛрдЧ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдмрдирддреЗ рд╣реИрдВред рддреЛ рдХрд┐рд╕реА рдХреЛ рднреА рдЕрдкрдиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рдХрд╛рд░ рдкрд░ getproperty рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╣рд╛рде рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЧреЗрдЯрдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдСрд░реНрдереЛрдЧреЛрдирд▓ рдЙрдкрдпреЛрдЧ рд░рдЪрдирд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ

рд╣рдореНрдоред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ xT "рдЪрд╛рд╣рд┐рдП" рдХреЛ рдХрдо рдХрд░рдХреЗ getproperty(x, Val(:T)) рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд╛рдВрдкрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЧрд░реАрдм рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред

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

(рдЖрдкрдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ Val рдкреНрд░реЗрд╖рдг рдкрд░рдд рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ)ред

@ c42f рдХрд╛ рдХреЛрдб рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдореИрдВ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ 0.64 рдФрд░ рдКрдкрд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдпрд╛ рддреЛ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдпрд╛ рдореЗрд░реЗ рдЕрдкрдиреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдЯреА (рдП) = рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ (рдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдПрдХ рдореИрдХреНрд░реЛ рдереЛрдбрд╝рд╛ рд╕рд╛рдл рдФрд░ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реЛрддрд╛ред

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ getproperty рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдпрд╣ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ ;-) рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢рд╛рдпрдж рдПрдХ рджрд┐рди рд╣рдореЗрдВ рдЙрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЕрдиреБрднрд╡ рд╣реЛрдЧрд╛ рдЬреЛ рд╣рдо x.T рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ Base ред

рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрд░реНрде рдореЗрдВ, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЬреЗрдиреЗрд░рд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ "рдЧреЗрдЯрд░реНрд╕" рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд░рд╛рдм рдХреНрдпреЛрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреЗрдиреЗрд░рд┐рдХ рдлрд╝реАрд▓реНрдб рдЧреЗрдЯреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдмрдбрд╝реА рдирд╛рдорд╕реНрдерд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ getproperty рдХреЗ рд╡рд┐рд╡реЗрдХрдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред x.A рд▓рд┐рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ MyModule.A(x) рд▓рд┐рдЦрдирд╛ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЕрдЪреНрдЫрд╛ рд╣реИ, get_my_A(x) рдЬреИрд╕реЗ рдХреБрдЫ рд▓рдВрдмреЗ рдмрджрд╕реВрд░рдд рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо, рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдмреЗрд╣рдж рд╕рд╛рдорд╛рдиреНрдп рдирд╛рдо A рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдорд╛рдкрд╛рдВрдХред рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ, рд╕реБрдкрд░ рдкреНрд░рдХрд╛рд░ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд .A рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП .B рдХреЗ рдЕрд░реНрде рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд┐рдд рдХреНрд╖рдорддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП Val рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдзреА рдЧрдВрднреАрд░ рдЯрд┐рдкреНрдкрдгреАред

рдордЬреЗрджрд╛рд░ рд╡рд┐рдЪрд╛рд░:

julia> x'╠Д
ERROR: syntax: invalid character "╠Д"

рдЪрд░рд┐рддреНрд░ рдПрдХ T рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ ' рд╣реИ рдЬрд┐рд╕рдХреЗ рдКрдкрд░ рдПрдХ рдкрдЯреНрдЯреА рд╣реИред рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдЕрдЧрд░ рдЧрдВрднреАрд░...

screen shot 2018-09-10 at 11 29 56

рд╣рд╛рдБ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЧрд┐рдЯрд╣рдм рдкрд░ рднреА рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдУрд╡рд░рдмрд╛рд░ рд╣реИред рдореЗрд░реЗ рдЯрд░реНрдорд┐рдирд▓ рд╢реЛ рдореЗрдВ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ:

screen shot 2018-09-10 at 10 31 24 am

рдмрд╣реБрдд рдЪрд╛рд▓рд╛рдХ рдФрд░ рдкреНрдпрд╛рд░рд╛ред рдореИрдВ рдЕрднреА рднреА рд╕рдВрдпреЛрдЬрди рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 'с╡А рдЕрдЪреНрдЫрд╛ рд╣реИред

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

рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдпрд╛рди рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╣рдВрдХрд╛рд░ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдХреБрдЫ рд╕реАрдорд┐рдд рдЕрдиреБрдкрд╛рдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ _do not_ рдЪрд╛рд╣рддреЗ рд╣реИрдВ adjoint() рд▓реЗрдХрд┐рди _need_ transpose() ред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ ' рдСрдкрд░реЗрдЯрд░ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╛рдорд▓рд╛ рдФрд░ рдмрд┐рдВрджреБ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЫрджреНрдо рдЙрд▓рдЯрд╛ (A'*A)\(A *b) рдпрд╛ рдПрдХ рджреНрд╡рд┐рдШрд╛рдд рд░реВрдк v'*A*v рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд▓реМрдЯрдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ рд▓рдВрдмреЗ рдФрд░ рдЬрдЯрд┐рд▓ рдкрд░рд┐рдгрд╛рдо рдЬрд┐рдиреНрд╣реЗрдВ рдХрдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрдХрд▓рдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдЬреЛ ' рдХрд╛ рдЕрд░реНрде рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

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

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Keno picture Keno  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ararslan picture ararslan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

arshpreetsingh picture arshpreetsingh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

helgee picture helgee  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wilburtownsend picture wilburtownsend  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ