Matlab中fzero()迭代解的向量化

Matlab中fzero()迭代解的向量化,matlab,optimization,iteration,vectorization,Matlab,Optimization,Iteration,Vectorization,我有一系列问题需要搜索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;

我有一系列问题需要搜索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数组,我需要做什么?

函数fzero不适用于方程组

改用fsolve

此外,所有代码都可以简化,只需写两行代码,如下所示:

myfun=@F[1;19/16]-F-[F1*F2/3;F1*F2/4];
x=fsolve@FmyfunF,[1;1]

帮助fzero的第一行表示fzero单变量非线性寻零。这意味着它只能在1D中工作。感谢这真的帮助我在实际应用中实现了解决方案problem@JaredLo很高兴我能帮忙。