C# 更改特定元素时更新数组的值
假设我已经定义了一个名为C# 更改特定元素时更新数组的值,c#,arrays,algorithm,newtons-method,linear-interpolation,C#,Arrays,Algorithm,Newtons Method,Linear Interpolation,假设我已经定义了一个名为computeValue(double x)的函数: 其输入是双精度值 它返回一个值,该值是通过使用数组元素执行一组特定操作获得的,如下所述 此外,我们还有上面提到的数组 是某个班级的成员吗 只包含4个位置 第一个位置包含某个值,第四个位置包含另一个值,该值将作为我们函数的输入 (这里是棘手的一点),数组的第二和第三个值应该是数组位置1和4之间线性插值的结果。也就是说,如果我们修改数组的位置1或4,那么位置2和3应该根据插值方法自动更改其值 我的目标是调用根查找算法(如N
computeValue(double x)
的函数:
f = CONSTANT - computeValue(array[4])
正如您可能已经观察到的,问题在于每次我的寻根例程修改数组的第4个元素以获得新的解时,数组的位置2和3都应该相应地修改,因为它们是插值的结果(如上文第4点所述),从而更改computeValue
的结果
当根查找算法朝着根方向运行时,使数组值动态变化的可能方法是什么?可能与存储定义插值的lambda表达式的数组有关?经典数组无法完成此操作,但您可以实现自己的类型来解决此问题。这种类型在内部使用一个长度为4的数组,并通过
public int this[int index]
{
// get and set accessors
}
在这里,您可以编写自己的getter和setter,以便在更改其他getter和setter后立即重新计算值 现在似乎是创建自己的对象的最佳时机,而不是让自己与数组索引混淆。您可以使用并手动创建或扩充数组类。但我建议完全创建一个新对象。可以使插值点仅获取返回正确插值的特性。您的对象可能如下所示:
public class Interpolator
{
public double Constant {get; set;} //same as your array[0]
public double Value {get; set;} //same as your array[3]
public double Interpolation1 { get { return CalculateInterpolation1(); } }
public double Interpolation2 { get { return CalculateInterpolation2(); } }
private double CalculateInterpolation1()
{
//define your interpolation here
}
private double CalculateInterpolation2()
{
//define your interpolation here
}
}
简介