lingo和matlab解出来不一样

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:51:09
求一个函数在点[-1,1]附近的局部最小点。
用Lingo和Matlab分别求解,最小点一样,但目标函数值却不同,这是为什么?

Lingo:

min=@exp(x2)*(4*x1^2+2*x2^2+4*x1*x2+2*x2+1);
@bnd(-3,x1,3);
@bnd(-3,x2,3);

Local optimal solution found.
Objective value: 0.3594168E-14
Extended solver steps: 5
Total solver iterations: 102

Variable Value Reduced Cost
X2 -1.000000 -0.1023407E-06
X1 0.5000000 -0.1187265E-06

Row Slack or Surplus Dual Price
1 0.000000 -1.000000

Matlab:

>>f=@(x)exp(x(2))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
x0=[-1,1];
x=fminunc(f,x0)
y=f(x)

x =

0.5 -1

y =

1.4859e-013
其实就是想问lingo和matlab精度的问题,我感觉只要精度选取的合适,两个结果应该可以在一个较小的范围内,符合较好

Variable Value Reduced Cost
X2 -1.000000 -0.1023407E-06
X1 0.5000000 -0.1187265E-06


x =

0.5 -1
不是一样的吗?
只是顺序倒了。

在这种精度范围内只要数量级相同已经可以算是目标解一样了!想要数值都相同,你还真不考虑计算机实际和内部算法啊!!呵呵

这算是正确的!

晕 把X代进去自己算-_-!!!!!!!!!!!!!!!!!

具体问题具体分析!

举例:money的话 分以下就没什么意义了 1亿的利润和1亿零1块的差别谁会在乎