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

如何绘制矩阵阶数与矩阵乘法运算耗时的关系曲线图?

矩阵乘法耗时与阶数关系图表实现方案

原代码存在的问题

  • 依赖手动输入矩阵阶数,无法自动批量测试不同规模的矩阵
  • 计时包含了输入、打印等非乘法操作的时间,结果不准确
  • 硬编码的x、y列表无实际测试数据,图表无意义
  • 手动实现的三重循环矩阵乘法效率极低,大阶数计算会异常缓慢甚至卡死
  • 坐标轴标签与数据不匹配,没有实际数据支撑

修改后的代码实现

import numpy as np
from time import time
import matplotlib.pyplot as plt

np.random.seed(27)

# 定义测试的矩阵阶数范围:从10到100,步长10(对应需求的Y轴范围)
matrix_orders = range(10, 101, 10)
time_taken_list = []

def multiply_matrix(A, B):
    # 使用numpy内置矩阵乘法,效率远高于手动三重循环
    return A @ B

for order in matrix_orders:
    # 生成方阵:保证矩阵可乘,结果矩阵阶数与输入阶数一致
    A = np.random.randint(1, 10, size=(order, order))
    B = np.random.randint(1, 10, size=(order, order))
    
    # 仅计时矩阵乘法核心操作
    start = time()
    multiply_matrix(A, B)
    end = time()
    
    # 记录耗时(保留两位小数)
    elapsed_time = round(end - start, 2)
    time_taken_list.append(elapsed_time)
    print(f"阶数{order}的矩阵乘法耗时:{elapsed_time}秒")

# 按需求设置坐标轴:X轴为耗时,Y轴为矩阵阶数
plt.scatter(time_taken_list, matrix_orders, color='blue', label='测试数据')
plt.plot(time_taken_list, matrix_orders, color='red', linestyle='--')

# 设置图表标签与标题
plt.xlabel('矩阵乘法耗时(秒)')
plt.ylabel('结果矩阵的阶数')
plt.title('矩阵乘法耗时与阶数关系')

# 调整坐标轴范围(可根据实际测试数据修改)
plt.ylim(0, 110)  # 覆盖0-100的阶数范围
plt.grid(True)
plt.legend()
plt.show()

关键改动说明

  • 批量测试:用range(10, 101, 10)自动生成10到100步长10的阶数,无需手动输入
  • 准确计时:仅在矩阵乘法前后记录时间,排除输入、打印等操作的干扰
  • 高效乘法:替换手动三重循环为numpy的@运算符,利用底层优化大幅提升计算速度,可快速处理大阶数矩阵
  • 数据收集:将每个阶数对应的耗时存入列表,作为图表的真实数据源
  • 图表匹配需求:用散点+折线展示(耗时X轴,阶数Y轴),添加网格和图例提升可读性

补充说明

如果需要测试更大阶数(比如100-1000,步长100),只需修改matrix_orders = range(100, 1001, 100)即可。注意:阶数超过200后,耗时会随阶数增长显著提升,可根据硬件性能调整测试范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:05:19