Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π½Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†: C# .Net: Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Β«Π£Π²Ρ‹, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это сам.Β»
ΠœΠΎΡ€Ρ„Π΅ΡƒΡ (ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π°, 1999)

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° выглядит ΠΊΠ°ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π° чисСл, записанных Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ порядкС. НапримСр, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

\[ \boldsymbol{A}= \begin{pmatrix} 1 & 6 & 11 \\ 2 & 7 & 13 \\ 3 & 8 & 15 \\ 4 & 9 & 18 \\ 5 & 0 & 19 \end{pmatrix} \]

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° \(\boldsymbol{A}\). ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ Π·Π°Π³Π»Π°Π²Π½Ρ‹ΠΌΠΈ Π±ΡƒΠΊΠ²Π°ΠΌΠΈ (ΠΈΠ½ΠΎΠ³Π΄Π° Π΅Ρ‰Π΅ ΠΈ ΠΏΠΎΠ»ΡƒΠΆΠΈΡ€Π½Ρ‹ΠΌ написаниСм, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…). ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ строк ΠΈ столбцов опрСдСляСт Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Π’ΠΎ Π΅ΡΡ‚ΡŒ данная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 5Γ—3 β€” \(\boldsymbol{A}_{5Γ—3}\). ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° сначала указываСтся количСство строк, Π·Π°Ρ‚Π΅ΠΌ β€” число столбцов.

Ну, ΠΈ, собствСнно, всё. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°.

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ. Рассмотрим систСму.

\[ \begin{cases}a_{11}x_1 + a_{12}x_2 + \ldots + a_{1m}x_m = b_1 \\a_{21}x_1 + a_{22}x_2 + \ldots + a_{2m}x_m = b_2 \\ \dots \dots \dots \dots \dots \dots \dots \dots \dots \dots \\a_{n1}x_1 + a_{n2}x_2 + \ldots + a_{nm}x_m = b_n \end{cases} \]

БистСма состоит ΠΈΠ· \(n\) Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ \(m\) нСизвСстных. Π•Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅:

\[ \boldsymbol{A}\boldsymbol{x}= \boldsymbol{b}, \]

Π³Π΄Π΅

\[ \boldsymbol{A}= \begin{pmatrix} a_{11} & a_{12} & \dots & a_{1m} \\ a_{21} & a_{22} & \dots & a_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \dots & a_{nm} \end{pmatrix} ; \quad \boldsymbol{x}= \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_m \end{pmatrix} ; \quad \boldsymbol{b}= \begin{pmatrix} b_1 \\ b_2 \\ \vdots \\ b_n \end{pmatrix} \]

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ коэффициСнтов систСмы \(\boldsymbol{A}\). Π Π°Π·ΠΌΠ΅Ρ€ этой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ \(n Γ— m\). Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π΄Π²Π΅ особых ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ \(\boldsymbol{x}\) ΠΈ \(\boldsymbol{b}\). ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ столбов Ρƒ Π½ΠΈΡ… Ρ€Π°Π²Π½ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅. Π’Π°ΠΊΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ носят Π½Π°Π·Π²Π°Π½ΠΈΠ΅

Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ².

Но вСдь ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ всСго с ΠΎΠ΄Π½ΠΎΠΉ строкой. НапримСр, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ \(\boldsymbol{c}\):

\[ \boldsymbol{c}= \begin{pmatrix} c_1 & c_2 & \dots & c_k \end{pmatrix} \]

Для большСй точности принята ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ тСрминология: Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π²ΠΈΠ΄Π° \(\boldsymbol{x}\) Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«Π²Π΅ΠΊΡ‚ΠΎΡ€-столбСц», Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π²ΠΈΠ΄Π° \(\boldsymbol{c}\) Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«Π²Π΅ΠΊΡ‚ΠΎΡ€-строка». Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ часто Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡƒΠΆΠΈΡ€Π½Ρ‹ΠΌ Π½Π°Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ ΠΈΡ… ΠΎΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ столбцы ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², Ρ‚ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ \(\boldsymbol{A}\) ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ способом: \[ \boldsymbol{A}= \begin{pmatrix} \boldsymbol{A}_1 & \boldsymbol{A}_2 & \dots & \boldsymbol{A}_m \end{pmatrix}, \]

Π³Π΄Π΅

\[ \boldsymbol{A}_i = \begin{pmatrix} a_{1i} \\ a_{2i} \\ \vdots \\ a_{ni} \end{pmatrix}, \quad 0<i \leq m \]

Ок, Π½ΠΎ остаСтся вопрос: ΠΏΠΎΡ‡Π΅ΠΌΡƒ матричная запись Ρ€Π°Π²Π½ΠΎΡΠΈΠ»ΡŒΠ½Π° ΠΏΡ€ΠΈΡ‡Π½ΠΎΠΉ Π½Π°ΠΌ записи систСмы?


Π”Π΅Ρ‚Π°Π»ΡŒ 1

Π•ΡΡ‚ΡŒ Π΄Π²Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹: Сдиничная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° \(\boldsymbol{E}\) (ΠΈΠ½ΠΎΠ³Π΄Π° \(\boldsymbol{I}\)) ΠΈ нулСвая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° \(\boldsymbol{O}\): \[ \boldsymbol{E}= \begin{pmatrix} 1 & 0 & \dots & 0 \\ 0 & 1 & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \dots & 1 \end{pmatrix} ; \quad \boldsymbol{O}= \begin{pmatrix} 0 & 0 & \dots & 0 \\ 0 & 0 & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \dots & 0 \end{pmatrix} \]

Π”Π΅Ρ‚Π°Π»ΡŒ 2

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ \(n Γ— n\) называСтся ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ.

ΠšΠ²Π°Π΄Ρ€Π°Ρ‚Π½Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, всС элСмСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, ΠΊΡ€ΠΎΠΌΠ΅ стоящих Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ, Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ, называСтся диагональной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ

.


Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†

Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

\[ \boldsymbol{A}_{nΓ—m} + \boldsymbol{B}_{nΓ—m} = \begin{pmatrix} a_{11} + b_{11} & a_{12} + b_{12} & \dots & a_{1m} + b_{1m} \\ a_{21} + b_{21} & a_{22} + b_{22} & \dots & a_{2m} + b_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} + b_{n1} & a_{n2} + b_{n2} & \dots & a_{nm} + b_{nm} \end{pmatrix} \]

Бвойства слоТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†:

  1. \(\boldsymbol{A}+ \boldsymbol{B}= \boldsymbol{B}+ \boldsymbol{A}\) (ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ)
  2. \((\boldsymbol{A}+ \boldsymbol{B}) + \boldsymbol{C}= \boldsymbol{A}+ (\boldsymbol{B}+ \boldsymbol{C})\) (Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ)
  3. \(\boldsymbol{A}+ \boldsymbol{O}= \boldsymbol{A}\) (сущСствованиС Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ элСмСнта)
  4. \(\boldsymbol{A}+ (-\boldsymbol{A}) = \boldsymbol{O}\) (сущСствованиС ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ элСмСнта)

ВсС, описанноС Π²Ρ‹ΡˆΠ΅, справСдливо для Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ².

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° число

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° вСщСствСнноС число ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ для любой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ \(n Γ— m\).

\[ \lambda \boldsymbol{A}= \begin{pmatrix} \lambda a_{11} & \lambda a_{12} & \dots & \lambda a_{1m} \\ \lambda a_{21} & \lambda a_{22} & \dots & \lambda a_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ \lambda a_{n1} & \lambda a_{n2} & \dots & \lambda a_{nm} \end{pmatrix}, \; \forall \lambda \in \mathbb{R} \]

Бвойства умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° число:

  1. \(1 \cdot \boldsymbol{A}= \boldsymbol{A}\)
  2. \(-1 \cdot \boldsymbol{A}= -\boldsymbol{A}\)
  3. \(\lambda(\mu \boldsymbol{A}) = (\lambda \mu) \boldsymbol{A}\) (Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ)
  4. \((\lambda + \mu) \boldsymbol{A}= \lambda \boldsymbol{A}+ \mu \boldsymbol{A}\) (Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ)
  5. \(\lambda (\boldsymbol{A}+ \boldsymbol{B}) = \lambda \boldsymbol{A}+ \lambda \boldsymbol{B}\) (Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ)

ВсС, описанноС Π²Ρ‹ΡˆΠ΅, справСдливо для Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ².

Π‘ΠΊΠ°Π»Π°Ρ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ для Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ размСрности ΠΊΠ°ΠΊ сумма ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

\[ \boldsymbol{a}= \begin{pmatrix} a_1 & a_2 & \dots & a_n \end{pmatrix} \\ \boldsymbol{b}= \begin{pmatrix} b_1 & b_2 & \dots & b_n \end{pmatrix}\\ \] \[ \boldsymbol{a}\cdot \boldsymbol{b}= a_1 b_1 + a_2 b_2 + \dots + a_n b_n \]

ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ πŸ™‚

Ну, Π²ΠΎΡ‚ ΠΈ начался Ρ‚Ρ€Π΅Ρˆ.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ для ΠΌΠ°Ρ‚Ρ€ΠΈΡ† \(\boldsymbol{A}_{n Γ— k}\) ΠΈ \(\boldsymbol{B}_{k Γ— m}\), Ρ‚ΠΎ количСство столбцов ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, стоящСй слСва ΠΎΡ‚ Π·Π½Π°ΠΊΠ° умноТСния, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½ΠΎ количСство строк ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, стоящСй справа ΠΎΡ‚ Π·Π½Π°ΠΊΠ° умноТСния.

ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ \(\boldsymbol{A}_{n Γ— k}\) Π½Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ \(\boldsymbol{B}_{k Γ— m}\) называСтся ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° \(\boldsymbol{C}_{n Γ— m}\), элСмСнт ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ \(c_{ij}\) Ρ€Π°Π²Π΅Π½ скалярному ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ \(i\)-Π³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°-строки ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ \(\boldsymbol{A}\) ΠΈ \(j\)-Π³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°-столбца ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ \(\boldsymbol{B}\).

ΠŸΡƒΡΡ‚ΡŒ \[ \boldsymbol{A}= \begin{pmatrix} \boldsymbol{a}_1 \\ \boldsymbol{a}_2 \\ \vdots \\ \boldsymbol{a}_n \end{pmatrix} = \begin{pmatrix} a_{11} & a_{12} & \dots & a_{1k} \\ a_{21} & a_{22} & \dots & a_{2k} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \dots & a_{nk} \end{pmatrix}, \\ \boldsymbol{B}= \begin{pmatrix} \boldsymbol{b}_1 & \boldsymbol{b}_2 & \dots \boldsymbol{b}_m \end{pmatrix} = \begin{pmatrix} b_{11} & b_{12} & \dots & b_{1m} \\ b_{21} & b_{22} & \dots & b_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ b_{k1} & b_{k2} & \dots & b_{km} \end{pmatrix} \]

Π’ΠΎΠ³Π΄Π°,

\[ \boldsymbol{A}\times \boldsymbol{B}= \begin{pmatrix} \boldsymbol{a}_1 \cdot \boldsymbol{b}_1 & \boldsymbol{a}_1 \cdot \boldsymbol{b}_2 & \dots & \boldsymbol{a}_1 \cdot \boldsymbol{b}_m \\ \boldsymbol{a}_2 \cdot \boldsymbol{b}_1 & \boldsymbol{a}_2 \cdot \boldsymbol{b}_2 & \dots & \boldsymbol{a}_2 \cdot \boldsymbol{b}_m \\ \vdots & \vdots & \ddots & \vdots \\ \boldsymbol{a}_n \cdot \boldsymbol{b}_1 & \boldsymbol{a}_n \cdot \boldsymbol{b}_2 & \dots & \boldsymbol{a}_n \cdot \boldsymbol{b}_m \\ \end{pmatrix} = \\ = \begin{pmatrix} (a_{11} b_{11} + a_{12} b_{21} + \dots + a_{1k}b_{k1}) & (a_{11} b_{12} + a_{12} b_{22} + \dots + a_{1k}b_{k2}) & \dots & (a_{11} b_{1m} + a_{12} b_{2m} + \dots + a_{1k}b_{km}) \\ (a_{21} b_{11} + a_{22} b_{21} + \dots + a_{2k}b_{k1}) & (a_{21} b_{12} + a_{22} b_{22} + \dots + a_{2k}b_{k2}) & \dots & (a_{21} b_{1m} + a_{22} b_{2m} + \dots + a_{2k}b_{km}) \\ \vdots & \vdots & \ddots & \vdots \\ (a_{n1} b_{11} + a_{n2} b_{21} + \dots + a_{nk}b_{k1}) & (a_{n1} b_{12} + a_{n2} b_{22} + \dots + a_{nk}b_{k2}) & \dots & (a_{n1} b_{1m} + a_{n2} b_{2m} + \dots + a_{nk}b_{km}) \end{pmatrix} = \\ = \begin{pmatrix} c_{11} & c_{12} & \dots & c_{1m} \\ c_{21} & c_{22} & \dots & c_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ c_{n1} & c_{n2} & \dots & c_{nm} \end{pmatrix} = \boldsymbol{C} \]

\[ c_{ij} = \sum_{t=1}^k a_{it} b_{tj} \]

Π’ΠΎΡ‚ Ρ‚Π°ΠΊ Π²ΠΎΡ‚.

Cвойства произвСдСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†:

  1. \(\boldsymbol{A}(\boldsymbol{B}\boldsymbol{C}) = (\boldsymbol{A}\boldsymbol{B}) \boldsymbol{C}\) (Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ)
  2. \(\lambda (\boldsymbol{A}\boldsymbol{B}) = (\lambda \boldsymbol{A}) \boldsymbol{B}= (\lambda \boldsymbol{B}) \boldsymbol{A}\) (Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ)
  3. \(\boldsymbol{A}(\boldsymbol{B}+ \boldsymbol{C}) = \boldsymbol{A}\boldsymbol{B}+ \boldsymbol{A}\boldsymbol{C}\) (Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ)
  4. \((\boldsymbol{A}+ \boldsymbol{B}) \boldsymbol{C}= \boldsymbol{A}\boldsymbol{C}+ \boldsymbol{B}\boldsymbol{C}\) (Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ)
  5. \(\boldsymbol{A}\boldsymbol{B}\neq \boldsymbol{B}\boldsymbol{A}\) (отсутствиС коммутативности)
  6. \(\boldsymbol{E}\boldsymbol{A}= \boldsymbol{A}; \, \boldsymbol{A}\boldsymbol{E}= \boldsymbol{A}\) (ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ элСмСнт)
  7. \(\boldsymbol{O}\boldsymbol{A}= \boldsymbol{O}; \, \boldsymbol{A}\boldsymbol{O}= \boldsymbol{O}\) (ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π½ΡƒΠ»Π΅Π²ΠΎΠΉ элСмСнт)
  8. \(\boldsymbol{A}\boldsymbol{A}^{-1} = \boldsymbol{A}^{-1} \boldsymbol{A}= \boldsymbol{E}\) (ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†)

ΠœΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠ΅ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ для Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²-столбцов (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†-столбцов) ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²-строк (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†-строк) ΠΈ выполняСтся ΠΏΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ. \mathrm{T}\)

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»Π΅ значСния элСмСнтов ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ построчно. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ строки раздСляйтС ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, строки раздСляйтС запятыми.

АссСмблСр ARM64 | Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сопроцСссора Neon

ПослСднСС обновлСниС: 21.01.2023

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† являСтся довольно распространСнной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, которая примСняСтся Π² самых Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вычислСниях. И использованиС сопроцСссора Neon позволяСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. Π’Π°ΠΊ, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 3×3 фактичСски прСдставляСт Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€:


Ccol1 = A βˆ— Bcol1
Ccol2 = A βˆ— Bcol2
Ccol3 = A βˆ— Bcol3

Если ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ числа a, d ΠΈ g Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΎΡ€ΠΎΠΆΠΊΠΈ рСгистра V сопроцСссора Neon, Π° числа b, e ΠΈ h Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΎΡ€ΠΎΠΆΠΊΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ рСгистра, Π° числа c, f ΠΈ i Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΎΡ€ΠΎΠΆΠΊΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ рСгистра, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ столбСц Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π˜Ρ‚Π°ΠΊ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ main. s ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ


// ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для умноТСния 2 ΠΌΠ°Ρ‚Ρ€ΠΈΡ† 3x3 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сопроцСссора NEON
//
// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ рСгистры:
// D0 - ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ столбСц ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ A
// D1 - Π²Ρ‚ΠΎΡ€ΠΎΠΉ столбСц ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ A
// D2 - Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ столбСц ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ A
// D3 - ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ столбСц ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ B
// D4 - Π²Ρ‚ΠΎΡ€ΠΎΠΉ столбСц ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ B
// D5 - Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ столбСц ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ B
// D6 - ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ столбСц ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ C
// D7 - Π²Ρ‚ΠΎΡ€ΠΎΠΉ столбСц ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ C
// D8 - Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ столбСц ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ C
.global main
main:
    STP X19, X20, [SP, #-16]!
    STR LR, [SP, #-16]!
// Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ A Π² рСгистры D0, D1, D2
    LDR X0, =A                  // адрСс ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ A
    LDP D0, D1, [X0], #16
    LDR D2, [X0]
// Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ B Π² рСгистры D3, D4, D5
    LDR X0, =B                  // адрСс ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ B
    LDP D3, D4, [X0], #16
    LDR D5, [X0]
// макрос для умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†
.macro mulcol ccol bcol
    MUL \ccol\().4H, V0.4H, \bcol\(). 4H[0]
    MLA \ccol\().4H, V1.4H, \bcol\().4H[1]
    MLA \ccol\().4H, V2.4H, \bcol\().4H[2]
.endm

    mulcol V6, V3               // ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ столбСц
    mulcol V7, V4               // ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ столбСц
    mulcol V8, V5               // ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ столбСц
    LDR X1, =C                  // адрСс ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ C
    STP D6, D7, [X1], #16       // сохраняСм Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π‘
    STR D8, [X1]
// Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ C Π½Π° консоль
// ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ 3 строкам ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ Π·Π° Ρ€Π°Π· числа ΠΈΠ· Ρ‚Ρ€Π΅Ρ… стоблцов
    MOV W19, #3                 // счСтчик 3 строк
    LDR X20, =C                 // адрСс Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹
printloop:
    LDR X0, =prtstr             // Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ строку форматирования 
// для Π²Ρ‹Π²ΠΎΠ΄Π° транспонируСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, пСрСйдя ΠΊ стандартному Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΠΎ столбцам
// прибавляСм ΠΊ адрСсу 2 для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки
// ΠΊ адрСсу Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ инструкции ldrh добавляСм 6, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 2+6=8=Ρ€Π°Π·ΠΌΠ΅Ρ€ строки
// Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ инструкции ldh прибавляСм ΠΊ адрСсу 2+14=16 Π±Π°ΠΉΡ‚, Ρ‡Ρ‚ΠΎ прСдставляСт Ρ€Π°Π·ΠΌΠ΅Ρ€ 2-ΠΉ строки
    LDRH W1, [X20], #2          // ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки
    LDRH W2, [X20, #6]          // Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки
    LDRH W3, [X20, #14]         // Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки
    BL printf                   // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ printf
    SUBS W19, W19, #1           // ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅ΠΌ счСтчик строк
    B. NE printloop              // ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ всС строки
    
    MOV X0, #0                  // ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°
    LDR LR, [SP], #16
    LDP X19, X20, [SP], #16
    RET
.data
    // пСрвая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° 
    A:  .short 1, 4, 7, 0
        .short 2, 5, 8, 0
        .short 3, 6, 9, 0
    // вторая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°
    B:  .short 9, 6, 3, 0
        .short 8, 5, 2, 0
        .short 7, 4, 1, 0
    //Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°
    C: .fill 12, 2, 0
prtstr: .asciz "%3d %3d %3d\n"


Π—Π΄Π΅ΡΡŒ ΠΎΠ±Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ — A ΠΈ B хранятся Π² порядкС располоТСния столбцов, Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° C гСнСрируСтся Ρ‚Π°ΠΊΠΆΠ΅ Π² порядкС располоТСния столбцов, Ρ‡Ρ‚ΠΎ позволяСт ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ вычислСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π°ΠΊ ΠΏΡ€ΠΎΡ‰Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² рСгистры NEON. Однако Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° консоль Π² Ρ†ΠΈΠΊΠ»Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‚ΡΡ Π² порядкС располоТСния строк.

Основная Ρ€Π°Π±ΠΎΡ‚Π° выполняСтся Π² макросС. Π‘Π½Π°Ρ‡Π°Π»Π° выполняСм скалярноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅

MUL \ccol\().4H, V0.4H, \bcol\().4H[0]

Данная инструкция послС макроподстановок прСвращаСтся Π²

MUL V6. 4H, V0.4H, V3.4H[0]

Набор символов \() прСдставляСт Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ символами. Π—Π΄Π΅ΡΡŒ \() послС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° макроса позволяСт ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΎΡ‚ «.4H», ΠΈΠ½Π°Ρ‡Π΅ имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ «ccol.4H».

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π΄ΠΎΡ€ΠΎΠΆΠΊΡƒ Π² рСгистрС V0 Π½Π° число ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π΄ΠΎΡ€ΠΎΠΆΠΊΠΈ ΠΈΠ· рСгистра V3. Для доступа ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄ΠΎΡ€ΠΎΠΆΠΊΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… указываСтся Π½ΠΎΠΌΠ΅Ρ€ Π΄ΠΎΡ€ΠΎΠΆΠΊΠΈ:

[Π½ΠΎΠΌΠ΅Ρ€_Π΄ΠΎΡ€ΠΎΠΆΠΊΠΈ]

ΠžΡ‚ΡΡ‡Π΅Ρ‚ Π΄ΠΎΡ€ΠΎΠΆΠ΅ΠΊ начинаСтся с нуля.

ΠŸΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ инструкции макроса Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈ с ΠΏΡ€ΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ:


MLA \ccol\().4H, V1.4H, \bcol\().4H[1]
MLA \ccol\().4H, V2.4H, \bcol\().4H[2]

ПослС опрСдСлСния макроса Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π° — ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ столбца


mulcol V6, V3               // ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ столбСц
mulcol V7, V4               // ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ столбСц
mulcol V8, V5               // ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ столбСц

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ компилятора gcc ΠΈ запустим Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π’ ΠΈΡ‚ΠΎΠ³Π΅ консоль Π΄ΠΎΠ»ΠΆΠ½Π° вывСсти ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π‘ построчно


 30  24  18
 84  69  54
138 114  90

НазадБодСрТаниСВпСрСд

python — ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ numpy

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ numpy.dot ΠΈΠ»ΠΈ a.dot(b) . Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ здСсь.

 >>> a = np.array([[ 5, 1,3],
                  [ 1, 1 ,1],
                  [ 1, 2 ,1]])
>>> b = np.массив ([1, 2, 3])
>>> Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ a.dot(b)
массив([16, 6, 8])
 

Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ массивы numpy Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ, Π° стандартныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ *, +, -, / Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с массивами поэлСмСнтно.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ, хотя Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ numpy.matrix (ΠΏΠΎ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ 2021 Π³.), Π³Π΄Π΅ * Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ стандартноС ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠ΅ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, numpy.matrix устарСло ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… выпусках. . Π‘ΠΌ. ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Π² Π΅Π³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ (воспроизвСдСно Π½ΠΈΠΆΠ΅):

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½Π΅ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот класс, Π΄Π°ΠΆΠ΅ для Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹. ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ массивы. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ класс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½.

Бпасибо @HopeKing.


Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π’Π°ΠΊΠΆΠ΅ Π·Π½Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹:

  • Как ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, ΠΏΡ€ΠΈ использовании python3.5+ ΠΈ numpy v1.10+ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ @ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅:

     >>> ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (Π° @ Π±)
    массив([16, 6, 8])
     
  • Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Ρ‰ΠΈΡ‚ΡŒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ numpy.einsum . ДокумСнтация даст Π²Π°ΠΌ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ, чСстно говоря, я Π½Π΅ совсСм ΠΏΠΎΠ½ΠΈΠΌΠ°Π», ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» этот ΠΎΡ‚Π²Π΅Ρ‚ ΠΈ Π½Π΅ ΠΏΠΎΠΈΠ³Ρ€Π°Π» с Π½ΠΈΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

     >>> np.einsum('ji,i->j', Π°, Π±)
    массив([16, 6, 8])
     
  • По ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° сСрСдину 2016 Π³ΠΎΠ΄Π° (numpy 1.10.1) Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ numpy.matmul , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ numpy.dot с двумя основными ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ: Π½Π΅Ρ‚ скалярного умноТСния, Π½ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со стСками ΠΌΠ°Ρ‚Ρ€ΠΈΡ†.

     >>> np.matmul(a, b)
    массив([16, 6, 8])
     
  • numpy.inner Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ numpy.dot для умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€, Π½ΠΎ Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΈΠ½Π°Ρ‡Π΅ для умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹-ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈ Ρ‚Π΅Π½Π·ΠΎΡ€Π° (см. Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΡŽ ΠΎ различиях ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ ΠΈ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΈΠ»ΠΈ см. этот ΠΎΡ‚Π²Π΅Ρ‚ SO ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ numpy).

     >>> np.inner(a, b)
    массив([16, 6, 8])
    # ΠžΡΡ‚Π΅Ρ€Π΅Π³Π°ΠΉΡ‚Π΅ΡΡŒ использования для умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ!
    >>> Π± = Π°.Π’
    >>> Π½ΠΏ.Ρ‚ΠΎΡ‡ΠΊΠ° (Π°, Π±)
    массив([[35, 9, 10],
           [9, 3, 4],
           [10, 4, 6]])
    >>> np.inner(a, b)
    массив([[29, 12, 19],
           [7, 4, 5],
           [8, 5, 6]])
     
  • Если Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько 2D-массивов ΠΎΡ‚ Π΄ΠΎ Ρ‚ΠΎΡ‡Π΅ΠΊ вмСстС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ np.linalg.multi_dot , которая ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ синтаксис ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… np.dot s. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами (Ρ‚. Π΅. Π½Π΅ для умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€).

     >>> np.dot(np.dot(a, a.T), a).dot(a.T)
      массив([[1406, 382, ​​446],
             [382, 106, 126],
             [446, 126, 152]])
      >>> np.linalg.multi_dot((Π°, Π°.Π’, Π°, Π°.Π’))
      массив([[1406, 382, ​​446],
             [382, 106, 126],
             [446, 126, 152]])
     

Π‘ΠΎΠ»Π΅Π΅ Ρ€Π΅Π΄ΠΊΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ для ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… случаСв

  • Если Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‚Π΅Π½Π·ΠΎΡ€Ρ‹ (массивы размСрности большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ numpy.tensordot с Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ axes=1 :

     >>> np.tensordot(a, b, оси=1)
    массив([16, 6, 8])
     
  • НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅

    numpy.vdot , Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° комплСксных чисСл, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π±ΡƒΠ΄Π΅Ρ‚ свСдСна ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ массиву, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ попытаСтся Π½Π°ΠΉΡ‚ΠΈ комплСксно-сопряТСнноС скалярноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ вашСй сглаТСнной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ (Ρ‡Ρ‚ΠΎ Π½Π΅ удастся ΠΈΠ·-Π·Π° нСсоотвСтствия Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½*ΠΌ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π½ ).

ΠžΠ±Π·ΠΎΡ€ (Financial Toolbox)

ΠžΠ±Π·ΠΎΡ€ (Financial Toolbox)
Набор финансовых инструмСнтов Β Β Β 

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† , Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ поэлСмСнтно. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли пСрвая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Ρ€Π°Π²Π½Π° ΠΌ Π½Π° 3, Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ 3 Π½Π° n . Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€

m n . Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Β«ΠΏΡ€ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΒ» Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, ΠΊΠ°ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Ρ‚Π°ΠΊΠΆΠ΅ являСтся , Π° Π½Π΅ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ; Ρ‚. Π΅. Π½Π΅ зависит ΠΎΡ‚ порядка. A*B Π΄Π΅Π»Π°Π΅Ρ‚ , Π° Π½Π΅ Ρ€Π°Π²Π½Ρ‹ΠΌ B*A. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ размСрности ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ это свойство. Если A 1 Π½Π° 3, Π° B 3 Π½Π° 1, A * B Π΄Π°Π΅Ρ‚ скаляр (1 Π½Π° 1), Π½ΠΎ B * A Π΄Π°Π΅Ρ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ 3 Π½Π° 3.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² слСдуСт Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹. НапримСр, ΠΏΠΎΡ€Ρ‚Ρ„Π΅Π»ΡŒ Π°ΠΊΡ†ΠΈΠΉ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… Π°ΠΊΡ†ΠΈΠΉ, ΠΈ ΠΈΡ… Ρ†Π΅Π½Π° закрытия сСгодня составляСт

.

ΠŸΠΎΡ€Ρ‚Ρ„Π΅Π»ΡŒ содСрТит ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство Π°ΠΊΡ†ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π°ΠΊΡ†ΠΈΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ портфСля, просто ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΡŒΡ‚Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹

, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚

Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ 1 Π½Π° 3 ΠΈ 3 Π½Π° 1; Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ 1 Π½Π° 1, скаляр. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ этих Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ†Π΅Π½Ρ‹ закрытия Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ количСство Π°ΠΊΡ†ΠΈΠΉ ΠΈ суммированиС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ порядка, помСняйтС порядок Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²

, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ закрытия 100, 500 ΠΈ 300 Π°ΠΊΡ†ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π°ΠΊΡ†ΠΈΠΈ β€” Π½Π΅ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ портфСля ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла для этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

ВычислСниС скалярных ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²

Π’ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Π΅, Ссли X ΠΈ Y ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹

Π·Π°Ρ‚Π΅ΠΌ скалярноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅

β€” это скалярноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ². Π­Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ скалярноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² MATLAB, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ сумма (X .* Y) ΠΈΠ»ΠΈ сумма(Y .* X) . ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π²Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹.

Как ΠΈ оТидалось, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² этих случаях Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ PortfValue, вычислСнноС Ρ€Π°Π½Π΅Π΅.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† слСдуСт ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΈ процСссу умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. НапримСр, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° портфСля содСрТит Ρ†Π΅Π½Ρ‹ закрытия Π·Π° нСдСлю. Вторая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° (Π²Π΅ΠΊΡ‚ΠΎΡ€) содСрТит количСство Π°ΠΊΡ†ΠΈΠΉ Π² ΠΏΠΎΡ€Ρ‚Ρ„Π΅Π»Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ портфСля закрытия Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь, просто ΡƒΠΌΠ½ΠΎΠΆΡŒΡ‚Π΅

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° Ρ†Π΅Π½ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 5 Π½Π° 3, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° количСства (Π²Π΅ΠΊΡ‚ΠΎΡ€) ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 3 Π½Π° 1, поэтому Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° (Π²Π΅ΠΊΡ‚ΠΎΡ€) ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 5 Π½Π° 1.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Ρ‚Π°ΠΊΠΆΠ΅ слСдуСт ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹. Π’ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹, Ссли A прСдставляСт собой m n ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, Π° B прСдставляСт собой n p ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ

, Ρ‚ΠΎΠ³Π΄Π° C = A * B прСдставляСт собой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΌ Π½Π° p ; Π° элСмСнт c ij Π² строкС i th ΠΈ j столбцС C Ρ€Π°Π²Π΅Π½

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π° портфСля ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Π°ΠΊΡ†ΠΈΠΉ, Π½ΠΎ с Ρ€Π°Π·Π½Ρ‹ΠΌ количСством.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Ρ†Π΅Π½ закрытия Π½Π΅Π΄Π΅Π»ΠΈ 5 Π½Π° 3 Π½Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΏΠΎΡ€Ρ‚Ρ„Π΅Π»Π΅ΠΉ 3 Π½Π° 2 Π΄Π°Π΅Ρ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ 5 Π½Π° 2, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ закрытия ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дня для ΠΎΠ±ΠΎΠΈΡ… ΠΏΠΎΡ€Ρ‚Ρ„Π΅Π»Π΅ΠΉ.

ЗначСния понСдСльника ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ умноТСния Ρ†Π΅Π½Ρ‹ закрытия ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ понСдСльника Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ количСство Π°ΠΊΡ†ΠΈΠΉ ΠΈ суммирования Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ портфСля, Π° Π·Π°Ρ‚Π΅ΠΌ выполнСния Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ самого для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ портфСля. ЗначСния Π²Ρ‚ΠΎΡ€Π½ΠΈΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ умноТСния Ρ†Π΅Π½Ρ‹ закрытия ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ‚ΠΎΡ€Π½ΠΈΠΊΠ° Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ количСство Π°ΠΊΡ†ΠΈΠΉ ΠΈ суммирования Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ портфСля, Π° Π·Π°Ρ‚Π΅ΠΌ для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ портфСля.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *