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

如何从双输入数值函数F中提取X/Y比值数据以对比解析解

解决Mathematica中数值积分结果与解析解的2D对比问题

嘿,别担心,我来帮你搞定这个Mathematica里的数据筛选和对比需求!你的核心目标是从2×2网格的F(X,Y)数值结果中,提取出对应相同Z=X/Y比值的数据,再和单变量解析解A(Z)做2D可视化对比,咱们一步步来:

步骤1:整理你的数值积分数据

首先得把网格状的F数据转换成结构化的点列表,方便后续处理。假设你是用Table生成的2×2网格数据,比如:

# 先定义你的X/Y输入网格
Xvals = {x1, x2};  # 替换成你实际的X数值
Yvals = {y1, y2};  # 替换成你实际的Y数值

# 生成带(X,Y)标签的数值积分结果
Fdata = Table[{X, Y, NIntegrate[你的积分函数, {积分变量, 下限, 上限}]}, 
              {X, Xvals}, {Y, Yvals}];

# 把二维网格展平成一维的点列表(每个元素是(X,Y,F))
FlattenedF = Flatten[Fdata, 1];

如果你的F已经是矩阵形式(比如F[[i,j]]对应第i个X、第j个Y的结果),也可以用下面的代码转换成点列表:

Fmatrix = Table[你的数值积分代码, {i, 2}, {j, 2}];
FlattenedF = Flatten[Table[{Xvals[[i]], Yvals[[j]], Fmatrix[[i,j]]}, 
                          {i, 2}, {j, 2}], 1];

步骤2:给每个数据点绑定Z=X/Y值

接下来,为每个(X,Y,F)点计算对应的Z值,生成包含(Z,F)的新列表:

# 生成(Z, F)对,如果你需要保留X/Y信息可以写成{X,Y,Z,F}
FwithZ = Map[{#[[1]]/#[[2]], #[[3]]} &, FlattenedF];

注意:如果你的数值存在精度误差,导致理论上相同的Z值出现微小差异,可以用Round[#, 10^-6]来统一精度,避免后续分组出错

步骤3:按Z值分组筛选数据

现在把相同Z值的F结果归到一起,方便和解析解对比:

# 提取所有唯一的Z值
UniqueZs = DeleteDuplicates[Map[First, FwithZ]];

# 生成Z到对应F值列表的映射
ZtoF = AssociationThread[UniqueZs -> Map[z -> Cases[FwithZ, {z, f_} -> f], UniqueZs]];

如果同一个Z对应多个F值(比如2×2网格里两个点的X/Y比值相同),你可以取平均值来代表这个Z对应的数值结果,或者直接保留所有离散点。

步骤4:绘制2D对比图

最后把解析解A(Z)的曲线和筛选后的数值数据画在同一张图里:

# 先画解析解的曲线
plotA = Plot[A[Z], {Z, Min[UniqueZs], Max[UniqueZs]}, 
             PlotStyle -> Blue, 
             PlotLabel -> "解析解A(Z) vs 数值积分F(X,Y)", 
             AxesLabel -> {"Z=X/Y", "函数值"},
             LegendLabel -> "解析解A(Z)"];

# 再画数值数据点(这里用平均值代表每个Z的结果)
plotF = ListPlot[Map[{#1, Mean[#2]} &, Normal[ZtoF]], 
                 PlotStyle -> Red, 
                 PlotMarkers -> Automatic,
                 LegendLabel -> "数值积分F(X,Y)"];

# 合并两张图
Show[plotA, plotF, PlotLegends -> Automatic]

如果想保留所有离散点,直接用ListPlot[FwithZ, PlotStyle -> Red, ...]即可,这样能看到每个(X,Y)点对应的数值结果和解析解的差异。

这样就能清晰对比相同Z=X/Y比值下,数值积分结果和解析解的匹配情况啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:27:29