查找为两个或方程式提供最小输出的值的算法

Algorithm to find a value that gives the minimum output for two or equations

假设我有两个只有一个变量(自由参数)x 的方程,并且 k1 和 k2 是常数。我想解决:

f(x) + k1 = 0
&
g(x) + k2 = 0
...
h(x) + kn = 0

当然没有满足所有这些方程的x值。我基本上想要 x 的值使每个方程的输出最小化。

'solve' 在 matlab 中寻找一个准确的答案和 returns 一个错误,这里有一个例子来演示:

syms x
solution = solve(0.5*(x-k1)/sqrt(2) == 0, 0.5*(x-k2)/sqrt(2) == 0);

您可以尝试使用fminsearch等无约束优化方法,例如:

h=@(x) x^2;
g=@(x) x^3;
k1=2;
k2=4;
inital_guess=3;

f = @(x) sum(abs([h(x)+k1; g(x)+k2]));
[x,fval]  = fminsearch(f,inital_guess)

请注意,我用矩阵形式表示两个 eq,最小化是通过查看它们的绝对值之和。

对于我输入的值 x 最小化这些 eq 由输出 x = -1.5874

给出