You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写Python程序生成矩阵Aⁿ并解决NumPy维度匹配报错问题

问题修复与正确实现

错误原因

第三次调用np.block时,子块维度不匹配:此时A已是8×8矩阵,第一行的A(8×8)与np.zeros((8,4))拼接后为8×12;第二行的np.zeros((4,8))(4行)与flipud(A)(8行)拼接后为12×8,行数、列数无法对应,触发维度错误。且这一步拼接完全多余,不符合生成2n×2n矩阵的需求。

正确实现代码

import numpy as np

def generate_A_n(n):
    # 生成n×n核心三对角矩阵:主对角线1,上对角线2,下对角线3
    core = np.diag(np.ones(n))
    core += np.diag(np.ones(n-1) * 2, k=1)
    core += np.diag(np.ones(n-1) * 3, k=-1)
    
    # 构造2n×2n矩阵,右下角为核心矩阵左右翻转结果,其余未显示元素为0
    A_n = np.block([
        [core, np.zeros((n, n))],
        [np.zeros((n, n)), np.fliplr(core)]
    ])
    return A_n

# 测试n=4的情况
n = 4
print(generate_A_n(n))

说明

  • 用np.diag批量生成三对角元素,避免手动写死矩阵,支持任意自然数n
  • 严格按照需求构造2n×2n矩阵:左上角为核心三对角矩阵,右上角、左下角为零矩阵,右下角为核心矩阵左右翻转后的结果
  • 完全使用提示的np.block和np.fliplr,无循环操作

内容的提问来源于stack exchange,提问作者lenamagdalena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 00:13:18