首页 文章

MATLAB中的部分功能评估

提问于
浏览
20

在MATLAB函数中绑定变量是否有惯用的方法?看起来创建一个函数,绑定一些参数,然后将新函数传递给某种类型的优化器(在我的例子中,是牛顿求解器)是相当普遍的 . 看起来变量作用域规则不允许使用嵌套或内联函数的解决方案 . 我应该简单地创建一个类吗?看起来MATLAB似乎没有一流的功能对象,这是正确的吗?我的搜索功夫正在缩短 . 谢谢!

例如,假设我想为参数c的各种值找到f(c,x)= x ^ 3 cx ^ 2 2x 3的根 . 我有一个牛顿方法求解器,它取一个变量的函数,而不是两个 . 所以我循环遍历c的各种值,然后将绑定函数传递给求解器 .

for c=1:10
  g=f(c); % somehow bind value of c
  seed=1.1; % my guess for the root of the equation
  root=newton(g,seed); % compute the actual root
end

2 回答

  • 0

    你可以这样做:

    f = @(c,x)( @(x)(x^3+c*x^2+2*x+3) );
    
    for c=1:10
        g=f(c); % g is @(x)(x^3+c*x^2+2*x+3) for that c
        ....
    end
    

    关键是第一行:它是一个返回函数的函数 .

    即,它返回 @(x)(x^3+c*x^2+2*x+3) ,其值为 c .

  • 22

    我很确定嵌套函数可以与 fminsearch 一起使用 . 我不是特别了解牛顿方法,但我的猜测是没有问题 .

相关问题