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
Дадени са равнините
(* да се определи взаимното положение на равнините* )
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, не са перпендикулярни. *)