作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
说我有一个疯狂的功能,f
,定义如下:
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]
NMinimize
像这样:
NMinimize[{f[50, 50, k, j], k >= 49, k <= 51, j >= 49, j <= 51}, {j, k}]
{-21.0465, {j -> 51., k -> 49.}}
f[50,50,49,51]
是的,是这样的:
0.489033
最佳答案
它肯定似乎与您的功能有关 f
不限于数字参数,加上由 NMinimize
执行的符号预处理.一旦您将签名更改为
f[x_?NumericQ, y_?NumericQ, a_?NumericQ, b_?NumericQ]:=...
f
(原始的, args 不受限制)是一个相当大的功能:
In[1423]:= f[50,50,49.,51.]
Out[1423]= 0.489033
In[1392]:= f[50,50,k,j]/.{j->51.`,k->49.`}
Out[1392]= -21.0465
NSolve
,这给出了两个有序的解决方案:
In[1398]:= NSolve[util[x,y,c+l]==Log[10+l],c]
Out[1398]= {{c->0.5 (-2. l+1. x+1. y-2. Sqrt[100.+20. l+1. l^2+0.25 x^2-0.5 x y+0.25 y^2])},
{c->0.5 (-2. l+1. x+1. y+2. Sqrt[100.+20. l+1. l^2+0.25 x^2-0.5 x y+0.25 y^2])}}
NSolve
的符号和数字参数是不同的。 ,因为在后一种情况下,我们周围没有任何符号。这可以看作:
In[1399]:=
Block[{cost},
cost[x_,y_,l_]:=c/.Last[NSolve[util[x,y,c+l]==Log[10+l],c]];
f[50,50,k,j]/.{j->51.,k->49.}]
Out[1399]= 0.489033
关于wolfram-mathematica - NMinimize 似乎在破解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7368663/
说我有一个疯狂的功能,f ,定义如下: util[x_, y_, c_] := 0.5*Log[c-x] + 0.5*Log[c-y] cost[x_, y_, l_] := c /. First[N
我在使用 NMinimize 时注意到以下行为在数学。目标函数的第一次调用是使用变量名,而不是像人们期望的那样使用空间中的点。 因此,例如,如果我的目标函数是一个模块,则该模块仅被调用一次,以符号方式
我试图最小化我的函数“FunctionToMinimize”,其定义如下: FunctionToMinimize[a_, b_, c_, d_] := (2.35*Sqrt[ Variance[
下面的代码是一种简单的方法来找到平方有 n 个除数的最小数(最小值应该是它的对数,x_i 是它的素数分解的幂)。如果我查看 n=2000 的情况并使用 10 个变量而不是 20 个变量,这将使用大约
有没有办法使用 Compile[] 编译这些函数?似乎 Mathematica 在这方面总是失败。 我在 NSolve 和 NMinimize 中有纯数值函数,但它仍然不起作用。 一个小例子是: te
我是一名优秀的程序员,十分优秀!