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

能否使用np.gradient计算场的时间导数?

可以用np.gradient计算该场的时间导数

要实现这一点,需要先将三个时间点的二维场数据合并为三维数组,再针对时间轴调用np.gradient计算导数,具体操作如下:

步骤说明

  1. 合并三维数组:把三个4×4的二维数组沿时间轴堆叠,形成形状为(3,4,4)的三维数组,其中第一维对应时间维度。
  2. 计算时间导数:调用np.gradient时指定对时间轴(第0轴)求导,若时间间隔非默认值,需传入对应的时间步长参数。

示例代码

import numpy as np

# 原始场数据
varT1 = np.array([[1,6,2,5],[9,4,2,1], [8,2,9,5], [9,3,2,1]])
varT2 = np.array([[9,4,1,6],[9,8,6,9], [8,4,1,1], [7,2,4,4]])
varT3 = np.array([[1,3,4,9],[8,7,7,4], [7,3,1,3], [3,7,0,6]])

# 堆叠为三维数组,时间轴为第0轴
var_3d = np.stack([varT1, varT2, varT3], axis=0)

# 假设时间间隔为1,计算时间导数
time_deriv = np.gradient(var_3d, axis=0)

# 输出导数数组形状:(3,4,4),对应每个时间点的场导数
print(time_deriv.shape)

补充说明

  • np.gradient对中间时间点(T2)采用中心差分计算,公式为(varT3 - varT1)/(2*dt);对端点(T1、T3)采用前向/后向差分,比如T1的导数为(varT2 - varT1)/dt,T3的导数为(varT3 - varT2)/dt。
  • 若实际时间间隔非1,可传入时间数组指定步长,示例如下:
    t = np.array([0, 3, 7])  # 假设三个时间点的具体时刻
    time_deriv = np.gradient(var_3d, t, axis=0)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:14:55