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

C#中PointCollection正弦数据数值积分结果异常问题排查

代码问题分析

代码存在两个核心错误:

  • 缺少积分结果累计逻辑:当前计算的integrated_ypos仅为第i个采样区间的梯形面积,不是从序列起点到第i个点的累计积分值。梯形法数值积分的本质是将所有前置区间的面积求和,才能得到对应点的不定积分结果。未做累加时,输出值近似与sin(x)*Δx成正比,形状和原始sin数据接近,自然和理论结果-cos(x)不符。
  • 人为添加了不必要的坐标变换:代码中integrated_ypos/5+300是强制写入的缩放和偏移逻辑,这就是必须手动缩放才能正常显示的原因,常规积分计算不需要这一步。

修复后的代码

private PointCollection Numerical_Integration(PointCollection input_data)
{
    PointCollection integrated_data = new();
    // 累计积分初始值,对应不定积分的常数项,可根据需要的基线调整
    double cumulative_integral = 0;
    // 添加积分起点,和原始数据点数量对齐
    integrated_data.Add(new Point(input_data[0].X, cumulative_integral));
    for (int i = 1; i < input_data.Count; i++)
    {
        // 计算当前区间的梯形面积
        double interval_area = (input_data[i].Y + input_data[i - 1].Y) / 2 * (input_data[i].X - input_data[i - 1].X);
        // 累加得到从起点到当前点的总积分值
        cumulative_integral += interval_area;
        integrated_data.Add(new Point(input_data[i].X, cumulative_integral));
    }
    return integrated_data;
}

补充说明

如果最终渲染时积分结果和原始正弦数据的坐标范围差异过大,可根据实际画布的坐标系要求做统一的缩放、偏移处理,不要在积分计算逻辑中硬编码固定的缩放系数。


内容的提问来源于stack exchange,提问作者Felix Götz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:54:09