【问题标题】:Solving nonlinear optimization equations with large errors求解具有大误差的非线性优化方程
【发布时间】:2013-08-30 13:51:27
【问题描述】:

变量 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”条件,如果可能,象征性地。但数字替代方案也会很有趣。

【问题讨论】:

  • 您的意思是:|x-y|&lt;=min 对应 x 和 y 的每个值?另外,不要在matlab中使用min作为变量名,因为你会重载相应的函数。此外,我没有看到您试图解决问题的任何部分。你能详细说明一下吗?
  • 它不是一个变量,而是一个数学语法。应尽量减少。这里也没有matlab代码。我刚刚描述了我的问题。我想用给定的 x 找到(接近的)y 值

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


【解决方案1】:

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

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

【讨论】:

  • 我看不出这与标题有何匹配,但我希望它有所帮助。
  • 谢谢。你说的对。您为我的问题提供了一个准确的解决方案,即使我不是故意的,也不想将我的问题限制在这个范围内。这是一个更大的,在这里描述:stackoverflow.com/questions/18532932/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 2019-10-02
  • 1970-01-01
  • 2021-12-13
相关资源
最近更新 更多