我有一个函数f(w,x,y,z)和一个目标值A,我怎样才能发现产生A的w,x,y,z的值?

时间:2013-08-01 18:55:09

标签: algorithm function numbers

所以我有一个函数,它接受四个数字参数并产生一个数值参数。

f(w,x,y,z) --> A

如果我有函数f和目标结果A,是否有用于发现生成给定数字w,x,y,z的参数A的迭代方法?

如果有帮助,我的函数f是一个五倍的bezier,其中确定了大多数参数。我已经只隔离了这四个符合A值所需的值。

Q(t)=R(1−t)^5+5S(1−t)^4*t+10T(1−t)^3*t^2+10U(1−t)^2*t^3+5V(1−t)t^4+Wt^5

R,S,T,U,V,WRW已知的向量,我在每个S,T,U,V中只隔离了一个因参数而异的元素。

2 个答案:

答案 0 :(得分:2)

如果您可以施加3个(或更多)其他方程式,您知道(或怀疑)对于给出目标值A的4变量解决方案必须为真,那么您可以尝试应用牛顿方法求解具有k个未知数的k个方程组。否则,如果没有更深入地理解您试图使A等于的函数的结构,我所知道的唯一一种易于实现的技术类型就是将错误函数定义为{{ 1}}并搜索至少g(w,x,y,z) = |f(w,x,y,z) - A|。通常情况下,找到的“最小值”将是局部最小值,因此可能需要重新启动最小化问题,并使用不同的参数起始值来实际找到一个解决方案,该解决方案可以提供您想要g的局部最小值。这很容易实现,并尝试几行,例如在MATLAB中使用g = 0

答案 1 :(得分:2)

等式f(w,x,y,z)=A的解集(其中所有wxyzA都是标量通常,是R^4的4维空间(w,x,y,z)中的3维流形(表面)。即,解决方案大量非唯一。

现在,如果f足够简单,您可以计算其衍生产品,则可以使用Newton's method查找 a 根:渐变是最快的方向改变功能,所以你去那里。

具体来说,让X_0=(w_0,x_0,y_0,z_0)成为解决方案的初始近似值,让G=f'(X_0)成为X_0处的渐变。 然后是f(X_0+h)=f(X_0)+(G,h)+O(|h|^2)(其中(a,b)是点积)。 设h=a*G,并解决A=f(X_0)+a*|G|^2以获取a=(A-f(X_0))/|G|^2(如果G=0,更改X_0)和X_1=X_0+a*G。如果f(X_1)足够接近A,则表示您已完成,否则请继续计算f'(X_1)& c。

如果您无法计算f',则可以使用许多其他方法。