Info

Записки от лекциите по “CSCB030 Линейна алгебра и геометрия със система за символно смятане”, водени от Невяна Георгиева.

Общи

Изчистване на всичко въведено досега:

Quit[]

 It will kill the kernel process, stopping the kernel from using any memory or remembering anything at all. Evaluating any command will re-start the kernel from scratch. source

Матрица

Въвеждане на матрица:

m = {{1, 2}, {3, 4}, {5, 6}}

Изобразяване на матрица в табличен вид:

m // MatrixForm
MatrixForm[m]

Под-матрица от сечението на редове 1 и 3 със стълбове 1; 3 и 5:

A[[{1, 3}]][[All, {1, 3, 5}]] // MatrixForm

Линейни операции с редове:

2 * B[[{1}]] - B[[{2}]]

Линейни операции със стълбове:

2 * B[[All, {1}]] - B[[All, {3}]]

Задание №1

(* Задача 1: Въведете матрицата A *)
(* Непосредствено въвеждане на матрица: *)
A = {{1, -2, 3, -4, 5}, {4, -1, 2, 8, 3}, {7, 1, 0, 3, -2}, {3, -1,
2, 7, 5}, {-5, 0, 2, 7, -1}}; A // MatrixForm

(* а) Отделете подматрицата B, която лежи на първи, трети и четвърти ред и на първи, втори и пети стълб на матрицата A. *)
(* Създаване на под-матрица от сечението на редове и стълбове *)
(* A[[{1, 3, 4}] създава матрица от A, като взима само редове 1, 3, 4 и всички стълбове *)
(* Непосредствено след това избираме всички редове на междинната матрица и само колоните 1, 2 и 5 *)
B = A[[{1, 3, 4}]][[All, {1, 2, 5}]]; B // MatrixForm

(* b) Изчислете матрицата p(B), ако p(x) = −x3 + 7x2 − 8x + 35 *)
(* всеки един елемент от матрицата ще бъде минат през функцията p(x) и ще се създаде нова матрица с елементи резултат от функцията *)
P = -B^3 + 7*B^2 + 8*B + 35; P // MatrixForm

(* изчистваме променливите, които създадохме по-горе A, B и P *)
Clear[{A, B, P}]

(* Задача 2: Намерете присъединената матрица P на матрицата A *)
A = {{20, 12, 10, 11}, {-1, 12, 4 , 15}, {-12, 1, 7, -11}, {1, 5, 3,
2}}; A // MatrixForm

(* Матрицата M се състои от минорите на матрицата A: *)
M = Map[Reverse, Minors[A], {0, 1}]; M // MatrixForm

(* Създаваме помощна матрица S, която да ни помогне да намерим кофакторите - алтерниращ знак *)
f[s_, j_] = (-1)^(s+j); S = Array[f, {4, 4}]; S // MatrixForm

(* Създаваме матрица на кофакторите на A, като умножаваме помощната матрица със знаци S и M (матрица от минори на A) *)
Co = S * M; Co // MatrixForm

(* Създаваме присъединената матрица на A P чрез транспониране на матрицата на кофакторите Co *)
P = Transpose[Co]; P // MatrixForm
(* а) Изчислете произведението на матриците A и P ; *)
AdotP = Dot[A, P]; AdotP // MatrixForm

(* б) Изчислете детерминантата на A *)
Det[A]

(* изчистваме променливите, които създадохме по-горе A, M, S, f, Co, P, AdotP *)
Clear[{A, M, S, f, Co, P, AdotP}]

(* Задача 3: *)
(* В зависимост от параметъра x, определете ранга (броя на линейно независимите вектори/броя ненулеви редове) на системата от вектори: *)
e1 = {x, -2, 2, 3}; e1 // MatrixForm
e2 = {2, 1, x, -2}; e2 // MatrixForm
e3 = {-4, x, 1, 4}; e3  // MatrixForm
e4 = {-9, -7, 1, 9}; e4 // MatrixForm

A = {e1, e2, e3, e4}; A // MatrixForm
p[x_] = Det[A]
Solve[p[x] == 0, x]
B = A /. {x -> -3}; B // MatrixForm
F = A /. {x -> -1/3}; F // MatrixForm
MatrixRank[B]
MatrixRank[F]

(* Във всеки един от случаите определете един базис. *)

(* ??? Базис при x = -3 *)
Solve[x*B[[1]] + y*B[[2]] + z*B[[3]] == B[[4]], {x, y, z}]

(* ??? Базис при x = -1/3 *)
Solve[x*F[[1]] + y*F[[2]] + z*F[[3]] == F[[4]], {x, y, z}]


Clear[{e1, e2, e3, e4, A, p, B, F}]

(* Задача 4: *)
(* Дадени са матрицата А вектор стълбовете b и o *)
A = {{2, 1, -2, 1, 0}, {3, -2, 1, 2, 0}, {3, 1, -3, -1, 1}, {-3, -5,
7, -1, 0}, {4, -2, 0, 0, 1}}; A // MatrixForm
b = ({{3}, {4}, {5}, {-5}, {6}}); b // MatrixForm
o = ConstantArray[0, 5]; o // MatrixForm

(* а) Намерете фундаментална система от решения на хомогенната сис- тема Ax = o *)
Na = NullSpace[A]; Na // MatrixForm

(* б) Решете системата Ax = b *)
det[A]
(* т.к. детерминантата на A е 0, то тя няма обратна и не може да ползваме метода на обратната матрица, метода на Крамер *)
(* метод на Гаус-Джордан *)
Ab = Join[A, b, 2]; x = RowReduce[Ab][[All, {-1}]]; x // MatrixForm
(* проверка: *)
A.x == b

Clear[{A, b, o, Na, Ab, x}]

(* Задачи 5: *)
(* Означаваме с L линейната обвивка на векторите: *)
e1 = {2, 3, 3, -3, 4}; e1 // MatrixForm
e2 = {1, -2, 1, -5, -2}; e2 // MatrixForm
e3 = {-2, 1, -3, 7, 0}; e3 // MatrixForm
e4 = {1, 2, -1, -1, 0}; e4 // MatrixForm
e5 = {0, 0, 1, 0, 1}; e5 // MatrixForm

b = {0, 1, 0, 0, 1}; b // MatrixForm

A = Transpose[{e1, e2, e3, e4, e5}]; A // MatrixForm

(* а) ортогонална проекция на b върху L *)
b0 = A.PseudoInverse[A].b

(* а) перпендикуляра h на вектора b върху L *)
h = b - b0

(* проверка *)
{e1 . h, e2 . h, e3 . h, e4 . h, e5 . h}

(* б) Определете разстоянието r от дадения вектор b до L. *)
r = Sqrt[h . h]

Допълнителни записки:

Задание №2

Задача 1

Дадени са векторите и . При какви стойности на и векторът е колинеарен с вектора .

Стъпки: Намираме на колко е равно , след това проверяваме дали резултатния вектор е колинеарен с . Вектори са колинеарни, ако компонентите им са пропорционални, т.е. съществува такова число , че:

Решение:

(* Задача 1:Дадени са векторите a (3, -1, 1) и b = (1, 2, 0). При какви стойности на x и y векторът c = (x,3,y) е колинеарен с вектора a * b. *)

a = {3, -1, 1}; b = {1, 2, 0}; c = {x, 3, y}; w = Cross[a, b]
Solve[{x == -2*k, 3 == k, y == 7*k}, {x, y, k}]

Задача 2

Намерете синуса на ъгъла между векторите и .

Стъпки: За да намерим синуса на ъгъла между векторите може да ползваме векторно произведение:

Решение:

(* Намерете синуса на ъгъла между векторите а = (-2, 2, 1) и b = (6, \
3, 2). *)

a = {-2, 2, 1}; b = {6, 3, 2}
x = Norm[Cross[a, b]] / Norm[a] * Norm[b]

Задача 3

Дадени са точките , и . Намерете:

(* Дадени са точките A(-5,-3),B(4,-2) и C(0,2).Намерете: *)

A = {-5, -3}; B = {4, -2}; C1 = {0, 2};


3.1. Уравненията на правите, съдържащи страните на триъгълника Формулата за уравнението на права през точки и е:

Решение:

(* Уравненията на правите,съдържащи страните на триъгълника *)
U[a_, b_, c_, d_, x_, y_] = Collect[Det[ {
{x - a, y - b},
{c - a, d - b}
} ], {x, y}];

AB = U[A[[1]], A[[2]], B[[1]], B[[2]], x, y];
AC = U[A[[1]], A[[2]], C1[[1]], C1[[2]], x, y];
BC = U[B[[1]], B[[2]], C1[[1]], C1[[2]], x, y];

3.2. Уравненията на правите, които съдържат височините на триъгълника

(* Височина от т. C до AB *)

SolveAB = Solve[AB == 0, y]
SlopeAB = Coefficient[Expand[Values[SolveAB][[1]][[1]]], x]
SlopeABPerpendicular = SlopeAB^-1*(-1)
c = C1[[2]] - SlopeABPerpendicular*C1[[1]]
AH3 = y == SlopeABPerpendicular*x + c

(* Височина от т. B до AC *)

SolveAC = Solve[AC == 0, y];
SlopeAC = Coefficient[Expand[Values[SolveAC][[1]][[1]]], x];
SlopeACPerpendicular = SlopeAC^-1*(-1);
b = B[[2]] - SlopeACPerpendicular*B[[1]];
AH2 = y == SlopeACPerpendicular*x + b;


(* Височина от т. A до BC *)
SolveBC = Solve[BC == 0, y];
SlopeBC = Coefficient[Expand[Values[SolveBC[[1]][[1]]]], x];
SlopeBCPerpendicular = SlopeBC^-1*(-1);
a = A[[2]] - (SlopeBCPerpendicular*A[[1]]);
AH1 = y == SlopeACPerpendicular*x + a;

3.3. Лицето на триъгълника;

(* лицето на триъгълника *)

Sabc = 1/2*
Abs[Det[{{A[[1]], A[[2]], 1}, {B[[1]], B[[2]], 1}, {C1[[1]],
C1[[2]], 1}}]]

3.4 Скицирайте ∆ABC и височините на триъгълника върху една подходящо избрана координатна система.

(* скицирайте ABC и височините *)

Graphics[{Triangle[{A, B, C1}]}]

Задача 4

Дадени са равнините and . Да се определи взаимното им положение.

(* да се определи взаимното положение на равнините* )
a = x + 5 y + z; g = 8 x - 2 y + z - 1

Na = Coefficient[a, {x, y, z}];

Ng = Coefficient[g, {x, y, z}]

Cross[Na, Ng]
(* резултат {7, 7, -42} != 0 => не са колинеарни *)

Задача 5

В пространството са дадени правите: и

Намерете взаимното положение на двете прави и . Ако правите се пресичат, намерете координатите на пресечната им точка.

(* Намерете взаимното положение на двете прави $g$ и $m$.  *)

g = {-2 + 4 t, -2 + t, 1 - t}; m = {1 + 2 p, 1 + 2 p, 7 + 4 p};

(* Дали лежат на една равнина? *)

Det[{{-2 - 1, -2 - 1, 1 - 7}, {4, 1, -1}, {2, 2, 4}}]
(* Резултат 0 => лежат на една равнина *)

Dot[{4, 1, -1}, {2, 2, 4}]
(* Резултат е 6, не са перпендикулярни. *)