Nói rằng tôi có một hàm điên, f
, được xác định như sau:NMinimize có vẻ là trên vết nứt
util[x_, y_, c_] := 0.5*Log[c-x] + 0.5*Log[c-y]
cost[x_, y_, l_] := c /. First[NSolve[util[x, y, c+l] == Log[10+l], c]]
prof[x_, y_] := 0.01*Norm[{x,y}, 2]
liquid[x_, y_] := 0.01*Norm[{x,y}, 2]
f[x_, y_, a_, b_] := cost[a, b, liquid[x,y] + liquid[a-x, b-y]] - Max[a,b]
- cost[0,0,0] + prof[x,y] + liquid[x,y] + prof[a-x, b-y] + liquid[a-x, b-y]
Bây giờ tôi gọi NMinimize
như thế này:
NMinimize[{f[50, 50, k, j], k >= 49, k <= 51, j >= 49, j <= 51}, {j, k}]
nào nói với tôi điều này:
{-21.0465, {j -> 51., k -> 49.}}
Nhưng sau đó nếu tôi thực sự kiểm tra xem f[50,50,49,51]
là gì, nó là:
0.489033
Điều này khá khác so với -21.0465 mà NMinimize cho biết. Đây có phải là mệnh đề cho khóa học với NMinimize không? Lỗi dấu chấm động phức tạp hay không? Bất kỳ ý tưởng nào để đánh bại NMinimize (hoặc một số chức năng như vậy) thành bài nộp?
+1 cho tiêu đề – Verbeia