若要获得更好的阅读体验,请前往 链接。
1(课本习题1)
设a=(1, 2, 3), b=(2, 4, 3), 分别计算a./b, a. \b, a/b, a \b,分析结果的意义.
答:
a./b: a中的每一个元素除以b中的对应元素
a.\b: b中的每一个元素除以a中的对应位置的元素
a/b: a左除b,即矩阵方程ax=b的解
a\b: a右除b,即矩阵方程Xa=b的解
输出:
ans = 1×3
0.5000 0.5000 1.0000
ans = 1×3
2 2 1
ans = 0.6552
ans = 3×3
0 0 0
0 0 0
0.6667 1.3333 1.0000
2(课本习题2)
用矩阵除法解下列线性方程组,判断解的意义,并用矩阵乘法验算:
(1) ( 4 1 − 1 3 2 − 6 1 − 5 3 ) ( x 1 x 2 x 3 ) = ( 9 − 2 1 ) \begin{pmatrix}4 & 1 & - 1 \\ 3 & 2 & - 6 \\ 1 & - 5 & 3\end{pmatrix}\begin{pmatrix}x_{1} \\ x_{2} \\ x_{3}\end{pmatrix} = \begin{pmatrix}9 \\ - 2 \\ 1\end{pmatrix} 43112−5−1−63 x1x2x3 = 9−21
定义函数:
function solution_status = check_unique_solution(A, b)
% 计算系数矩阵A的秩
rankA = rank(A);
% 构造增广矩阵[A, b]并计算其秩
rankAB = rank([A, b]);
% 判断方程组的解的情况
if rankA == rankAB
% 如果系数矩阵A和增广矩阵[A, b]的秩相等,方程组有唯一解
if rankA < size(A, 1) % 未知数个数
solution_status = '无穷多解';
else
solution_status = '唯一解';
end
elseif rankA < rankAB
% 如果系数矩阵A的秩小于增广矩阵[A, b]的秩,方程组无解
solution_status = '无解';
end
end
代码:
A=[4 1 -1;3 2 -6;1 -5 3];
b=[9;-2;1];
solution_status = check_unique_solution(A, b)
x=A\b
A*x
输出:
solution_status = ‘唯一解’
x = 3×1
2.3830
1.4894
2.0213
ans = 3×1
9.0000
-2.0000
1.0000
(2) ( 4 − 3 3 3 2 − 6 1 − 5 3 ) ( x 1 x 2 x 3 ) = ( − 1 − 2 1 ) \begin{pmatrix}4 & - 3 & 3 \\ 3 & 2 & - 6 \\ 1 & - 5 & 3\end{pmatrix}\begin{pmatrix}x_{1} \\ x_{2} \\ x_{3}\end{pmatrix} = \begin{pmatrix} - 1 \\ - 2 \\ 1\end{pmatrix} 431−32−53−63 x1x2x3 = −1−21 ;
代码:
A=[4 -3 3;3 2 -6;1 -5 3];
b=[-1;-2;1];
solution_status = check_unique_solution(A, b)
x=A\b
A*x
输出:
solution_status = ‘唯一解’
x = 3×1
-0.4706
-0.2941
0
ans = 3×1
-1
-2
1
(3) ( 4 1 3 2 1 − 5 ) ( x 1 x 2 ) = ( 1 1 1 ) \begin{pmatrix} 4 & 1 \\ 3 & 2 \\ 1 & - 5 \end{pmatrix}\begin{pmatrix} x_{1} \\ x_{2} \end{pmatrix} = \begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix} 43112−5 (x1x2)= 111 ;
代码:
A=[4 1;3 2;1 -5];
b=[1;1;1];
solution_status = check_unique_solution(A, b)
x=A\b
A*x
输出:
solution_status = ‘无解’
x = 2×1
0.3311
-0.1219
ans = 3×1
1.2026
0.7497
0.9404
(4) ( 2 1 1 2 1 1 1 1 1 − 1 2 1 ) ( x 1 x 2 x 3 x 4 ) = ( 1 2 3 ) \begin{pmatrix}\begin{matrix}2 & 1 \\ 1 & 2 \\ 1 & 1\end{matrix} & \begin{matrix}1 & 1 \\ 1 & - 1 \\ 2 & 1 \end{matrix} \end{pmatrix}\left( \begin{array}{r} \begin{matrix} x_{1} \\ x_{2} \\ x_{3} \end{matrix} \\ x_{4} \end{array} \right) = \begin{pmatrix} 1 \\ 2 \\ 3 \end{pmatrix} 2111211121−11 x1x2x3x4 = 123 ;
代码:
A=[2 1 -2 1;1 2 1 -1;1 1 2 1];
b=[1;2;3];
solution_status = check_unique_solution(A, b)
x=A\b
A*x
输出:
solution_status = ‘唯一解’
x = 4×1
1.2727
0
0.8182
0.0909
ans = 3×1
1.0000
2.0000
3.0000
3(课本习题6)
求下列矩阵的行列式、逆、特征值和特征向量;
(1) ( 4 1 − 1 3 2 − 6 1 − 5 3 ) \begin{pmatrix} 4 & 1 & - 1 \\ 3 & 2 & - 6 \\ 1 & - 5 & 3 \end{pmatrix} 43112−5−1−63
(2) ( 1 1 − 1 0 2 − 1 − 1 2 0 ) \begin{pmatrix}1 & 1 & - 1 \\ 0 & 2 & - 1 \\ - 1 & 2 & 0\end{pmatrix} 10−1122−1−10
(3) ( 5 7 6 5 7 10 8 7 6 8 10 9 5 7 9 10 ) \begin{pmatrix}5&7&6&5\\ 7&10&8&7\\ 6&8&10&9\\ 5&7&9&10\end{pmatrix} 5765710876810957910
(1)代码:
function matrixProperties(A)
% 检查输入是否为方阵
[m, n] = size(A);
if m ~= n
error('输入必须为方阵');
end
% 计算行列式
detA = det(A);
fprintf('行列式为: %f\n', detA);
% 如果行列式不为零,计算并打印逆矩阵
if detA ~= 0
invA = inv(A);
fprintf('逆矩阵为:\n');
disp(invA);
else
fprintf('矩阵不可逆\n');
end
% 计算并打印特征值和特征向量
[V, D] = eig(A);
fprintf('特征值为:\n');
disp(diag(D));
fprintf('特征向量为:\n');
disp(V);
end
A=[4 1 -1; 3 2 -6; 1 -5 3];
matrixProperties(A)
输出:
行列式为: -94.000000
逆矩阵为:
0.2553 -0.0213 0.0426
0.1596 -0.1383 -0.2234
0.1809 -0.2234 -0.0532
特征值为:
-3.0527
3.6760
8.3766
特征向量为:
0.0185 -0.9009 -0.3066
-0.7693 -0.1240 -0.7248
-0.6386 -0.4158 0.6170
(2)代码:
A=[1 1 -1; 0 2 -1; -1 2 0];
matrixProperties(A)
输出:
行列式为: 1.000000
逆矩阵为:
2.0000 -2.0000 1.0000
1.0000 -1.0000 1.0000
2.0000 -3.0000 2.0000
特征值为:
1.0000 + 0.0000i
1.0000 + 0.0000i
1.0000 - 0.0000i
特征向量为:
0.5774 + 0.0000i 0.5773 + 0.0000i 0.5773 - 0.0000i
0.5774 + 0.0000i 0.5773 + 0.0000i 0.5773 - 0.0000i
0.5773 + 0.0000i 0.5774 + 0.0000i 0.5774 + 0.0000i
(3)代码:
A=[5 7 6 5; 7 10 8 7;6 8 10 9;5 7 9 10];
matrixProperties(A)
输出:
行列式为: 1.000000
逆矩阵为:
68.0000 -41.0000 -17.0000 10.0000
-41.0000 25.0000 10.0000 -6.0000
-17.0000 10.0000 5.0000 -3.0000
10.0000 -6.0000 -3.0000 2.0000
特征值为:
0.0102
0.8431
3.8581
30.2887
特征向量为:
0.8304 0.0933 0.3963 0.3803
-0.5016 -0.3017 0.6149 0.5286
-0.2086 0.7603 -0.2716 0.5520
0.1237 -0.5676 -0.6254 0.5209
4(课本习题7)
判断第3题各小题的矩阵是否可以相似对角化,如果可以,求出对角矩阵和对应的相似变换矩阵.
定义函数:
function diagonalizeMatrix(A)
% 检查输入是否为方阵
[m, n] = size(A);
if m ~= n
error('输入必须为方阵');
end
% 计算特征值和特征向量
[V, D] = eig(A);
array = eig(A)';
uniqueArray = unique(abs(array));
% 检查特征向量的个数是否等于矩阵的阶数
if rank(V) == min(m,n) && length(array) == length(uniqueArray)
fprintf('矩阵可以对角化\n');
fprintf('对角矩阵为:\n');
disp(D);
fprintf('相似变换矩阵为:\n');
disp(V);
else
fprintf('矩阵不可对角化\n有重根');
disp(array);
end
end
(1)代码:
A=[4 1 -1; 3 2 -6; 1 -5 3];
diagonalizeMatrix(A)
输出:
矩阵可以对角化
对角矩阵为:
-3.0527 0 0
0 3.6760 0 0 0 8.3766相似变换矩阵为:
0.0185 -0.9009 -0.3066
-0.7693 -0.1240 -0.7248
-0.6386 -0.4158 0.6170
(2)代码:
A=[1 1 -1; 0 2 -1; -1 2 0];
diagonalizeMatrix(A)
输出:
矩阵不可对角化
有重根 1.0000 + 0.0000i 1.0000 - 0.0000i 1.0000 + 0.0000i
(3)代码:
A=[5 7 6 5; 7 10 8 7;6 8 10 9;5 7 9 10];
diagonalizeMatrix(A)
输出:
矩阵可以对角化
对角矩阵为:
0.0102 0 0 0
0 0.8431 0 0 0 0 3.8581 0 0 0 0 30.2887相似变换矩阵为:
0.8304 0.0933 0.3963 0.3803
-0.5016 -0.3017 0.6149 0.5286
-0.2086 0.7603 -0.2716 0.5520
0.1237 -0.5676 -0.6254 0.5209
5(课本习题9)
求下列向量组的秩和它的一个最大线性无关组,并将其余向量用该最大无关组线性表示;
α 1 \alpha_{1} α1=(4, -3, 1, 3), α 2 \alpha_{2} α2=(2, -1, 3, 5), α 3 \alpha_{3} α3=(1,-1, -1, -1), α 4 \alpha_{4} α4=(3, -2, 3, 4), α 5 \alpha_{5} α5=(7, -6, -7, 0).
代码:
function vectorProperties(V)
% 求向量组的秩
r = rank(V);
fprintf('向量组的秩为: %d\n', r);
% R: 行化简后的阶梯型; j: 主元
[R, j] = rref(V);
% 打印最大线性无关组
fprintf('最大线性无关组为:\n');
disp(V(:,j));
num_vectors = size(V, 2);
for a = setdiff(1:num_vectors, j)
% 输出当前向量的编号
fprintf("a%d用该最大无关组线性表示为\n", a);
term_count = 1;
% 遍历当前向量对应的系数
for b = R(:, a)'
if b ~= 0
% 格式化输出系数和向量编号
if b > 0 && term_count ~= 1
fprintf("+%d*a%d", round(b), term_count)
else
fprintf("%d*a%d", round(b), term_count)
end
% 更新向量编号
term_count = term_count + 1;
end
end
fprintf("\n");
end
end
a1 = [4;-3; 1; 3];
a2 = [2; -1; 3; 5];
a3 = [1; -1; -1; -1];
a4 = [3; -2; 3; 4];
a5 = [7; -6; -7; 0];
A = [a1,a2,a3,a4,a5];
vectorProperties(A);
输出:
向量组的秩为: 3
最大线性无关组为:
4 2 3
-3 -1 -2
1 3 3
3 5 4
a3用该最大无关组线性表示为
1*a1-1*a2
a5用该最大无关组线性表示为
5*a1+1*a2-5*a3
6(课本习题10)
(二次型标准化) 用正交变换化下列二次型为标准形:
f ( x 1 , x 2 , x 3 ) = x 1 2 − 4 x 1 x 2 + 4 x 1 x 3 − 2 x 2 2 + 8 x 2 x 3 − 2 x 3 2 f\left( x_{1},x_{2},x_{3} \right) = x_{1}^{2} - 4x_{1}x_{2} + 4x_{1}x_{3} - 2x_{2}^{2} + 8x_{2}x_{3} - 2x_{3}^{2} f(x1,x2,x3)=x12−4x1x2+4x1x3−2x22+8x2x3−2x32.
代码:
A = [1 -2 2;-2 -2 4;2 4 -2]
[Q,D]=schur(A)
输出:
A = 3×3
1 -2 2
-2 -2 4
2 4 -2
Q = 3×3
0.3333 0.8944 -0.2981
0.6667 -0.4472 -0.5963
-0.6667 0 -0.7454
D = 3×3
-7.0000 0 0
0 2.0000 0 0 0 2.0000
经过正交变换X=QY,二次型化为标准型: f ( x 1 , x 2 , x 3 ) = − 7 x 1 2 + 2 x 2 2 + 2 x 3 2 f\left( x_{1},x_{2},x_{3} \right) = - 7x_{1}^{2} + 2x_{2}^{2} + 2x_{3}^{2} f(x1,x2,x3)=−7x12+2x22+2x32
这篇博客提供了南京邮电大学数学实验A中关于矩阵代数的部分作业答案,涉及矩阵的除法、线性方程组的解、行列式、逆矩阵、特征值和特征向量的计算。使用MATLAB进行了解答并验证了结果。

被折叠的 条评论
为什么被折叠?



