假设我有两个只有一个变量(自由参数)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);
答案 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