рдЕрдм рдЬрдмрдХрд┐ .op
рдЖрдо рддреМрд░ рдкрд░ op
рдХрд╛ рд╕рджрд┐рд╢ рд░реВрдк рд╣реИ, рдпрд╣ рдмрд╣реБрдд рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдХрд┐ .'
рдХрд╛ рдЕрд░реНрде рд╣реИ '
рдХреЗ рд╕рджрд┐рд╢ рд░реВрдк рдХреЗ рдмрдЬрд╛рдп рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХрд░рдирд╛ (рдЖрд╕рдиреНрди, рдЙрд░реНрдл тАЛтАЛctranspose ) рдпрд╣ рдореБрджреНрджрд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдФрд░/рдпрд╛ рдЖрд╕рдиреНрди рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдПрдВрдбреНрд░рд┐рдпрд╛рд╕ рдиреЗ #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_ рдЕрдиреБрдЧрд╛рдореА рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реВрдВред
рдореЗрд░рд╛ рдХреЛрдб рд░рд┐рдк рдХрд░реЗрдВ
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдореИрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рд╕реБрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдкрдХреНрд╖ рд▓реЗрддрд╛ рд╣реВрдВ
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрддрд╛ рдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдЬрдм рд╣рдо рдХреЗрд╡рд▓ T
рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВред
рдПрдХ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╕рдВрдЧрддрд┐ ...
рд╣рд╛рдВ, рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП .'
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрд╕рдВрдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рддрдХ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рднреА рд╡рд┐рдХрд▓реНрдк рдмрджрддрд░ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдХрд╣рдирд╛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдмреБрд░реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ " .'
рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рд╣реИ, рдбреЙрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдХрд╛ рдЕрдкрд╡рд╛рджред" рдЖрдк рдЗрд╕реЗ рд╕реАрдЦреЗрдВ рдФрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВред
рдПрдХ рдмрд╛рдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ .'
рдкрд░ рдбреЙрдЯ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдХрд┐рд╕реА рднреА рд╕рдВрднрд╛рд╡рд┐рдд рднреНрд░рдо рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рдпрд╣ рдПрдХ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░ рд╣реИ, рдЬрдмрдХрд┐ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд┐рдВрдЧ op.
рд╣реИ рдФрд░ рдЗрдВрдлрд┐рдХреНрд╕ .op
рд╣реИред рддреЛ рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ .
рдХрд╛ рдорддрд▓рдм рдкреНрд░рд╕рд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдЬрдм рдпрд╣ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рд╣реЛред рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ .
рдХрд╛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдлрд╝реАрд▓реНрдб рд▓реБрдХрдЕрдк рд╣реИ, рдФрд░ getfield(x, ')
рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдиреНрдп рдЕрд░реНрдереЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИред
(рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореИрдВ $# .'
transpose(x)
рдкрдХреНрд╖ рд▓реЗрддрд╛ рд╣реВрдВред)
@stevengj рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкрдВрдЬреАрдХреГрдд рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ .'
рдХреЗ 600+ рдЙрдкрдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдХрдИ (рд╢рд╛рдпрдж рдЕрдзрд┐рдХрд╛рдВрд╢) рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреАрдордд рдХреЗ '
рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред
рд╕рдВрднрд╡рдд: рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ "
рдФрд░ `
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред' рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкрдВрдЬреАрдХреГрдд рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ 'рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреАрдордд рдХреЗ рдкрдардиреАрдпрддрд╛' рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХреЛрдб рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рдмрд╛рд░ #23424 рд▓реИрдВрдб рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╡рдЧреИрд░рд╣ рдХреА рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ transpose
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди adjoint
рдирд╣реАрдВред x.'
рдХреЗ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ conj(x')
рдЬреИрд╕рд╛ рдХреБрдЫ рдмрди рдЬрд╛рдПрдЧрд╛ (рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЖрд▓рд╕реА рд╣реИ, рдпрд╛рдиреА рдореБрдлрд╝реНрдд)ред рдЬрдмрдХрд┐ рдореИрдВ рдЗрд╕рдХреА рдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рдХреЗ рд▓рд┐рдП .'
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рд╢рд╛рдпрдж рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рд╕реЗ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд╣реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдбреЗрдЯрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡рд░реНрддрдиреА-рдЖрдЙрдЯ transpose
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╡рд╣рд╛рдБ рдЕрднреА рднреА рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ "рдФрд░ `?
transpose()
рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рдЖрдИрдПрдордПрдЪрдУ рдХреЗрд╡рд▓ .'
рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ conj(x')
рдФрд░ transpose
рдХреЗ рд╕рд╛рде рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ .'
рдореИрдЯрд▓реИрдм рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдореИрдЯрд▓реИрдм рдЖрдЧреНрд░рд╣ рдХреЗ рдХрд╛рд░рдг рдЗрддрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХрд┐ рд╕реБрд╕рдВрдЧрдд рд╕реНрд▓рд╛рдЗрд╕рд┐рдВрдЧ рдирд┐рдпрдореЛрдВ рдХреА рдХрдореА рдХреЗ рд╕рд╛рде "рд╕рдм рдХреБрдЫ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ" рдЬреИрд╕реЗ рдХрд┐ рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдпрд╣рд╛рдБ рддрд░реНрдХреЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
.'
рдЕрдм рдПрдХ рдбреЙрдЯреЗрдб рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдХреЗрд▓рд╛ рд╕реНрдЯреИрдВрдбрдЖрдЙрдЯ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдЕрдирдбреЙрдЯреЗрдб рдСрдкрд░реЗрдЯрд░ рдПрд▓рд┐рдореЗрдВрдЯрд╡рд╛рдЗрдЬ рд▓рд╛рдЧреВ рдХрд░реЗрдВ"; рдореИрдЯрд▓реИрдм рд╕реЗ рдирд╣реАрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдПрдХ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдЬрд╛рд▓ рд▓рдЧрддрд╛ рд╣реИред
.'
рдЕрдм рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ: рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм 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ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ '
рдЖрд╕рдиреНрди рд╣реИ рдФрд░ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ .'
рд╕рдмрдСрдкреНрдЯрд┐рдорд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА (рд╕рдВрд░рдЪрдирд╛рддреНрдордХ) рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИред
рдареАрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрд┐рди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╕рднреА рд╕рд╣рдордд рд╣реИрдВ:
a'
рдХреЗ рд▓рд┐рдП adjoint(a)
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ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
рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ '
рд╣реИ рдЬрд┐рд╕рдХреЗ рдКрдкрд░ рдПрдХ рдкрдЯреНрдЯреА рд╣реИред рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдЕрдЧрд░ рдЧрдВрднреАрд░...
рд╣рд╛рдБ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЧрд┐рдЯрд╣рдм рдкрд░ рднреА рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдУрд╡рд░рдмрд╛рд░ рд╣реИред рдореЗрд░реЗ рдЯрд░реНрдорд┐рдирд▓ рд╢реЛ рдореЗрдВ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ:
рдмрд╣реБрдд рдЪрд╛рд▓рд╛рдХ рдФрд░ рдкреНрдпрд╛рд░рд╛ред рдореИрдВ рдЕрднреА рднреА рд╕рдВрдпреЛрдЬрди рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 'с╡А
рдЕрдЪреНрдЫрд╛ рд╣реИред
-100 рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрди рднрдпрд╛рдирдХ рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдЬреВрд▓рд┐рдпрд╛ рдХреЛрдб рдХреЛ рдЧрдгрд┐рдд рд▓рд┐рдЦрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА conjugate transpose рдЖрдорддреМрд░ рдкрд░ рдЖрдк рд╡реИрд╕реЗ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдпрд╛рди рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╣рдВрдХрд╛рд░ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдХреБрдЫ рд╕реАрдорд┐рдд рдЕрдиреБрдкрд╛рдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ _do not_ рдЪрд╛рд╣рддреЗ рд╣реИрдВ adjoint()
рд▓реЗрдХрд┐рди _need_ transpose()
ред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ '
рдСрдкрд░реЗрдЯрд░ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╛рдорд▓рд╛ рдФрд░ рдмрд┐рдВрджреБ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЫрджреНрдо рдЙрд▓рдЯрд╛ (A'*A)\(A
*b) рдпрд╛ рдПрдХ рджреНрд╡рд┐рдШрд╛рдд рд░реВрдк v'*A*v
рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд▓реМрдЯрдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ рд▓рдВрдмреЗ рдФрд░ рдЬрдЯрд┐рд▓ рдкрд░рд┐рдгрд╛рдо рдЬрд┐рдиреНрд╣реЗрдВ рдХрдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрдХрд▓рдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдЬреЛ '
рдХрд╛ рдЕрд░реНрде рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
tr(A)
рдорд╛рдзреНрдп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рдмрд╣реБрдд рдкреБрд░рдЬреЛрд░ рд╡рд┐рд░реЛрдз - рд╣рд░ рдХреЛрдИ рдпрд╣ рд╕реЛрдЪрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрд░реНрде рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЯреНрд░реЗрд╕ рд╣реИ: https://en.wikipedia.org/wiki/Trace_ (linear_algebra)