Matlab fsolve with vectors:如何定义函数?

Matlab fsolve with vectors:如何定义函数?,matlab,function,Matlab,Function,我试图了解fsolve如何处理向量。我期望下面的两个函数产生相同的结果,但它们没有。我的错在哪里 % Define parameters f1 = 1; f2 = 2; f3 = 3; g1 = 4; g2 = 5; g3 = 6; % Starting values w0 = [3 2]; % Using Function F1 F1 = fsolve(@(w) fun1(w, f1, f2, f3, g1, g2, g3), w0); % Using Function F2 h1 =

我试图了解fsolve如何处理向量。我期望下面的两个函数产生相同的结果,但它们没有。我的错在哪里

% Define parameters
f1 = 1; f2 = 2; f3 = 3; g1 = 4; g2 = 5; g3 = 6; 

% Starting values
w0 = [3 2];

% Using Function F1
F1 = fsolve(@(w) fun1(w, f1, f2, f3, g1, g2, g3), w0);

% Using Function F2
h1 = [f1 g1];
h2 = [f2 g2];
h3 = [f3 g3];

F2 = fsolve(@(w) fun2(w, h1, h2, h3), w0);

% Define Functions
function F1 = fun1(w, f1, f2, f3, g1, g2, g3)
    F1(1) = f1*w(1) + f2*w(2) + f3;
    F1(2) = g1*w(1) + g2*w(2) + g3;
end

function F2 = fun2(w, h1, h2, h3)
    F2 = h1.*w + h2.*w + h3;
end
结果是

F1 =
    1.0000   -2.0000
F2 =
   -1.0000   -0.6667

如果您的引用是
fun2
,则您的
fun1
应按如下所示编写,以便等效

function F1 = fun1(w, f1, f2, f3, g1, g2, g3)
    F1(1) = f1*w(1) + f2*w(1) + f3;
    F1(2) = g1*w(2) + g2*w(2) + g3;
end
否则,您应该像这样重写
fun2

function F2 = fun2(w, h1, h2, h3)
    F2 = [h1',h2',h3']*[w';1];
end