【发布时间】:2012-10-07 00:05:00
【问题描述】:
我知道 fminsearch 函数,但它似乎只能解决一个变量。
如果我的函数看起来像 f(x,y,z) 并且我想找到给出最低结果的 x,y,z 的值,我将如何在 MatLab 中执行此操作? f 的复杂性会使计算偏导数变得异常困难。
任何帮助将不胜感激,谢谢!
【问题讨论】:
-
在 fminsearch 文档中,参见示例 1...
标签: matlab minimization
我知道 fminsearch 函数,但它似乎只能解决一个变量。
如果我的函数看起来像 f(x,y,z) 并且我想找到给出最低结果的 x,y,z 的值,我将如何在 MatLab 中执行此操作? f 的复杂性会使计算偏导数变得异常困难。
任何帮助将不胜感激,谢谢!
【问题讨论】:
标签: matlab minimization
fminsearch 是多变量的,例如:
a = fminsearch(@(x)((x(1)-1)^2+(x(2)-2)^2), [0,0]);
传递给目标函数的参数可以是向量,只要确保将x0参数(fminsearch中的第二个参数)指定为合适的大小即可。
【讨论】:
[0,0]是算法的起点,它的大小决定了优化中的变量个数
function y = f(x) y = ((x(1)-1)^2+(x(2)-2)^2) ... a = fminsearch(f, [0,0]);
min = fminsearch('GetJointMle', [0,0,0]);。没有撇号,你调用 GetJointMle 没有参数并将结果作为第一个参数传递给 fminsearch...