7.1.3. Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ MathCAD 12 ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ
RADIOMASTERΠΡΡΡΠΈΠ΅ ΡΠΌΠ°ΡΡΡΠΎΠ½Ρ Π½Π° Android Π² 2022 Π³ΠΎΠ΄Ρ
Π‘Π΅ΡΠΈΡ iPhone ΠΎΡ Apple ΡΠ΅Π΄ΠΊΠΎ ΡΠ΅ΠΌ ΡΠ΄ΠΈΠ²Π»ΡΠ΅Ρ. ΠΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π½ΠΎΠ²ΡΠΉ iPhone, ΠΎΠ±ΡΠ΅Π΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ Π½Π° Π²Π°ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ Π²ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠ°ΠΊ Π² Π»Π°Π³Π΅ΡΠ΅ Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅Π² ΡΡΡΡΠΎΠΉΡΡΠ² Π½Π° Android. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ΅Π»Π΅ΡΠΎΠ½Ρ Android Π²ΡΠ΅Ρ ΡΠΎΡΠΌ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΆΠ΅ ΠΎ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π½ΠΎΠ²ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡ . ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Android-ΡΠ΅Π»Π΅ΡΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠΈΡΠΊ Π»ΡΡΡΠΈΡ ΡΠ΅Π»Π΅ΡΠΎΠ½ΠΎΠ² Π½Π° Android ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ.
1740 0
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π‘Ρ Π΅ΠΌΠΎΡΠ΅Ρ Π½ΠΈΠΊΠ° CAD / CAM Π‘ΡΠ°ΡΡΠΈ
MathCAD 12 MatLab OrCAD P CAD AutoCAD MathCAD 8 — 11
- ΠΠ»Π°Π²Π½Π°Ρ /
- ΠΠ°Π·Π° Π·Π½Π°Π½ΠΈΠΉ /
- CAD / CAM /
- ΠΠΈΠ½Π΅ΠΉΠ½Π°Ρ Π°Π»Π³Π΅Π±ΡΠ°
- 7.1. ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- 7.1.1. Π’ΡΠ°Π½ΡΠΏΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
- 7.1.2. Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅
- 7.1.3. Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅
- 7.2. ΠΠ΅ΠΊΡΠΎΡΠ½Π°Ρ Π°Π»Π³Π΅Π±ΡΠ°
- 7.2.1. ΠΠΎΠ΄ΡΠ»Ρ Π²Π΅ΠΊΡΠΎΡΠ°
- 7.2.2. Π‘ΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅
- 7.2.3. ΠΠ΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅
- 7.2.4. ΠΠ΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°
- 7.3. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΡ
- 7.3.1. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ
- 7.3.2. Π Π°Π½Π³ ΠΌΠ°ΡΡΠΈΡΡ
- 7.3.3. ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ
- 7.3.4. ΠΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ
- 7.3.5. ΠΠ°ΡΡΠΈΡΠ½ΡΠ΅ Π½ΠΎΡΠΌΡ
- 7.3.6. Π§ΠΈΡΠ»ΠΎ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½Π½ΠΎΡΡΠΈ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ
- 7.4. ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
- 7.4.1. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΡ
- 7.4.2. Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ
- 7.
4.3. Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΡ
- 7.4.4. ΠΡΠ²ΠΎΠ΄ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ
ΠΡΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ MxN Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ NxP (Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΡΠΌ). Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ MΡ P.
Π§ΡΠΎΠ±Ρ Π²Π²Π΅ΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ» ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ ΡΠΎ Π·Π²Π΅Π·Π΄ΠΎΡΠΊΠΎΠΉ <*> ΠΈΠ»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ°Π½Π΅Π»ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Matrix (ΠΠ°ΡΡΠΈΡΠ°), Π½Π°ΠΆΠ°Π² Π½Π° Π½Π΅ΠΉ ΠΊΠ½ΠΎΠΏΠΊΡ Dot Product (Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅). Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΡΠΊΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 7.5.
ΠΠΈΡΡΠΈΠ½Π³ 7.5. ΠΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ (Π½ΠΈΠΆΠ½ΡΡ ΡΡΡΠΎΠΊΠ° Π»ΠΈΡΡΠΈΠ½Π³Π° 7.5), ΡΡΠΎ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠΈΡΡ ΠΌΠ°ΡΡΠΈΡΡ
Π ΠΈ Π Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ (ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ 2Ρ
3) ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π±Π΅Π·ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ½ΠΎΠΉ: ΠΏΠΎΡΠ»Π΅ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ° ΡΠ°Π²Π΅Π½ΡΡΠ²Π° Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΡΡΠΎΠΉ ΠΌΠ΅ΡΡΠΎΠ·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ, Π° ΡΠ°ΠΌΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Mathcad Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΡΠ°ΡΠ½ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ. ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΊΡΡΡΠΎΡΠ° Π½Π° ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ ΡΠΈΡΠ»Π° ΡΡΡΠΎΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ Ρ ΡΠΈΡΠ»ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π²ΡΠΎΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ.
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π΅ΠΊΡΠΎΡΠ° Π½Π° ΠΌΠ°ΡΡΠΈΡΡ-ΡΡΡΠΎΠΊΡ ΠΈ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΡΡΠΎΠΊΠΈ Π½Π° Π²Π΅ΠΊΡΠΎΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 7.6.
ΠΠΠΠΠΠΠΠ!
Π’ΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π½Π° Π΄Π²Π° Π²Π΅ΠΊΡΠΎΡΠ° ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ (ΡΠΌ. ΡΠ°Π·Π΄. 7.2.2).
ΠΠΈΡΡΠΈΠ½Π³ 7.6. Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡΠΎΡΠ° ΠΈ ΡΡΡΠΎΠΊΠΈ
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ ΡΠΎ ΡΠΊΠ°Π»ΡΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ Π½Π° ΡΠΊΠ°Π»ΡΡΠ½ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ (Π»ΠΈΡΡΠΈΠ½Π³ 7.7). Π‘ΠΈΠΌΠ²ΠΎΠ» ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΡ. ΠΠ° ΡΠΊΠ°Π»ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ.
ΠΠΈΡΡΠΈΠ½Π³ 7.7. Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ Π½Π° ΡΠΊΠ°Π»ΡΡΠ½ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ
ΠΡΠ°Π²ΠΈΡΡΡ
Π’Π²ΠΈΡΠ½ΡΡΡ
Π’Π΅Π³ΠΈ MathCad Π‘ΠΠΠ
Π‘ΡΠΆΠ΅ΡΡ MathCad
ΠΠ»Π°Π²Π° 1 ΠΡΠ½ΠΎΠ²Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Mathcad 11
10102 0
ΠΠ»Π°Π²Π° 10 Π Π°Π±ΠΎΡΠ° Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ Mathcad 11
7088 0
ΠΠ»Π°Π²Π° 2 Π Π°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Mathcad 11
12833 0
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ (0)
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°ΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΡ ΠΎΠ΄
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΠΎΠ½ΡΠ°ΠΊΡΡ
ΠΠΎΠ²ΠΎΡΡΠΈ Π‘ΡΠ°ΡΡΠΈ ΠΠ°Π·Π° Π·Π½Π°Π½ΠΈΠΉ
Π Π°Π΄ΠΈΠΎΠΌΠ°ΡΡΠ΅Ρ
Β© 2005β2022 radiomaster. ru
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° ΠΏΡΡΠΌΠ°Ρ ΠΈ ΡΠ²Π½Π°Ρ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠ°ΠΉΡ radiomaster.ru ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°. 0.2357 s
ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ ARM64 | Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: 17.01.2023
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΡΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ Π·Π°Π΄Π°ΡΡ — ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ
ΠΌΠ°ΡΡΠΈΡΠ° A
a11 | a12 | a13 |
a21 | a22 | a23 |
a31 | a32 | a33 |
ΠΌΠ°ΡΡΠΈΡΠ° B
b11 | b12 | b13 |
b21 | b22 | b23 |
b31 | b32 | b33 |
Π’ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½
a11*b11 + a12*b21 + a13*b31 | a11*b12 + a12*b22 + a13*b32 | a11*b13 + a12*b23 + a13*b33 |
a21*b11 + a22*b21 + a23*b31 | a21*b12 + a22*b22 + a23*b32 | a21*b13 + a22*b23 + a23*b33 |
a31*b11 + a32*b21 + a33*b31 | a31*b12 + a32*b22 + a33*b32 | a31*b13 + a32*b23 + a33*b33 |
Π’ΠΎ Π΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΡΡ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΡΠΎΠΊΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ°ΡΡΡΡ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π²ΡΠΎΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ, ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ.
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Π° ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄Π΅Π»ΠΎ Π±Ρ ΡΠ°ΠΊ:
FOR row = 1 to 3 FOR col = 1 to 3 acum = 0 FOR i = 1 to 3 acum = acum + A[row, i]*B[i, col] NEXT I C[row, col] = acum NEXT col NEXT row
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 3×3. ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ printf ΡΠ·ΡΠΊΠ° Π‘.
ΠΡΠ°ΠΊ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΠ°ΠΉΠ» main.s ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
// Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΡ 3x3 // // ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ: // W1 - ΠΠ½Π΄Π΅ΠΊΡ ΡΡΡΠΎΠΊΠΈ // W2 - ΠΠ½Π΄Π΅ΠΊΡ ΡΡΠΎΠ»Π±ΡΠ° // X4 - ΠΠ΄ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ // X5 - ΠΠ΄ΡΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠ° // X7 - Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Π°Ρ ΡΡΠΌΠΌΠ° Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΡΡ // W9 - ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΡΡ A // W10 - ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΡΡ B // X19 - ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΡΡ C // X20 - ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΈΠΊΠ»Π° Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ // X12 - Π½ΠΎΠΌΠ΅Ρ ΡΡΠΎΡΠΎΠΊΠΈ Π² ΡΠΈΠΊΠ»Π΅ dotloop // X6 - Π½ΠΎΠΌΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠ° Π² ΡΠΈΠΊΠ»Π΅ dotloop .global main // ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ .equ N, 3 // Π Π°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΡ .equ WDSIZE, 4 // ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² Π±Π°ΠΉΡΠ°Ρ main: STR LR, [SP, #-16]! // ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° LR STP X19, X20, [SP, #-16]! // ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² X19 ΠΈ X20 MOV W1, #N // ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π² W1 ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΡΠΎΠΊΠΈ LDR X4, =A // Π X4 Π°Π΄ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ Π LDR X19, =C // Π X19 Π°Π΄ΡΠ΅Ρ ΠΌΠ°ΡΠ΅ΡΠΈΡΡ Π‘ rowloop: LDR X5, =B // ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ B MOV W2, #N // ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΠΎΠ»Π±ΡΠ° (ΡΡΠΈΡΠ°Π΅ΠΌ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π΄ΠΎ 0) colloop: MOV X7, #0 // ΡΠ΅Π³ΠΈΡΡΡ Π΄Π»Ρ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° - ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π²Π΅Π½ 0 MOV W0, #N // ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΈΠΊΠ»Π° MOV X12, X4 // Π² X12 ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² MOV X6, X5 // Π² X6 ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² dotloop: // Π¦ΠΈΠΊΠ» Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ A Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ B LDR W9, [X12], #WDSIZE // Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ A[row, i] ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ Π² X12 Π½Π° #WDSIZE Π±Π°ΠΉΡ LDR W10, [X6], #(N*WDSIZE) // Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π² W10 Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· B[i, col] SMADDL X7, W9, W10, X7 // ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² X7 SUBS W0, W0, #1 // ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ Π½Π° 1 B.
NE dotloop // Π΅ΡΠ»ΠΈ W0 Π½Π΅ ΡΠ°Π²Π½ΠΎ 0, ΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ dotloop Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΡ STR W7, [X19], #4 // ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ· W7 Π² X19 - C[row, col] = W7, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ Π² X19 Π½Π° 4 Π±Π°ΠΉΡΠ° ADD X5, X5, #WDSIZE // ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΡΠΎΠ»Π±ΡΡ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ B - ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ Π² X5 Π½Π° #WDSIZE Π±Π°ΠΉΡ SUBS W2, W2, #1 // ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΠΎΠ»Π±ΡΠΎΠ² B.NE colloop // Π΅ΡΠ»ΠΈ Π½Π΅ Π²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ ΠΏΡΠΎΡΠ»ΠΈ, ΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΊ colloop ADD X4, X4, #(N*WDSIZE) // ΠΊ Π°Π΄ΡΠ΅ΡΡ Π² X4 ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ΅ΠΌ #(N*WDSIZE) Π±Π°ΠΉΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΊ Π°Π΄ΡΠ΅ΡΡ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ SUBS W1, W1, #1 // ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠΎΠΊ B.NE rowloop // Π΅ΡΠ»ΠΈ Π΅ΡΠ΅ Π΅ΡΡΡ ΡΡΡΠΎΠΊΠΈ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΊ rowloop MOV W20, #3 // ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΡΡΠ΅ΠΌ ΡΡΡΠΎΠΊΠ°ΠΌ LDR X19, =C // Π°Π΄ΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΡΡ C // Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΌΠ°ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ printf ΡΠ·ΡΠΊΠ° C printloop: LDR X0, =prtstr // Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΡΡΠΎΠΊΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ printf LDR W1, [X19], #WDSIZE // ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ LDR W2, [X19], #WDSIZE // Π²ΡΠΎΡΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ LDR W3, [X19], #WDSIZE // ΡΡΠ΅ΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ BL printf // ΠΡΠ·ΡΠ² ΡΡΠ½ΠΊΡΠΈΠΈ printf SUBS W20, W20, #1 // ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠΎΠΊ B.NE printloop // Π΅ΡΠ»ΠΈ Π΅ΡΡΡ Π΅ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΊ printloop MOV X0, #0 // ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ LDP X19, X20, [SP], #16 // Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² LDR LR, [SP], #16 // Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡ LR RET // Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ .data // ΠΏΠ΅ΡΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° A: .word 1, 2, 3 .word 4, 5, 6 .word 7, 8, 9 // Π²ΡΠΎΡΠ°Ρ ΠΌΠ°ΡΡΠΈΡΠ° B: .word 9, 8, 7 .word 6, 5, 4 .word 3, 2, 1 // ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ°Ρ ΠΌΠ°ΡΡΠΈΡΠ° C: .fill 9, 4, 0 prtstr: .asciz "%3d %3d %3d\n"
ΠΠΊΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ Π² ΡΠ΅ΠΊΡΠΈΠΈ .data ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΡΠΈ ΠΌΠ°ΡΡΠΈΡΡ. ΠΠ°ΡΡΠΈΡΡ A ΠΈ B ΡΠΎΡΡΠΎΡΡ ΠΈΠ· 9 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠΏΠ° .word
, ΡΠΎ Π΅ΡΡΡ ΡΠΈΡΠ΅Π»
ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 4 Π±Π°ΠΉΡΠ°. ΠΠ°ΡΡΠΈΡΠ° C ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ .fill
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°Π±ΠΎΡ ΠΈΠ· 9 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² 4 Π±Π°ΠΉΡΠ°, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π²Π΅Π½ 0.
ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π΄Π²Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ:
.equ N, 3 // Π Π°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΡ .equ WDSIZE, 4 // ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² Π±Π°ΠΉΡΠ°Ρ
ΠΠ½Π°ΡΠ°Π»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΡ ΠΎΠ΄Π° ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ:
MOV W1, #N // ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π² W1 ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΡΠΎΠΊΠΈ LDR X4, =A // Π X4 Π°Π΄ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ Π LDR X19, =C // Π X19 Π°Π΄ΡΠ΅Ρ ΠΌΠ°ΡΠ΅ΡΠΈΡΡ Π‘
Π W1 ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠΎΠΊ, ΡΠΎ Π΅ΡΡΡ ΡΠΈΡΠ»ΠΎ 3 (Π½Π°Π΄ΠΎ ΠΏΡΠΎΠΉΡΠΈ ΠΏΠΎ ΡΡΠ΅ΠΌ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΌΠ°ΡΡΠΈΡΡ Π). Π ΡΠ΅Π³ΠΈΡΡΡ X4 Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π°Π΄ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΡ A (Π°Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π΅Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°) ΠΈ Π² X19 ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π°Π΄ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΡ Π‘, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠ°Π»ΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠΈΠΊΠ» Π΄Π»Ρ ΠΏΡΠΎΡ ΠΎΠ΄Π° ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΡ ΠΎΠ΄Π° ΠΏΠΎ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΡΡ B:
rowloop: LDR X5, =B // ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ B MOV W2, #N // ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΠΎΠ»Π±ΡΠ° (ΡΡΠΈΡΠ°Π΅ΠΌ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π΄ΠΎ 0)
Π ΡΠ΅Π³ΠΈΡΡΡ X5 ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π°Π΄ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΡ Π, Π° Π² W2 — ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΠΎΠ»Π±ΡΠΎΠ² (ΡΠΎ Π΅ΡΡΡ Π½Π°Π΄ΠΎ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ 3 ΡΡΠΎΠ»Π±ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΡΡ Π).
ΠΠ°ΡΠ΅ΠΌ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠΈΠΊΠ» ΠΏΠΎ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ
colloop: MOV X7, #0 // ΡΠ΅Π³ΠΈΡΡΡ Π΄Π»Ρ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° - ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π²Π΅Π½ 0 MOV W0, #N // ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΈΠΊΠ»Π° MOV X12, X4 // Π² X12 ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² MOV X6, X5 // Π² X6 ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
Π ΡΠ΅Π³ΠΈΡΡΡ Π₯7 ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΡΠΈΡΠ»ΠΎ 0 — ΡΡΠΎΡ ΡΠ΅Π³ΠΈΡΡΡ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ Π‘. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² W0 ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΈΠΊΠ»Π° — Π½Π°Π΄ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠΈΡΡ 3 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ· ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ Π ΠΈ ΡΡΠΎΠ»Π±ΡΠ° ΠΌΠ°ΡΠΈΡΡ B. Π Π΅Π³ΠΈΡΡΡ Π₯12 Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π°Π΄ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ Π, Π° Π₯6 — Π½Π° Π°Π΄ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΠΎΠ»Π±ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ Π.
ΠΠ°Π»Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ Π ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ Π:
dotloop: // Π¦ΠΈΠΊΠ» Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ A Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ B LDR W9, [X12], #WDSIZE // Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ A[row, i] ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ Π² X12 Π½Π° #WDSIZE Π±Π°ΠΉΡ LDR W10, [X6], #(N*WDSIZE) // Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π² W10 Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· B[i, col] SMADDL X7, W9, W10, X7 // ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² X7 SUBS W0, W0, #1 // ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ Π½Π° 1 B.NE dotloop // Π΅ΡΠ»ΠΈ W0 Π½Π΅ ΡΠ°Π²Π½ΠΎ 0, ΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ dotloop Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΡ
ΠΠ»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π² W9 Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ X12, ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠΉ Π°Π΄ΡΠ΅Ρ Π½Π° #WDSIZE (4) Π±Π°ΠΉΡ, ΡΠΎ Π΅ΡΡΡ Π°Π΄ΡΠ΅Ρ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π°ΡΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ Π. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π² W10 Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ X6, ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠΉ Π°Π΄ΡΠ΅Ρ Π½Π° #(N*WDSIZE) (12) Π±Π°ΠΉΡ, ΡΠΎ Π΅ΡΡΡ Π°Π΄ΡΠ΅Ρ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π°ΡΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π±Π° ΠΌΠ°ΡΡΠΈΡΡ Π. ΠΠ½ΡΡΡΡΠΊΡΠΈΡ SMADDL ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ W9 ΠΈ W10 ΠΈ ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ X7. Π ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅ΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌ 3 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΡΠ΅ΠΊΡΡΠΈΡ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΡΠΎΠ»Π±ΡΠ°, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΡΠΈΠΊΠ»Π΅ dotloop
ΠΏΡΠΎΠΉΠ΄Π΅ΠΌ ΠΏΠΎ 3 ΡΡΠ΅ΠΉΠΊΠ°ΠΌ ΡΠ΅ΠΊΡΡΠΈΡ
ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΡΠΎΠ»Π±ΡΠ°, ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΠΌ Π΅Π³ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡ X12.
ΠΠ°Π»Π΅Π΅ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ C Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΡΠΎΠ»Π±ΡΡ ΠΌΠ°ΡΡΠΈΡΡ B:
STR W7, [X19], #4 // ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ· W7 Π² X19 - C[row, col] = W7, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ Π² X19 Π½Π° 4 Π±Π°ΠΉΡΠ° ADD X5, X5, #WDSIZE // ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΡΠΎΠ»Π±ΡΡ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ B - ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ Π² X5 Π½Π° #WDSIZE Π±Π°ΠΉΡ SUBS W2, W2, #1 // ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΠΎΠ»Π±ΡΠΎΠ² B.NE colloop // Π΅ΡΠ»ΠΈ Π½Π΅ Π²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ ΠΏΡΠΎΡΠ»ΠΈ, ΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΊ colloop
ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ· X7 ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΡΡ Π‘, Π°Π΄ΡΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² Π₯19. ΠΡΠΈ ΡΡΠΎΠΌ Π΄Π°Π½Π½ΡΠΉ Π°Π΄ΡΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π½Π° 4 Π±Π°ΠΉΡΠ°, ΡΡΠΎΠ±Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π· ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ Π‘. Π’Π°ΠΊΠΆΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ Π² X5 Π½Π° #WDSIZE Π±Π°ΠΉΡ, ΡΠΎ Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ W2.
ΠΡΠ»ΠΈ Π²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π ΠΏΡΠΎΠΉΠ΄Π΅Π½Ρ, ΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΌΠ°ΡΡΠΈΡΡ Π:
ADD X4, X4, #(N*WDSIZE) // ΠΊ Π°Π΄ΡΠ΅ΡΡ Π² X4 ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ΅ΠΌ #(N*WDSIZE) Π±Π°ΠΉΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΊ Π°Π΄ΡΠ΅ΡΡ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ SUBS W1, W1, #1 // ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠΎΠΊ B.NE rowloop // Π΅ΡΠ»ΠΈ Π΅ΡΠ΅ Π΅ΡΡΡ ΡΡΡΠΎΠΊΠΈ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΊ rowloop
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ Π°Π΄ΡΠ΅Ρ Π² Π₯4 Π½Π° #(N*WDSIZE) Π±Π°ΠΉΡ (ΠΏΠΎ ΡΡΡΠΈ Π½Π° 12 Π±Π°ΠΉΡ — ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ), ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠΎΠΊ Π² W1 ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅.
ΠΡΠ»ΠΈ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΏΠ΅ΡΠ΅Π±ΡΠ°Π½Ρ, ΡΠΎ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΠ΅ΡΠ°ΡΠΈ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ — ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΡΡΠ΅ΠΌ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΌΠ°ΡΡΠΈΡΡ Π‘ ΠΈ Π΅Π΄ΠΈΠ½ΠΎΡΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠΎΠΊΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ prtstr
Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Ρ
ΡΡΠΎΠ»Π±ΡΠΎΠ² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ C.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ·ΡΠΊΠ° Π‘, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
aarch64-none-linux-gnu-gcc main.s -o main -static
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡ Π½Π°ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ:
30 24 18 84 69 54 138 114 90
ΠΠ°Π·Π°Π΄Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ΠΠΏΠ΅ΡΠ΅Π΄
3 ΡΠΏΠΎΡΠΎΠ±Π° ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ Π² Python
ΠΠ°Π»Π° ΠΡΠΈΡ Π‘ Π² Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° | ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: 1 ΠΈΡΠ»Ρ 2022 Π³.
ΠΠΎΠ΄Π΅Π»ΠΈΡΡ Π½Π°:
Π‘ΠΊΠ°Π½Π΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Invicti β Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Proof-Based Scanningβ’.
Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ Π½Π° ΠΠΈΡΠΎΠ½Π΅.
ΠΡ Π½Π°ΡΠ½Π΅ΡΠ΅ Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ Python Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ. ΠΠ°Π»Π΅Π΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠΏΠΈΡΠΊΠΎΠ².
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΡΠ΅ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ NumPy ΠΈ Π΅Π³ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Python Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΠΎΡΠ½ΠΎΠ²Π°ΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ.
ΠΠ°ΡΡΠΈΡΠ° Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΡ A ΠΈ B Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΡΠ΅ A ΡΠ°Π²Π½ΠΎ , ΡΠ°Π²Π½ΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΡΡΠΎΠΊ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ B .
ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, Π²Ρ ΡΠΆΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Ρ ΡΡΠΈΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ ΡΠ°Π½ΡΡΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π·Π°Π΄ΡΠΌΡΠ²Π°Π»ΠΈΡΡ Π»ΠΈ Π²Ρ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΡΠ°ΠΊ?
ΠΡ, ΡΡΠΎ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ. ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅.
Π Π½Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠ°ΡΡΠΈΡΠ° A ΠΈΠΌΠ΅Π΅Ρ ΠΌ ΡΡΠ΄ΠΎΠ² ΠΈ n ΡΡΠΎΠ»Π±ΡΠΎΠ². Π ΠΌΠ°ΡΡΠΈΡΠ° B ΠΈΠΌΠ΅Π΅Ρ n ΡΡΡΠΎΠΊ ΠΈ p ΡΡΠΎΠ»Π±ΡΠΎΠ².
ΠΠ°ΠΊΠΎΠ²Π° ΡΠΎΡΠΌΠ° ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²?
ΠΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ (i, j) ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΡΡ C ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π»ΡΡΠ½ΡΠΌ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠΎΠΊΠΈ i ΠΌΠ°ΡΡΠΈΡΡ A ΠΈ ΡΡΠΎΠ»Π±ΡΠ° j ΠΌΠ°ΡΡΠΈΡΡ B.
ΠΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΡΠ΅ C Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΡΠΎΠ»Π±ΡΠ° Π² ΠΌΠ°ΡΡΠΈΡΠ°Ρ A ΠΈ B ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠΎΠ²ΡΠΎΡΡΡ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ C ΡΠΎΡΠΌΡ m x p β Ρ m ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ p ΡΡΠΎΠ»Π±ΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.
Π ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ a ΠΈ b Π·Π°Π΄Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ΠΌ.
ΠΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ ΠΈΡΠΎΠ³ΠΈ:
- ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ.
- Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠΎΠΊΠΎΠΉ ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠΌ Π±ΡΠ»ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ β ΠΏΡΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΡ β Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ ΠΈΠΌΠ΅Π»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
- Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° Π² ΠΌΠ°ΡΡΠΈΡΠ΅ A ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ n ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
Π ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ B ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ n ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠ»ΠΈ ΠΏΡΠΈΡΠΌΠΎΡΡΠ΅ΡΡΡΡ, ΡΠΎ n — ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΡΠ΅ A, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ B. Π ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΡΠ΅ A Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΡΠΌ ΡΠΈΡΠ»Ρ ΡΡΡΠΎΠΊ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ B .
ΠΠ°Π΄Π΅ΡΡΡ, Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Python Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΡ.
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ Python Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ°Π³Π° Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ.
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
- ΠΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ, A ΠΈ B, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ .
- ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ A ΠΈ B.
- ΠΡΠ»ΠΈ Π²Π΅ΡΠ½ΠΎ, ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΡΡΠ΅ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ A ΠΈ B ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ C.
- Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΡΡΠΎ ΠΌΠ°ΡΡΠΈΡΡ A ΠΈ B Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠΈΡΡ.
Π¨Π°Π³ 1 : Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ NumPy random.randint()
. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΊΠ°ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ Python.
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np np.random.seed (27) A = np.random.randint (1,10, ΡΠ°Π·ΠΌΠ΅Ρ = (3,3)) B = np.random.randint (1,10, ΡΠ°Π·ΠΌΠ΅Ρ = (3,2)) print(f"ΠΠ°ΡΡΠΈΡΠ° A:\n {A}\n") print(f"ΠΠ°ΡΡΠΈΡΠ° B:\n {B}\n") # ΠΡΡ ΠΎΠ΄ ΠΠ°ΡΡΠΈΡΠ° Π: [[4 99] [9 1 6] [9 2 3]] ΠΠ°ΡΡΠΈΡΠ° Π: [[2 2] [5 7] [4 4]]
Π¨Π°Π³ 2: ΠΠ΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ multiple_matrix(A,B)
. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ A
ΠΈ B
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ C
, Π΅ΡΠ»ΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ.
ΠΏΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ_ΠΌΠ°ΡΡΠΈΡΡ (A, B): Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ C Π΅ΡΠ»ΠΈ A.shape[1] == B.shape[0]: C = np.zeros((A.shape[0],B.shape[1]),dtype = int) Π΄Π»Ρ ΡΡΡΠΎΠΊΠΈ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (ΡΡΡΠΎΠΊΠΈ): Π΄Π»Ρ ΡΡΠΎΠ»Π±ΡΠ° Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (ΡΡΠΎΠ»Π±ΡΡ): Π΄Π»Ρ elt Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (len (B)): C[ΡΡΡΠΎΠΊΠ°, ΡΡΠΎΠ»Π±Π΅Ρ] += A[ΡΡΡΠΎΠΊΠ°, ΡΠ»Ρ] * B[ΡΠ»Ρ, ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°] Π²Π΅ΡΠ½ΡΡΡ Π‘ Π΅ΡΠ΅: return "ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ A ΠΈ B."
Π Π°Π·Π±ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠ°Π·Π±ΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ±ΡΡΠ²ΠΈΡΡ C ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ : ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Python ΠΈΠΌΠ΅ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. Π Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊ Π½ΠΈΠΌ Π΄ΠΎΡΡΡΠΏ ΠΈΠ·Π²Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° C Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΈΠ·Π²Π½Π΅, Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π΅Π΅ ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. ΠΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡ
ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π°ΡΡΠΈΠ±ΡΡ ΡΠΎΡΠΌΡ
, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ A ΠΈ B. ΠΠ»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° arr
, arr.shape[0]
ΠΈ arr.shape[1]
ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ, ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, if A.shape[1] == B.shape[0]
ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ. Π’ΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ True
, Π±ΡΠ΄Π΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½Π° ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ: Π§ΡΠΎΠ±Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΡΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ A, ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠΈΠΊΠ» for
Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ. ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ» for
ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π°ΠΌ ΠΏΡΠΎΠΉΡΠΈ ΡΠ΅ΡΠ΅Π· ΡΡΠΎΠ»Π±Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ B. Π ΡΠ°ΠΌΡΠΉ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ» for
ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅.
βΆοΈ Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Python Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ A ΠΈ B, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅.
ΡΠΌΠ½ΠΎΠΆΠΈΡΡ_ΠΌΠ°ΡΡΠΈΡΡ (Π, Π) # ΠΡΡ ΠΎΠ΄ ΠΌΠ°ΡΡΠΈΠ²([[ 89, 107], [47, 49], [ 40, 44]])
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ A ΠΈ B Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ, ΡΡΠ½ΠΊΡΠΈΡ multi_matrix()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ C.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² Python Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ Π½Π°ΠΏΠΈΡΠ°Π» ΡΡΠ½ΠΊΡΠΈΡ Python Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
![](/800/600/https/mypresentation.ru/documents_6/b415db3daf0634f021980ada5de17435/img21.jpg)
ΠΠΎΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ.
Π‘Π½Π°ΡΠ°Π»Π° ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌ. ΠΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌΡΡ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ, ΡΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ.
ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠΈΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ°:
[Π΄Π»Ρ - Π²
] Π³Π΄Π΅, : ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ β Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ - : ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
: ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ (ΡΠΏΠΈΡΠΎΠΊ, ΠΊΠΎΡΡΠ΅ΠΆ ΠΈ Ρ. Π΄.), ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΠ΅ Π² ΡΠΈΠΊΠ»Π΅
βΆοΈ ΠΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ Π½Π°ΡΠΈΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ Β«ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ² Π² Python β Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈΒ», ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ C ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π·Π° ΡΠ°Π·.
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°
Π¨Π°Π³ 1: ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ C
ΠΠ»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ i ΠΌΠ°ΡΡΠΈΡΡ A ΠΈ ΡΡΠΎΠ»Π±ΡΠ° j ΠΌΠ°ΡΡΠΈΡΡ B ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π΅Ρ Π·Π°ΠΏΠΈΡΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ (i, j) Π² ΠΌΠ°ΡΡΠΈΡΠ΅ C.
ΡΡΠΌΠΌΠ°(a*b Π΄Π»Ρ a,b Π² zip(A_row, B_col) # zip(A_row, B_col) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ # ΠΡΠ»ΠΈ A_row = [a1, a2, a3] ΠΈ B_col = [b1, b2, b3] # zip(A_row, B_col) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ (a1, b1), (a2, b2) ΠΈ Ρ. Π΄.
ΠΡΠ»ΠΈ i = j = 1
, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΠ½Π΅Ρ Π·Π°ΠΏΠΈΡΡ c_11
ΠΌΠ°ΡΡΠΈΡΡ C. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
Π¨Π°Π³ 2: ΠΠΎΡΡΡΠΎΠΈΡΡ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ C
ΠΠ°ΡΠ° ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΠ΅Π»Ρ β ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π²ΡΡ ΡΡΡΠΎΠΊΡ.
ΠΠ»Ρ ΡΡΡΠΎΠΊΠΈ 1 Π² ΠΌΠ°ΡΡΠΈΡΠ΅ A Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ Π²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ B, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΏΠΎΠ»Π½ΡΡ ΡΡΡΠΎΠΊΡ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ C.
ΠΠ΅ΡΠ½ΡΡΡΡΡ ΠΊ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ°.
- ΠΠ°ΠΌΠ΅Π½ΠΈΡΡ
<ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ>
Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· ΡΠ°Π³Π° 1, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ. - ΠΠ°ΡΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅
B_col
β ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ B. - ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅
zip(*B)
β ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ B.
Π Π²ΠΎΡ ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°.
[ΡΡΠΌΠΌΠ° (a * b Π΄Π»Ρ a, b Π² zip (A_row, B_col)) Π΄Π»Ρ B_col Π² zip (* B)] # zip(*B): * ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ # zip(*B) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΡΡ B
Π¨Π°Π³ 3: ΠΠΎΡΡΡΠΎΠΉΡΠ΅ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΡΡ C
ΠΠ°Π»Π΅Π΅ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ C, Π²ΡΡΠΈΡΠ»ΠΈΠ² ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ.
Π Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ A.
ΠΡΠ΅ ΡΠ°Π· Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅.
- ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅
- Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅
A_row
β ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° Π² ΠΌΠ°ΡΡΠΈΡΠ΅ A. - Π Π²Π°Ρ
Π Π²ΠΎΡ Π½Π°ΡΠ΅ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. for A_row in A]
ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ! β
# ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² com/numpy-reshape-arrays-in-python/">ΠΌΠ°ΡΡΠΈΠ² NumPy Ρ ΠΏΠΎΠΌΠΎΡΡΡ np.array() C = np.array([[sum(a*b Π΄Π»Ρ a,b Π² zip(A_row, B_col)) Π΄Π»Ρ B_col Π² zip(*B)] Π΄Π»Ρ A_row Π² A]) # ΠΡΡ ΠΎΠ΄: [[ 89107] [ 47 49] [ 40 44]]
ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠΈΡΠΌΠΎΡΡΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»Π°ΠΌ for, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, ΡΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ·Π½Π°Π΅ΠΌ ΠΎ Π½ΠΈΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ NumPy matmul() Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ Π² Python
np.matmul()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²Ρ
ΠΎΠ΄Π½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΡΠ°Π²Π½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ .
C = np.matmul(A,B) ΠΏΠ΅ΡΠ°ΡΡ(Π‘) # ΠΡΡ ΠΎΠ΄: [[ 89 107] [ 47 49] [ 40 44]]
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΈΠ·ΡΡΠ°Π»ΠΈ ΡΠ°Π½Π΅Π΅. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²ΠΌΠ΅ΡΡΠΎ np.matmul()
ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ @, ΠΈ ΠΌΡ ΡΡΠ°Π·Ρ ΡΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΠΌ.
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ @ Π² Python Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ
Π Python @
β ΡΡΠΎ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ.
ΠΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π΄Π²ΡΠΌΡ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Ρ N-ΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ NumPy ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°
@
Ρ Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Python 3.5 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ.
ΠΠΎΡ ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
Π‘ = Π@Π ΠΏΠ΅ΡΠ°ΡΡ(Π‘) # ΠΡΡ ΠΎΠ΄ ΠΌΠ°ΡΡΠΈΠ²([[ 89, 107], [47, 49], [ 40, 44]])
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ C ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠ°Π½Π΅Π΅.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ np.dot() Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ?
ΠΡΠ»ΠΈ Π²Ρ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ np.dot()
Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ
ΠΌΠ°ΡΡΠΈΡ, Π²ΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
C = np.dot(A,B) ΠΏΠ΅ΡΠ°ΡΡ(Π‘) # ΠΡΡ ΠΎΠ΄: [[ 89 107] [ 47 49] [ 40 44]]
ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ np.
ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. dot(A, B)
ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΠΌ NumPy, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ np.dot()
ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π΄Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΡ
Π²Π΅ΠΊΡΠΎΡΠΎΠ², Π° Π½Π΅ Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ.
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, ΡΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ (i, j) ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ C ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π»ΡΡΠ½ΡΠΌ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠΎΠΊΠΈ i ΠΌΠ°ΡΡΠΈΡΡ A ΠΈ ΡΡΠΎΠ»Π±ΡΠ° j ΠΌΠ°ΡΡΠΈΡΡ B.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ NumPy Π½Π΅ΡΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΈ Π²ΡΠ΅ΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ, Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠΎ ΡΡΠΎΠ±Ρ Π²Π°Ρ ΠΊΠΎΠ΄ Π±ΡΠ» ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ ΠΈ ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π΄Π²ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ np.matmul()
ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ @
.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
π― Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ Π²Ρ ΡΠ·Π½Π°Π»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅.
- Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ: ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΡΠ΅ A = ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ B .
- ΠΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ Python, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ. Π ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ for.
- ΠΠ°Π»Π΅Π΅ Π²Ρ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ. ΠΠ½ΠΈ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½Ρ, ΡΠ΅ΠΌ ΡΠΈΠΊΠ»Ρ for, Π½ΠΎ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Ρ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡΡ.
- ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ NumPy np.matmul() Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ.
- ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ·Π½Π°Π»ΠΈ ΠΎΠ± ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ @ Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΡ Π² Python.
ΠΠ° ΡΡΠΎΠΌ ΠΌΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ Π² Python. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ°Π³Π° ΡΠ·Π½Π°ΠΉΡΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΎΡΡΡΠΌ Π² Python. ΠΠ»ΠΈ ΡΠ΅ΡΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΡΡΡΠΎΠΊΠΈ Python.
ΠΡΠΈΡΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ!π
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π½Π°ΡΠΈΠΌ ΡΠΏΠΎΠ½ΡΠΎΡΠ°ΠΌ
ΠΠΎΠ»Π΅Π΅ 20 ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ NumPy
Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² NumPy. ΠΡ Π½Π°ΡΡΠΈΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ°ΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π·Π½ΡΡ
ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π²ΠΌΠ΅ΡΡΠ΅.
Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΡΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π³ΠΎΡΡΡΠΈΠ΅ ΡΠ΅ΠΌΡ, ΡΠ°ΠΊ ΡΡΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ!
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ Π΄Π²ΠΈΠ½Π΅ΠΌΡΡ Π΄Π°Π»ΡΡΠ΅, Π»ΡΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±ΡΡ.
Β
Β
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ
ΠΠ΅ΠΊΡΠΎΡ:Β ΠΠ»Π³Π΅Π±ΡΠ°ΠΈΡΠ΅ΡΠΊΠΈ Π²Π΅ΠΊΡΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠΎΡΠΊΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Π΅ΠΊΡΠΎΡ Ρ Π΄Π²ΡΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΡΠΊΡ Π² Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅. Π ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠ΅ Π²Π΅ΠΊΡΠΎΡ β ΡΡΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ΅Π» Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ², ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ»ΠΈ ΠΊΠΎΡΡΠ΅ΠΆ.
ΠΠ°ΠΏΡ. [1,2,3,4]
ΠΠ°ΡΡΠΈΡΠ°: Β ΠΠ°ΡΡΠΈΡΠ° (ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΌΠ°ΡΡΠΈΡ) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ΅Π» ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ:
[[1,2,3], [4,5,6], [7,8,9]]
Π‘ΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅:Β Π‘ΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅Β β ΡΡΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄ΡΒ 2 Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ .
Π Π°Π²Π΅Π½ ΡΡΠΌΠΌΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²Π΅ΠΊΡΠΎΡΠΎΠ².
Π‘ ΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ² ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ ΠΊ ΡΠ°Π±ΠΎΡΠ΅.
Β
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ Π½Π° Π²Π΅ΠΊΡΠΎΡ
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΎΡΠΌΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ β ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ ΠΈ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠΉΠΌΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ NumPy.
ΠΠ΅ΡΠΎΠ΄ array() NumPy ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ², ΠΌΠ°ΡΡΠΈΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΡ ΡΠ΅Π½Π·ΠΎΡΠΎΠ². ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ 5-ΠΌΠ΅ΡΠ½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ ΠΈ ΠΌΠ°ΡΡΠΈΡΡ 3 Γ 3, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ NumPy.
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np Π° = np.ΠΌΠ°ΡΡΠΈΠ² ([1, 3, 5, 7, 9]) Π± = np.ΠΌΠ°ΡΡΠΈΠ²([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print("ΠΠ΅ΠΊΡΠΎΡ a:\n", a) Π Π°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ() print("Matrix b:\n", b)
ΠΡΠ²ΠΎΠ΄:
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ ΠΈ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ.
ΠΡΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ°ΡΡΠΈΡΡ Π½Π° Π²Π΅ΠΊΡΠΎΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Ρ :
- Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΡ Π½Π° Π²Π΅ΠΊΡΠΎΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π΅ΠΊΡΠΎΡ.
- ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΠΎΠ³ΠΎ Π²Π΅ΠΊΡΠΎΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΈ ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌΡΠΌ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ.
- ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Π²Π΅ΠΊΡΠΎΡΠ΅.
ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ NumPy matmul() Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π½Π°ΡΠΈΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΌΠ°ΡΡΠΈΡΡ 3Γ3 ΠΈ ΡΠΌΠ½ΠΎΠΆΠΈΠΌ Π΅Π΅ Π½Π° Π²Π΅ΠΊΡΠΎΡ Π΄Π»ΠΈΠ½Ρ 3.
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np Π° = np.ΠΌΠ°ΡΡΠΈΠ²([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) Π± = np.ΠΌΠ°ΡΡΠΈΠ² ([10, 20, 30]) ΠΏΠ΅ΡΠ°ΡΡ("Π=", Π°) ΠΏΠ΅ΡΠ°ΡΡ("Π± =", Π±) ΠΏΠ΅ΡΠ°ΡΡ ("Ab =", np.matmul (Π°, Π±))
ΠΡΠ²ΠΎΠ΄:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π΅ΠΊΡΠΎΡ Π΄Π»ΠΈΠ½Ρ, ΡΠ°Π²Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΌΠ°ΡΡΠΈΡΡ ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Π΅ΠΉ.
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΡΡΠ³ΡΡ ΠΌΠ°ΡΡΠΈΡΡ
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΏΠΎΠ½ΡΠ»ΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ Π½Π° Π²Π΅ΠΊΡΠΎΡ; Π±ΡΠ»ΠΎ Π±Ρ Π»Π΅Π³ΠΊΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ
ΠΌΠ°ΡΡΠΈΡ.
ΠΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ ΠΏΠΎΠ²ΡΠΎΡΠΈΠΌ ΡΠ°ΠΌΡΠ΅ Π²Π°ΠΆΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ:
- ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΡΡΠΎΠΊ Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΠ΅.
- ΠΡΠ»ΠΈ ΠΌΡ ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² m x n Π½Π° Π΄ΡΡΠ³ΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² n x p, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² m x p.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ m x n ΠΌΠ°ΡΡΠΈΡΡ A Π½Π° n x p ΠΌΠ°ΡΡΠΈΡΡ B:Β
ΠΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ
ΠΌΠ°ΡΡΠΈΡ C = AB Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ m ΡΡΡΠΎΠΊ ΠΈ p ΡΡΠΎΠ»Π±ΡΠΎΠ².
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ C ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ-ΡΡΡΠΎΠΊΠΎΠΉ Π² ββA ΠΈ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ-ΡΡΠΎΠ»Π±ΡΠΎΠΌ Π² B.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ
ΠΌΠ°ΡΡΠΈΡ Π² Python, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ NumPy.
ΠΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² 3 x 2 ΠΈ 2 x 4.
ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ np.random.randint() Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΈΡΠ΅Π».
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np np.random.seed (42) A = np.random.randint (0, 15, ΡΠ°Π·ΠΌΠ΅Ρ = (3,2)) B = np.random.randint (0, 15, ΡΠ°Π·ΠΌΠ΅Ρ = (2,4)) print("ΠΠ°ΡΡΠΈΡΠ° Π:\n", Π) print("ΡΠΎΡΠΌΠ° A =", A.shape) Π Π°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ() print("ΠΠ°ΡΡΠΈΡΠ° B:\n", B) print("shape of B =", B.shape)
ΠΡΠ²ΠΎΠ΄:
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ βnp. random.seed()β, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ
ΡΠΈΡΠ΅Π» Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ.
ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π° Π±ΡΠ΄ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ ΡΠΈΡΠ»Π°. ΠΡΠΎΡ ΡΠ°Π³ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, Π½ΠΎ Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π½Π° 42 Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠΊΠ°, ΡΡΠΎΠ±Ρ Π²Π°ΡΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠΌ Π½Π° Π²ΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ½ΠΈΠΌΠΊΠ°Ρ ΡΠΊΡΠ°Π½Π°.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΌΠ½ΠΎΠΆΠΈΠΌ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΠ΅ΡΠΎΠ΄ np.matmul() . Π Π΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΠΌΡ 3 x 4.
C = np.matmul(A, B) print("ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ A ΠΈ B:\n", C) print("shape of product =", C.shape)
ΠΡΠ²ΠΎΠ΄:
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ 3 ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π΄Π²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ 2 ΠΌΠ°ΡΡΠΈΡ, ΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π΄Π²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π±ΡΠ΄ΡΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈΡΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ ΡΡΠΈ ΠΌΠ°ΡΡΠΈΡΡ A, B ΠΈ C, ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ D = ABC.
ΠΠ΄Π΅ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² A Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΡΡΠΎΠΊ Π² B, Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ Π² C Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² B.
ΠΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΡΠΎΠΊ, ΡΠ°Π²Π½ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΡΡΠΎΠΊ Π² A ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² C.
ΠΠ°ΠΆΠ½ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΌ .
ΠΡΠΈ ΠΌΡΠ»ΡΡΠΈΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π΅ Π΄Π°Π΅Ρ ΡΠ°Π·Π½ΡΡ
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΡ D = ABC Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° AB ΠΈΠ»ΠΈ BC.
ΠΠ±Π° ΠΏΠΎΡΡΠ΄ΠΊΠ° Π΄Π°Π΄ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° Python.
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np np.random.seed (42) A = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (2,2)) B = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (2,3)) C = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (3,3)) print("ΠΠ°ΡΡΠΈΡΠ° A:\n{}, shape={}\n".format(A, A.shape)) print("ΠΠ°ΡΡΠΈΡΠ° B:\n{}, shape={}\n".format(B, B.shape)) print("ΠΠ°ΡΡΠΈΡΠ° C:\n{}, shape={}\n".format(C, C.shape))
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ Π²ΡΡΠ΅, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡ
ΡΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΡΠΎΡΠΌΡ (2, 3).
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ np.matmul() ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π²Π°ΠΆΠ΄Ρ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡ, ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² Π²ΡΠΎΡΠΎΠΉ.
(ΠΡ Π½Π°ΠΉΠ΄Π΅ΠΌ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²Π²Π΅Π΄Π΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ @)
ΠΡΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΠ±ΠΎΠΈΡ ΠΏΠΎΡΡΠ΄ΠΊΠ°Ρ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΡΡΠΈ.
D = np.matmul(np.matmul(A,B),C) print("Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ (AB)C:\n\n{},shape={}\n".format(D, D.shape)) D = np.matmul(A, np.matmul(B,C)) print("Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ A(BC):\n\n{},shape={}".format(D, D.shape))
ΠΡΠ²ΠΎΠ΄:
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΡ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π»ΠΈ ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° Π ΠΈ Π ΠΈΠ»ΠΈ ΡΠ½Π°ΡΠ°Π»Π° Π ΠΈ Π‘.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅ΡΡΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡΠΌΡ (2, 3), ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌ ΡΡΡΠΎΠΊΠ°ΠΌ.
Β
NumPy Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡ
Π’ΡΠ΅Ρ ΠΌΠ΅ΡΠ½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° β ΡΡΠΎ Π½Π΅ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ (ΠΈΠ»ΠΈ ΡΡΠ΅ΠΊ) ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡ, ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π΄Π²ΡΠΌΠ΅ΡΠ½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ/ΡΡΠ΅ΠΊ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ².
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡ, ΡΡΠΎ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠΌΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ ΡΡΡΠΎΠΊ ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ².
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΡ A ΡΠΎΡΠΌΡ (3,3,2), ΡΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π½Π° Π΄ΡΡΠ³ΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ B ΡΠΎΡΠΌΡ (3,2,4).
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np np.random.seed (42) A = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (3,3,2)) B = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (3,2,4)) print("A:\n{}, shape={}\nB:\n{}, shape={}".format(A, A.shape,B, B.shape))
ΠΡΠ²ΠΎΠ΄:
ΠΠ΅ΡΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠΎΠΏΠΊΡ ΠΈΠ· ΡΡΠ΅Ρ
Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΡ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡΠΌΡ (3,2), Π° Π²ΡΠΎΡΠ°Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠΎΠΏΠΊΡ ΠΈΠ· ΡΡΠ΅Ρ
Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΡ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡΠΌΡ (2,4).
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ A ΠΈ B, ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈ ΡΠΎΡΠΌΡ (3,2) ΠΈ (2,4) ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ A[0] ΠΈ B[0], Π²ΡΠΎΡΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ A[1] ΠΈ B[1] ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΡΠ΅ΡΡΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ A[2] ΠΈ ΠΠ 2].
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΠΌΡ (3,4). Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠΌ Π΄Π²ΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΡΠΎΡΠΌΡ (3,3,4).
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°.
C = np.matmul(A,B) print("Product C:\n{}, shape={}".format(C, C.shape))
ΠΡΠ²ΠΎΠ΄:
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ np.matmul()
ΠΡΠΎΠΌΠ΅ ‘np.matmul ()’ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° Π΄ΡΡΠ³ΠΈΡ ΡΠΏΠΎΡΠΎΠ±Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ β ΠΌΠ΅ΡΠΎΠ΄ np.dot() ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ‘@’ , ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ/Π³ΠΈΠ±ΠΊΠΎΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ΅ΡΠΎΠ΄ βnp.dot()β
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ Π½Π°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ², Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ Π΄Π²Π΅ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΡΡ, ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ ‘np. matmul()’ ΠΈ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np # ΠΌΠ°ΡΡΠΈΡΠ° 3x2 A = np.ΠΌΠ°ΡΡΠΈΠ²([[8, 2, 2], [1, 0, 3]]) # ΠΌΠ°ΡΡΠΈΡΠ° 2x3 B = np.ΠΌΠ°ΡΡΠΈΠ²([[1, 3], [5, 0], [9, 6]]) # ΡΠΎΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡ 2x2 Π‘ = np.ΡΠΎΡΠΊΠ° (Π, Π) print("ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ A ΠΈ B:\n{} shape={}".format(C, C.shape))
ΠΡΠ²ΠΎΠ΄:
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΡΡ 3Γ2, Π° ΠΌΠ°ΡΡΠΈΡΡ 2Γ3 ΠΈ ΠΈΡ
ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ 2Γ2, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ
ΠΌΠ°ΡΡΠΈΡ,
ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ ‘ np.matmul()’ Π²Π΅ΡΠ½Π΅ΡΡΡ.
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ np.dot() ΠΈ np.matmul() Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΡ
ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΡΠ΅Ρ
ΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ.
Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ np.matmul() ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π΄Π²ΡΠΌΡ ΡΡΠ΅Ρ
ΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΏΡΡΠ΅ΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΠΏΠ°Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΡ (ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΎΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅), np.dot(), Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΠΊΠ°Π»ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΏΠ°Ρ Π²Π΅ΠΊΡΠΎΡΡ-ΡΡΡΠΎΠΊΠΈ ΠΈ Π²Π΅ΠΊΡΠΎΡΡ-ΡΡΠΎΠ»Π±ΡΡ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΈ Π²ΡΠΎΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
np.dot() Π΄Π»Ρ Π΄Π²ΡΡ
ΡΡΠ΅Ρ
ΠΌΠ΅ΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΡ A ΠΈ B Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΌΠΌΡ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈ A ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈ B.
ΠΡΠΎ Π½Π΅ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΈ Π½Π΅Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡΡ .
ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ A ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡΠΌΡ (a, b, c), Π° B ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡΠΌΡ (d, c, e), ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ np.dot(A, B) Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΠΌΡ (a, d, b,e), ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ (i,j,k,m) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ:
dot(A, B)[i,j,k,m] = sum(A[i,j,: ] * B[k,:,m])
ΠΡΠΎΠ²Π΅ΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np np.random.seed (42) A = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (2,3,2)) B = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (3,2,4)) print("A:\n{}, shape={}\nB:\n{}, shape={}".format(A, A.shape,B, B.shape))
ΠΡΠ²ΠΎΠ΄:
ΠΡΠ»ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ ΡΡΠΈ ΠΌΠ°ΡΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ‘np.dot()’, ΠΎΠ½ Π²Π΅ΡΠ½Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΡΠΎΡΠΌΡ (2,3,3,4), ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΠΏΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΡΠΎΡΠΌΡΠ»Π΅.
C = np.dot(A,B) print("np.dot(A,B) =\n{}, shape={}".format(C, C.shape))
ΠΡΠ²ΠΎΠ΄:
ΠΡΡΠ³ΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ‘np. matmul()’ ΠΈ ‘np.dot()’ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ‘np.matmul()’ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠΊΠ°Π»ΡΡ (ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΡΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π·Π΄Π΅Π»), Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ‘np.dot()’ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΡΠΎ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ Β«@Β»
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ @, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² Python 3.5, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΡΡΠΎ ΠΈ Β«np.matmul()Β».
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ np.matmul() Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° @ ΠΈ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΡΡΠΎ ΠΈ ΡΠ°Π½Π΅Π΅:
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np np.random.seed (42) A = np.random.randint (0, 15, ΡΠ°Π·ΠΌΠ΅Ρ = (3,2)) B = np.random.randint (0, 15, ΡΠ°Π·ΠΌΠ΅Ρ = (2,4)) print("ΠΠ°ΡΡΠΈΡΠ° A:\n{}, shape={}".format(A, A.shape)) print("ΠΠ°ΡΡΠΈΡΠ° B:\n{}, shape={}".format(B, B.shape)) Π‘ = Π @ Π print("ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ A ΠΈ B:\n{}, shape={}".format(C, C.shape))
ΠΡΠ²ΠΎΠ΄:
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ‘@’ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π΄Π²ΡΡ
ΠΌΠ°ΡΡΠΈΡ.
Π Π°Π½ΡΡΠ΅ Π½Π°ΠΌ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ np.matmul() Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΈΡ
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ Π²ΡΠ·ΠΎΠ²Ρ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ (ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΡΠΌ) ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ:
import numpy as np np.random.seed (42) A = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (2,2)) B = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (2,3)) C = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (3,3)) print("ΠΠ°ΡΡΠΈΡΠ° A:\n{}, shape={}\n".format(A, A.shape)) print("ΠΠ°ΡΡΠΈΡΠ° B:\n{}, shape={}\n".format(B, B.shape)) print("ΠΠ°ΡΡΠΈΡΠ° C:\n{}, shape={}\n".format(C, C.shape)) D = A @ B @ C # ΡΠ°Π½ΡΡΠ΅ np.matmul(np.matmul(A,B),C) print("ΠΡΠΎΠ΄ΡΠΊΡ ABC:\n\n{}, shape={}\n".format(D, D.shape))
ΠΡΠ²ΠΎΠ΄:
Β
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΠ°Π»ΡΡ (ΠΎΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅)
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ Π½Π° Π²Π΅ΠΊΡΠΎΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΡΡ ΠΌΠ°ΡΡΠΈΡΡ. ΠΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ Π½Π° ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅?
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°ΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ Π½Π° ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΡ
ΠΎΠ΄Π½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΡ ΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ, ΡΡΠΎ ΠΈ Π²Ρ
ΠΎΠ΄Π½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ°.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ βnp.matmul()β Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π½Π° ΡΠΊΠ°Π»ΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ np.dot() ΠΈΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° β*β.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ΄Π°.
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np A = np.ΠΌΠ°ΡΡΠΈΠ²([[1,2,3], [4,5, 6], [7, 8, 9]]) Π = Π * 10 print("ΠΠ°ΡΡΠΈΡΠ° A:\n{}, shape={}\n".format(A, A.shape)) print("Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ A Π½Π° 10:\n{}, shape={}".format(B, B.shape))
ΠΡΠ²ΠΎΠ΄:
Β
ΠΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΠ½ΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΡ, ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΠΎΡΠΌΡ.
ΠΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠΌ ΠΠ΄Π°ΠΌΠ°ΡΠ° . Β ΠΠ½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°.
ΠΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ, Π²ΡΠ·Π²Π°Π² ΡΡΠ½ΠΊΡΠΈΡ Multi() NumPy ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ β*β .
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np np.random.seed (42) A = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (3,3)) B = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (3,3)) print("ΠΠ°ΡΡΠΈΡΠ° A:\n{}\n".format(A)) ΠΏΠ΅ΡΠ°ΡΡ ("ΠΠ°ΡΡΠΈΡΠ° B:\n{}\n".format(B)) C = np.multiply(A,B) # ΠΈΠ»ΠΈ A * B print("ΠΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ A ΠΈ B:\n{}".format(C))
ΠΡΠ²ΠΎΠ΄:
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΠΎΡΠΌΡ .
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, NumPy Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»ΠΎ ΡΠΎΡΠΌΠ΅ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ Π½Π° ΡΠΊΠ°Π»ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΌΠ°ΡΡΠΈΡΡ ΡΠΎΡΠΌΡ, ΡΠ°Π²Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΌΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ ΠΏΡΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΡΡ ΡΠΎΡΠΌΡ (3,3) Π½Π° ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 10, NumPy ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΡΡΠ³ΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΡΠΎΡΠΌΡ (3,3) Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π΄Π΅ΡΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ
ΠΏΠΎΠ·ΠΈΡΠΈΡΡ
Π² ΠΌΠ°ΡΡΠΈΡΠ΅ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ
ΠΌΠ°ΡΡΠΈΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Ρ ΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np np.random.seed (42) A = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (3,4)) B = np.ΠΌΠ°ΡΡΠΈΠ² ([[1,2,3,4]]) print("ΠΠ°ΡΡΠΈΡΠ° A:\n{}, shape={}\n".format(A, A.shape)) print("ΠΠ°ΡΡΠΈΡΠ° B:\n{}, shape={}\n".format(B, B.shape)) Π‘ = Π * Π print("ΠΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ A ΠΈ B:\n{}".format(C))
ΠΡΠ²ΠΎΠ΄:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Π²ΡΠΎΡΠ°Ρ ΠΌΠ°ΡΡΠΈΡΠ°, ΠΈΠΌΠ΅Π²ΡΠ°Ρ ΡΠΎΡΠΌΡ (1,4), Π±ΡΠ»Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π° Π² ( 3,4) ΠΌΠ°ΡΡΠΈΡΠ° ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ, ΠΏΡΠΈΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΈΠΌΠ΅Π»ΠΎ ΠΌΠ΅ΡΡΠΎ.
Β
ΠΠ°ΡΡΠΈΡΠ°, Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½Π½Π°Ρ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ (Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ)
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΠ·Π²Π΅ΡΡΠΈ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ΄Π΅Π»Π°ΡΡ ΡΡ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ.
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ) Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ n ΡΠ°Π²Π½ΠΎΡΠΈΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠΌΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ n ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΉ, ΡΠ° ΠΆΠ΅ Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΠΏΡΠΈ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΌΠ°ΡΡΠΈΡΡ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΠΌΠ°ΡΡΠΈΡΠ½ΡΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΠΎΠ·Π²Π΅Π΄Π΅ΠΌ ΠΌΠ°ΡΡΠΈΡΡ A Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ n, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½Π° ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΌΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ n ΠΌΠ°ΡΡΠΈΡ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ A.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΡΡΠΎΠ±Ρ ΡΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π±ΡΠ»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ, Π±Π°Π·ΠΎΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠΉ .
ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΡΠ΅ Π±ΡΠ»ΠΎ ΡΠ°Π²Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΡΡΠΎΠΊ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΡΠ΅.
ΠΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π² Python ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ linalg.matrix_power() NumPy, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Π² Python:
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np np.random.seed (10) A = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (3,3)) A_to_power_3 = np.linalg.matrix_power(A, 3) print("ΠΠ°ΡΡΠΈΡΠ° A:\n{}, shape={}\n".format(A, A.shape)) print("A Π² ΡΡΠ΅ΠΏΠ΅Π½ΠΈ 3:\n{}, shape={}".format(A_to_power_3,A_to_power_3.shape))
ΠΡΠ²ΠΎΠ΄:
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ Ρ ΡΡΠ΅ΠΌΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°ΠΌΠΈ (Π²ΡΠ΅ ΠΎΠ½ΠΈ A), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ @:
B = A @ A @ A print("B = A @ A @ A :\n{}, shape={}".format(B, B.shape))
ΠΡΠ²ΠΎΠ΄:
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ±Π΅ΠΈΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅.
Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²Π°ΠΆΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ: Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΡΠ½ΠΎΡΡΡ ΡΠ°Π²Π½Π° 0?
Π§ΡΠΎΠ±Ρ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΠΌ ΡΠΊΠ°Π»ΡΡΠ½ΡΡ Π±Π°Π·Ρ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ 0,9.0423 ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1, Π²Π΅ΡΠ½ΠΎ? Π’Π΅ΠΏΠ΅ΡΡ, ΡΡΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ 1 Π² ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±ΡΠ΅? ΠΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ³Π°Π΄Π°Π»ΠΈ!
ΠΡΠΎ ΠΌΠ°ΡΡΠΈΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΠΈ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ n x n Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ 0 ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΠ΅ I ΡΠΎΡΠΌΡ n x n.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π±ΡΡΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΡΠΎ Π½Π° Python, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ A.
C = np.linalg.matrix_power(A, 0) print("A Π² ΡΡΠ΅ΠΏΠ΅Π½ΠΈ 0:\n{}, shape={}".format(C, C.shape))
ΠΡΠ²ΠΎΠ΄:
ΠΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ, Ρ. Π΅. Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ.
ΠΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π² Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΡ β ** β β ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡΠ΅Π³ΠΎ .
ΠΠΏΡΡΡ ΠΆΠ΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΡΡ ΡΡΠ΅ΠΏΠ΅Π½Π΅ΠΉ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ³ΠΎ ΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π² Python: 9ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ:\n{}, shape={}\n».format(C, C.shape))
ΠΡΠ²ΠΎΠ΄:
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΡΠ° 5 x 6 A ΠΈ Π΄ΡΡΠ³ΡΡ ΠΌΠ°ΡΡΠΈΡΡ 3 x 3 B. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠΈΡΡ ΡΡΠΈ Π΄Π²Π΅ Π²ΠΌΠ΅ΡΡΠ΅ ΠΈΠ·-Π·Π° Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ²
ΠΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΡΡ 3×3 Π² ΠΌΠ°ΡΡΠΈΡΠ΅ A Π½Π° ΠΌΠ°ΡΡΠΈΡΡ B, ΡΠΎΡ
ΡΠ°Π½ΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² A Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌΠΈ?
ΠΠ»Ρ Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π² Python, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π°ΡΠ΅Π·ΠΊΡ ΠΌΠ°ΡΡΠΈΡΡ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΡΡ ΠΈΠ· A, Π²ΡΠΏΠΎΠ»Π½ΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° B, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² A.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ.
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np np.random.seed (42) A = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (5,6)) B = np.random.randint (0, 10, ΡΠ°Π·ΠΌΠ΅Ρ = (3,3)) print("ΠΠ°ΡΡΠΈΡΠ° A:\n{}, shape={}\n".format(A, A.shape)) print("ΠΠ°ΡΡΠΈΡΠ° B:\n{}, shape={}\n".format(B, B.shape)) Π‘ = Π[1:4,2:5] @ Π Π[1:4,2:5] = Π‘ print("ΠΠ°ΡΡΠΈΡΠ° A ΠΏΠΎΡΠ»Π΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΡ:\n{}, shape={}\n".format(A, A.shape))
ΠΡΠ²ΠΎΠ΄:
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΡΡΡΠΎΠΊ Ρ 1 ΠΏΠΎ 3 ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΡΠΎ 2 ΠΏΠΎ 4 Π±ΡΠ»ΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½Ρ Π½Π° B, ΠΈ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π±ΡΠ»ΠΎ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² A, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ A ΠΈΠΌΠ΅ΡΡ ΠΎΡΡΠ°Π»ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ.
Π’Π°ΠΊΠΆΠ΅ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² Π½ΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΡΡ, ΡΠ½Π°ΡΠ°Π»Π° ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π² Π½ΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ°Π² ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΡΡ.
Β
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
ΠΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ NumPy ΡΡΠΊΠΎΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π½Π°ΡΠ΅Π³ΠΎ Π¦Π.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π΅ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅Π΅. Π¦Π ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΈ ΡΡΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π½Π°ΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π² ΡΠ°ΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , ΠΊΠ°ΠΊ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ Π½Π° ΡΡΠ΅Π½Ρ Π²ΡΡ ΠΎΠ΄ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π°ΠΌ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΡ ΡΠΎΡΠ½ΠΈ ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π·Π° Π΄ΠΎΠ»ΠΈ ΡΠ΅ΠΊΡΠ½Π΄Ρ.
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
NumPy Π½Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π½Π°ΠΌ Π΄ΠΎΡΡΠΈΡΡ Π½Π°ΡΠ΅ΠΉ ΡΠ΅Π»ΠΈ.
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Β« scikit-cuda Β» ΠΈ Β« PyCUDA Β», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ pip. ΠΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π½Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ
Π½Π° Π±Π°Π·Π΅ CUDA. Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, Π΅ΡΠ»ΠΈ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ.
pip ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ pycuda pip install scikit-cuda
ΠΡΠ»ΠΈ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Π½Π΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π½ΠΎΡΡΠ±ΡΠΊΠΈ Google Colab ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ; ΡΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΡ 1000Γ1000 ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ:
ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅; Π·Π°ΡΠ΅ΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΈΡ
Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ PyCUDAβs β gpuarray.to_gpu() βΠΌΠ΅ΡΠΎΠ΄) ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Β« time Β» Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π² ΠΎΠ±ΠΎΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π¦Π
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ numpy ΠΊΠ°ΠΊ np Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° # Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΡ 1000 x 1000 np.random.seed (42) x = np.random.randint(0,256, ΡΠ°Π·ΠΌΠ΅Ρ=(1000,1000)).astype("float64") y = np.random.randint(0,256, ΡΠ°Π·ΠΌΠ΅Ρ=(1000,1000)).astype("float64") # Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° CPU ΡΠΈΠΊ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() Π³ = np.matmul (Ρ , Ρ) ΡΠΎΠΊ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() time_taken = toc - ΡΠΈΠΊ #Π²ΡΠ΅ΠΌΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ print("ΠΡΠ΅ΠΌΡ, Π·Π°ΡΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ Π¦Π (Π² ΠΌΡ) = {}".format(time_taken*1000))
ΠΡΠ²ΠΎΠ΄:
ΠΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°ΡΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π΅Ρ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ).
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
#Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅ linalg.init() # Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π° GPU x_gpu = gpuarray.to_gpu(x) y_gpu = gpuarray.to_gpu(y) ΡΠΈΠΊ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() #Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ z_gpu = linalg.mdot(x_gpu, y_gpu) ΡΠΎΠΊ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() time_taken = toc - ΡΠΈΠΊ #Π²ΡΠ΅ΠΌΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ print("ΠΡΠ΅ΠΌΡ, Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° GPU (Π² ΠΌΡ) = {}".format(time_taken*1000))
ΠΡΠ²ΠΎΠ΄:
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° GPU Π΄Π°Π΅Ρ Π½Π°ΠΌ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π² 70 ΡΠ°Π· ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ CPU.
ΠΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ Π±ΡΠ»ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅. ΠΠ»Ρ ΠΊΡΡΠΏΠ½ΠΎΠΌΠ°ΡΡΡΠ°Π±Π½ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ Π΄Π°ΡΡ Π½Π°ΠΌ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ².
Β
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ
ΠΌΠ°ΡΡΠΈΡ, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈ ΠΊΠ°ΠΊ ΠΈΡ
ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² Python.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ (ΠΈ ΠΈΡ
ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² NumPy), ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡΡ
ΠΌΠ°ΡΡΠΈΡ, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ»ΠΈ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΡΡ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π² ΠΌΠ°ΡΡΠΈΡΠ°Ρ
, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ.