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
相关产品推荐
相关产品推荐

