xxbb 发表于 2011-12-12 11:25:10

fminunc求最小值的函数表达

       fminunc在求最小值时,如果含有多个自变量,自变量似乎只能用数组的形式表示,写成x(1) x(2)......这样的形式,而不能表示成x1 x2 ......的形式。但是很多情况下,函数表达式预先并不知晓,需要求解,其中的自变量不能写成数组形式。这个怎么办呢?
      我尝试过在计算函数表达式时用x1 x2的形式表示自变量,然后将表达式转化成字符串,再将其中的x1替换成x(1),再用sym将字符串转化成表达式,但起不到效果,转换后它不把x(1)看成数组。

qibbxxt 发表于 2011-12-13 10:24:12

不用这么麻烦吧>> f = @(x1,x2,x3)3*x1^2 + 2*x1*x2 + x2^2

f =

    @(x1,x2,x3)3*x1^2+2*x1*x2+x2^2

>> = fminunc(@(x)f(x(1),x(2)),)
Warning: Gradient must be provided for trust-region algorithm;
using line-search algorithm instead.
> In fminunc at 365

Local minimum found.

Optimization completed because the size of the gradient is less than
the default value of the function tolerance.

<stopping criteria details>


x =

1.0e-006 *

    0.2541   -0.2029


fval =

1.3173e-013

xxbb 发表于 2011-12-13 14:26:36

thanks!
原来是这么表达的。我也尝试过,就是调用的时候写成了fminunc(@(x1,x2),).
多谢多谢!
页: [1]
查看完整版本: fminunc求最小值的函数表达