繁体   English   中英

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

[英]I have a function f(w,x,y,z) and a target value A, how can I discover values for w,x,y,z that produce A?

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

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

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

如果有帮助,我的函数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每个中仅隔离了一个随参数而变化的元素。

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

通常,方程式f(w,x,y,z)=A (其中wxyzA均为标量)为4维中的3维流形(曲面) (w,x,y,z)三维空间R^4 即,解决方案在很大程度上是不唯一的。

现在,如果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=(Af(X_0))/|G|^2 (如果G=0 ,则更改X_0 )和X_1=X_0+a*G 如果f(X_1)足够接近A ,则操作完成,否则继续计算f'(X_1) &c。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM