求解大误差的非线性优化方程

时间:2013-08-30 13:51:28

标签: matlab math optimization symbolic-math nonlinear-optimization

变量y可以取一个在定义范围内的值:

3<y<5

应该确定y的值,引入像

这样的约束
|x-y|=min

给出x并应扫描更大的范围,如:

x:=-1000:1:1000

如何找到给定x的确切y值?

我考虑的结果如下:

x     y
-1000 3
.     3
.     3
2.9   3
3     3
3.1   3.1
4     4
5     5
6     5
7     5
.     5
.     5
1000  5

这意味着我想允许更大的“错误”但是在3到5之间它应该以非常小的错误解决,以便我可以尽可能好地解决这个区域。

在Matlab中实现类似这样的东西的最佳方法是什么?没有“IF”条件,如果可能的话,象征性地。但是数字替代方案也很有意思。

1 个答案:

答案 0 :(得分:3)

根据您的评论和示例,我认为您只是在寻找:

x = -10:0.1:10 %Suppose this is your x

y = max(min(x,5),3) %Force it between 3 and 5 by rounding up or down respectively