2

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

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

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

如果有帮助,我的函数f是一个五次贝塞尔曲线,其中大部分参数都已确定。我只隔离了适合该值所需的这四个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是已知的向量RW我只隔离了每个元素中的一个元素,这些元素S,T,U,V随着参数的变化而变化。

4

2 回答 2

2

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

于 2013-08-01T19:46:09.940 回答
2

方程的解集(其中f(w,x,y,z)=A所有wxy和都是标量)通常是 的 4 维空间中的 3 维流形(曲面) 。即,解决方案在很大程度上是非唯一的。zAR^4(w,x,y,z)

现在,如果f对你计算它的导数足够简单,你可以使用牛顿法求根:梯度函数变化最快的方向,所以你去那里。

具体来说,让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',则可以使用许多其他方法。

于 2013-08-01T19:55:00.457 回答