源本科技 | 码上会

3×3 矩阵主对角线元素之和

2026/02/07
12
0

题目

求一个 3×3 矩阵主对角线元素之和。

说明

本题要求计算一个3×33 \times 3 矩阵主对角线(从左上到右下)上所有元素的和。

  • 主对角线:在方阵中,行索引等于列索引的位置,即满足i=ji = j 的元素aija_{ij}

  • 对于 3×3 矩阵,主对角线元素为:

    • a00a_{00}(第 1 行第 1 列)

    • a11a_{11}(第 2 行第 2 列)

    • a22a_{22}(第 3 行第 3 列)

程序使用双重 for 循环遍历整个矩阵,在内层判断 if (i == j),若成立则将该元素累加到 sum 中。

运行示例

给定矩阵:

[123456778]\begin{bmatrix} 1 && 2 && 3 \\ 4 && 5 && 6 \\ 7 && 7 && 8 \\ \end{bmatrix}

主对角线元素为:1(位置 [0][0])、5([1][1])、8([2][2])
和为:1+5+8=141 + 5 + 8 = 14

程序输出:

14

👈点击左箭头查看答案(一定要在自己思考并实现后再看参考答案哦!)

规律分析

  • 对于任意n×nn \times n 方阵,主对角线元素个数恒为nn

  • 主对角线索引规律:(0,0),(1,1),,(n1,n1)(0,0), (1,1), \dots, (n-1,n-1)

  • 副对角线索引规律:(0,n1),(1,n2),,(n1,0)(0,n-1), (1,n-2), \dots, (n-1,0),满足i+j=n1i + j = n - 1

  • 若同时求主副对角线之和且nn 为奇数,中心元素an12,n12a_{\frac{n-1}{2},\frac{n-1}{2}} 会被重复计算,需减去一次。

例如,同时计算主副对角线之和的通用逻辑:

int sum1 = 0, sum2 = 0;
for (int i = 0; i < n; i++) {
    sum1 += a[i][i];           // 主对角线
    sum2 += a[i][n - 1 - i];   // 副对角线
}
// 若 n 为奇数,中心元素被加了两次
if (n % 2 == 1) {
    int center = a[n/2][n/2];
    total = sum1 + sum2 - center;
} else {
    total = sum1 + sum2;
}

程序实现

public class Demo {
    public static void main(String[] args) {
        double sum = 0;
        int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 7, 8 } };
        
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (i == j) {
                    sum += array[i][j];
                }
            }
        }
        
        System.out.println(sum); // 输出 14.0
    }
}

延伸知识
在线性代数中,矩阵的迹(Trace) 定义为主对角线元素之和,记作tr(A)\text{tr}(A)。迹具有重要性质,如tr(AB)=tr(BA)\text{tr}(AB) = \text{tr}(BA),广泛应用于物理、机器学习等领域。本题实质是计算 3 阶矩阵的迹。