南京邮电大学数学实验A 作业2 矩阵代数 答案 | 《MATLAB数学实验》第三版 第三章 课后习题答案

这篇博客提供了南京邮电大学数学实验A中关于矩阵代数的部分作业答案,涉及矩阵的除法、线性方程组的解、行列式、逆矩阵、特征值和特征向量的计算。使用MATLAB进行了解答并验证了结果。

若要获得更好的阅读体验,请前往 链接

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} 431125163 x1x2x3 = 921

定义函数:

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} 431325363 x1x2x3 = 121 ;

代码:

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} 431125 (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} 211121112111 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} 431125163

(2) ( 1 1 − 1 0 2 − 1 − 1 2 0 ) \begin{pmatrix}1 & 1 & - 1 \\ 0 & 2 & - 1 \\ - 1 & 2 & 0\end{pmatrix} 101122110

(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)=x124x1x2+4x1x32x22+8x2x32x32.

代码:

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值