代码之家  ›  专栏  ›  技术社区  ›  Caniko

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

  •  0
  • Caniko  · 技术社区  · 12 年前

    变量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 回复  |  直到 12 年前
        1
  •  3
  •   Dennis Jaheruddin    12 年前

    根据你的评论和例子,我认为你只是在寻找这个:

    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