【发布时间】:2018-01-25 02:54:57
【问题描述】:
我有一系列问题需要搜索 2 个最优/根值。举个例子吧:
F+(FG)/3=1 和 G+(FG)/4=19/16
(当然,用代数解决这个问题真的很简单)实际问题太复杂了,无法在这里写,但这简化了我打算实现的想法。
我需要解决问题的方法是使用 matlab 的 fzero() 函数,这是我目前的代码,但无法正常工作
x = fzero(@(F) [1;19/16]-F-myfun(F),[0;0]);
myfun() 被定义为
function [FF]=myfun(F)
FFx=(F(1,1)*F(2,1))/3;
FFy=(F(2,1)*F(1,1))/4;
FF=[FFx;FFy];
end
而 F 是一个包含两个元素的数组 (F=[fx;fy])。 1D 版本没有问题。但是,当我升级到 2D 时,会出现以下错误
Attempted to access F(2,1); index out of bounds because numel(F)=1.
据我了解,fzero() 自动使 F 成为 1x1 变量。为了使 fzero 假设 F 为 2x1 数组,我需要做什么?
【问题讨论】:
-
help fzero的第一行写着“fzero Single-variable nonlinear zero finding.”,这意味着它只适用于一维。
标签: matlab optimization iteration vectorization