【发布时间】:2020-05-30 07:37:25
【问题描述】:
我想用代数表达式在 R3 的曲面上找到点 B
f(x,y) = x^3 + y^2,
给定点 A,使点 B 在欧几里得距离上最近,并且位于曲面上。 [请注意,图上的曲面不是x^3 + y^2,仅供说明之用。
我不是 Matlab 用户,但我看到函数 fmincon 或 fminsearch 可能是 J. BAEK、A. DEOPURKAR 和 K 在此在线可访问的 paper 中建议的方法。 REFIELD(第 24 页,附录)。或者,我想通过围绕点 A 的半径来参数化一个球体,并寻找它与曲面的第一个切点,但这会产生更多问题。
对于 fmincon 来说,首先要做的事情似乎是定义一个函数来最小化,这在数学上就是欧几里得距离:所以如果点 A 在矩阵中,并且对应于 A(:,1) 和 B定义为 (b1,b2,b3),最小化公式为
(A(1,1) - b1)^2 + (A(2,1) - b2)^2 + (A(3,1) - b3)^2
与第一条评论一样,由于 B 必须在表面上,因此约束条件为
b3= b1^3 + b2^2。
我不知道如何在 Matlab 中将其形式化,以及是否需要某个初始点来启动该过程,或者 A 是一个有效的起点。
【问题讨论】:
-
您还需要为
bx定义一些 cosntrain,因为它必须在表面。对于任意B,您的等式将返回A==B。所以你在最小化公式中遗漏了一些东西。
标签: matlab optimization minimization