用于查找给出两个或等式的最小输出的值的算法

时间:2015-07-07 22:00:49

标签: matlab optimization minimization

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

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

当然,没有x的值满足所有这些方程式。我基本上希望x的值最小化这些方程式的输出。

matlab中的

'solve'寻找一个确切的答案并返回一个错误,这里有一个例子来证明:

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

1 个答案:

答案 0 :(得分: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的值,{min}最小化这些eq由输出x = -1.5874

给出