ΠΠ° ΡΠΈΡ. 6.1 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΡΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ ΡΠ°Π·Π½ΠΎΡΡΡ ΠΌΠ°ΡΡΠΈΡ A ΠΈ Π. ΠΠ»Ρ ΡΡΠΈΠ»Π΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠ° Π²ΠΎΡΠΏΡΠΈΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ Π·Π°ΠΊΡΠ°ΡΠΊΠ° ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ²Π΅ΡΠ°ΠΌΠΈ. ΠΠ»Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠ²Π΅ΡΠ° Π²Π²Π΅Π΄Π΅Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° F.
6.3. Π Π°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ LinearAlgebra ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌΠΈ NAG
6.3.1. ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° LinearAlgebra
Π Π½ΠΎΠ²ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌ Maple Π±ΡΠ»Π° ΡΠ΄Π΅Π»Π°Π½Π° ΡΡΠ°Π²ΠΊΠ° Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π²Π½ΠΎ Π°ΠΏΡΠΎΠ±ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π±ΡΡΡΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±ΡΡ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΡΠΌΠΈ Number Algorithm Group (NAG). ΠΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈΠ·Π΄Π°Π²Π½Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ ΠΠΠ ΠΈ ΡΡΠΏΠ΅ΡΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ , ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π· Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΠ°Π·. ΠΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ, ΡΠ²ΠΎΠ΄ΡΡΠΈΡ ΡΡ ΠΊ Π·Π°Π΄Π°ΡΠ°ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±ΡΡ. Π ΡΠΈΡΠ»Π΅ ΡΠ°ΠΊΠΈΡ Π·Π°Π΄Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ»Π΅ΠΊΡΡΠΎΡΠ΅Ρ Π½ΠΈΠΊΠΈ, ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² ΠΈ Ρ.Π΄.
Π Maple 9.5/10 ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² NAG ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ LinearAlgebra. ΠΠ»Ρ Π΅Π³ΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (ΡΠ°ΠΉΠ» NAG):
> restart; with(LinearAlgebra):
> infolevel[LinearAlgebra]:=1;
infolevelLinearAlgebra:= 1ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° (ΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΡΡΠ΅Π½) ΠΏΠΎΠ²ΡΠΎΡΡΠ΅Ρ ΠΏΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° linalg, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π½Π° ΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ. ΠΠ»Π°Π²Π½ΠΎΠ΅ ΡΠΎ, ΡΡΠΎ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΡΡΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² NAG ΠΈ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠ°ΠΊΠ΅ΡΠ° linalg, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠ°ΡΡΠ΅ΡΡ Π² ΡΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠΈΡΠ΅Π», ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ΅Π½ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΠ½Π°ΡΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΈΡΠ°ΡΠ΅Π»Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠΉΠΌΠ΅Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠ°ΠΊΠ΅ΡΠ° LinearAlgebra ΠΏΠΎ ΠΈΡ ΡΠΎΡΡΠ°Π²Π½ΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, DeleteColumn ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ, ToeplitzMatrix ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ Π’Π΅ΠΏΠ»ΠΈΡΠ°, ZeroMatrix β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ Ρ Π½ΡΠ»Π΅Π²ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ Ρ.Π΄. ΠΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡΠΊΠ²Ρ.
6.3.2. ΠΡΠΈΠΌΠ΅ΡΡ ΠΌΠ°ΡΡΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ° LinearAlgebra
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² NAG ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π°Π³Π° ΡΠ°ΠΊΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡ ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ:
> UseHardwareFloats := false; # use software floats
Use Hardware Floats := false> UseHardwareFloats := true; # default behaviour
UseHardwareFloats := trueΠΠ°ΡΡΠΈΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±ΡΡ ΠΌΠΎΠ³ΡΡ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ Π² ΡΠ³Π»ΠΎΠ²ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ , ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
> Π1:=<<1|2>,<4|5>>; Π2:=<<1|2.>, <4|5>>;
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Ρ Π½ΠΈΠΌΠΈ ΡΠΈΠΏΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΡΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ (ΠΎΠ±ΡΠ°ΡΠ°ΡΡ) ΠΌΠ°ΡΡΠΈΡΡ:
> Π1^(-1); Π2^(-1);
MatrixInverse: "calling external function"
MatrixInverse: "NAG" hw_f07adf
MatrixInverse: "NAG" hw_f07ajf
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Maple ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ΄Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ Π½ΠΎΠ²ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ Ρ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² NAG ΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΈ, Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π² ΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡ M1 ΠΈ Π2 ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΈΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅:
> M1:=RandomMatrix(2,3); Π2:=RandomMatrix(3,3);
Multiply(M1,M2,'inplace'); M1;
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ inplace Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ Π½Π° ΠΌΠ΅ΡΡΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ Π1 β ΠΈΠ·Π»ΡΠ±Π»Π΅Π½Π½ΡΠΉ ΠΏΡΠΈΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΉ Π±ΡΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΠ½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² NAG. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ°ΡΡΠΈΡΡ M1 ΠΈ Π2 Π·Π°Π΄Π°Π½Ρ ΠΊΠ°ΠΊ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅, ΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π±ΡΠ΄ΡΡ ΠΈΠ½ΡΠΌΠΈ, ΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅.
ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ LU-ΡΠ°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°Π΄ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ Π, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Matrix:
> M:=Matrix([[14,-8,1],[-11,-4,18],[3,12,19]], datatype=float);
LUDecomposition(Π,output=['NAG'],inplace);
ipiv:=%[1];
M;
LUDecomposition: "calling external function"
LUDecomposition: "NAG" hw_f07adf
6.3.3. ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° LinearAlgebra
ΠΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠ΅Π»ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΌΠ°ΡΡΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ LinearAlgebra ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΡΠ΄ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΡΡΠ΅Π΄ΡΡΠ² ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
β’ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΈΠ΄Π° Π₯=Π-1*Π;
β’ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° LU-Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ (method='LU');
β’ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° QR-Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ (method='QΠ ');
β’ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π₯ΠΎΠ»Π΅ΡΡΠΊΠΎΠ³ΠΎ (method='Cholesky');
β’ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ (method='subs').
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ Π ΡΠΆΠ΅ Π½Π΅ ΡΠ°Π· ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΎΡΡ ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ. Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ ΠΎΡΠΌΠ΅ΡΠΈΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. ΠΡΠ±ΠΎΠΏΡΡΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΈ Π±Π΅Π· Π΅Π³ΠΎ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ.
6.3.4. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ LU-Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ
ΠΠ°Π΄Π°Π΄ΠΈΠΌ ΠΌΠ°ΡΡΠΈΡΡ Π Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΠΈ Π²Π΅ΠΊΡΠΎΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΡΠ»Π΅Π½ΠΎΠ² Π:
> restart; with(LinearAlgebra): UseHardwareFloats := false:
> A:=<<4|.24|-.08>,<.09|3|-.15>,<.041-.08|4>>; B:=<8, 9, 20>;
ΠΡΡΠΌΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΄Π²ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΡ ΡΡ ΡΠΎΡΠΌΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ:
> Ρ := LinearSolve(Π, Π, method= 'LU');
Ρ := LinearSolve(<Π|B>, method='LU');
ΠΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ:
> Π.Ρ -Π;
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠ½ΠΎ (Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΠΎΡΠ½ΠΎΡΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ).
ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ LU-Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π½Π°Π³Π»ΡΠ΄Π½ΡΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ:
> P,L,U:=LUDecomposition(A);
> V2:=Transpose(Π ).Π;
> V3:=ForwardSubstitute(L,V2);
> x:=BackwardSubstitute(U,V3);
> A.x-B;
6.3.5. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ QR-Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ
ΠΡΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ΅Ρ ΠΆΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ QR-Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΠ² ΠΌΠ΅ΡΠΎΠ΄ Π² ΡΡΠ½ΠΊΡΠΈΠΈ LinearSolve:
> Ρ := LinearSolve(Π, Π, method='QR');
> A.x-B;
ΠΡΡΠ³ΠΎΠΉ, Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π½ΡΠΉ, Π½ΠΎ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½ΠΈΠΆΠ΅:
> Q,R := QRDecomposition(Π);
> V2:=Transpose(Q).B;
> x:=BackwardSubstitute(R,V2);
> A.x-B;
Π’ΡΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉ, Π»ΡΠ±ΠΎΠΏΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΡΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ LinearSolve. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡ Π½Π΅ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
6.3.6. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π₯ΠΎΠ»Π΅ΡΡΠΊΠΈ
ΠΡΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΅ΡΠ΅ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π₯ΠΎΠ»Π΅ΡΡΠΊΠΈ:
> x:=LinearSolve(Π, Π, method='Cholesky');
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π₯ΠΎΠ»Π΅ΡΡΠΊΠΈ:
> M_temp := Matrix(4, (i,j)->i+i*j-7, shape=triangular[lower]);
M :=M_temp.Transpose(M_temp);
IsMatrixShape(M, symmetric); IsDefinite(M);
> V := <6,1,3,-2>;
> x:=LinearSolve(M, V, method='Cholesky');
> M.x-V;
> M:=Matrix(3, (i,j)->i+2*j-8, shape=triangular[lower]); V:=<7,8,1>;
> x := ForwardSubstitute(M, V);
x := LinearSolve(M, V);
6.3.7. ΠΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ
ΠΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠΌΡΡ ΠΏΡΠΎΡΡΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ°Π·Ρ ΡΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ. ΠΠ°Π±Ρ Π½Π΅ Π·Π°Π³ΡΠΎΠΌΠΎΠΆΠ΄Π°ΡΡ ΠΊΠ½ΠΈΠ³Ρ ΠΌΠ°ΡΡΠΈΠ²Π½ΡΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠΌΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌ ΠΈΠ· Π΄Π²ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ, ΠΌΠ°ΡΡΠΈΡΠ° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ΄Π½Π°, Π° Π²Π΅ΠΊΡΠΎΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΡΠ°Π·Π½ΡΠ΅. ΠΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ:
> Π:=Matrix([[1.,3],[4,5]],datatype=float);
V1:=<1.,2>;
V2:=<7,-11>;
V3:=<-34,-67>;
> LinearSolve(Π,<V1|V2|V3>);
> Π: =Matrix([[1.,3],[4,5]],datatype=float);
ipiv, M := LUDecomposition(M,output=['NAG'], inplace);
LinearSolve([ipiv, M], <V1|V2|V3>);
Ha ΡΡΠΎΠΌ ΠΌΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌ ΠΎΠ±Π·ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ° LinearAlgebra. Π§ΠΈΡΠ°ΡΠ΅Π»Ρ, ΠΏΠΎΠ·Π½Π°ΡΡΠΈΠΉ ΠΈΠ»ΠΈ Π·Π½Π°ΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±ΡΡ, ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ Π»ΡΠ±ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ Π² ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Maple ΠΈ Π² ΡΠ°ΠΉΠ»Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² LE_Linear_Solve.mws. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² linalg ΠΈ LinearAlgebra ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡ ΡΠ°ΠΌΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ.