所以我有一个函数,它接受四个数字参数并产生一个数值参数。
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,W
是R
和W
已知的向量,我在每个S,T,U,V
中只隔离了一个因参数而异的元素。
答案 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
的解集(其中所有w
,x
,y
,z
和A
都是标量通常,是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'
,则可以使用许多其他方法。