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

Flutter中如何获取两个列表数值间的插值

双列表对应值的线性插值计算

问题说明

给定两组对应数值的列表:

  • 自变量列表 list1 = [11, 15]
  • 因变量列表 list2 = [22, 30]
    需要计算自变量为12、13时对应的因变量插值结果。

线性插值原理

由于只有两个对应点,直接使用线性插值公式即可:

y = y₁ + (x - x₁) × (y₂ - y₁) / (x₂ - x₁)
其中:

  • x₁、y₁:两组列表的第一个对应值(11, 22)
  • x₂、y₂:两组列表的第二个对应值(15, 30)
  • x:需要计算插值的目标自变量(12或13)

手动计算结果

  • 当x=12时:
    y = 22 + (12-11)×(30-22)/(15-11) = 22 + 1×8/4 = 24
  • 当x=13时:
    y = 22 + (13-11)×(30-22)/(15-11) = 22 + 2×8/4 = 26

C# 代码实现

using System;
using System.Collections.Generic;

class InterpolationTool
{
    static void Main()
    {
        List<double> list1 = new List<double> { 11, 15 };
        List<double> list2 = new List<double> { 22, 30 };
        
        double result12 = GetLinearInterpolation(list1, list2, 12);
        double result13 = GetLinearInterpolation(list1, list2, 13);
        
        Console.WriteLine("12对应的插值结果:" + result12);
        Console.WriteLine("13对应的插值结果:" + result13);
    }
    
    static double GetLinearInterpolation(List<double> xList, List<double> yList, double targetX)
    {
        if (xList.Count != 2 || yList.Count != 2)
        {
            throw new ArgumentException("输入列表必须各包含两个元素");
        }
        
        double x1 = xList[0], y1 = yList[0];
        double x2 = xList[1], y2 = yList[1];
        
        return y1 + (targetX - x1) * (y2 - y1) / (x2 - x1);
    }
}

代码运行输出

12对应的插值结果:24
13对应的插值结果:26

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:15:34