让我们假设我已经定义了一个名为computeValue (double x)
的函数:
另外,我们有上面提到的数组
我的目标是调用根寻找算法(例如Newton-Raphson,Secant Method等),旨在最小化以下表达式:
f = CONSTANT - computeValue(array[4])
正如您可能已经观察到的那样,问题是每次我的根查找例程修改我的数组的第4个元素以获得新的解决方案时,我的数组的位置2和3应该相应地修改,因为它们是插值的结果(如上面第4点所述),从而改变computeValue
的结果。
当根查找算法朝向根目录时,有什么方法可以使数组的值动态变化?也许与存储定义插值的lambda表达式的数组有关?
答案 0 :(得分:2)
使用经典数组无法完成,但您可以实现自己的类型来解决问题。此类型在内部使用长度为4的数组,并通过
提供访问<test>
<tag0>
<tag1 is="mine">
<uselesstag>
<tag3 is="mine">test</tag3>
</uselesstag>
</tag1>
<tag2 is="mine">test2</tag2>
</tag0>
</test>
在这里,您可以编写自己的getter和setter,以便在其他人更改后立即重新计算值。
答案 1 :(得分:1)
这似乎是创建自己的对象的绝佳时机,而不是让自己与数组索引混淆。您可以使用JF Meier's approach并手动创建或扩充数组类。但我建议完全创建一个新对象。您可以使插值点仅获得返回正确插值的属性。您的对象可能如下所示:
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
}
}