2016-05-28 9 views
0

Например, я определил следующие функции ручки:fsolve не работает с параметризованной функцией обрабатывает

F = @(x, y, z)[x+y+z; x*y*z]; 
funcc = @(x, y)F(x, y, 0); 

Вызова

res = fsolve(funcc, [10; 10]); 

приводит к ошибке:

Error using @(x,y)F(x,y,0) 
Not enough input arguments. 

Error in fsolve (line 219) 
     fuser = feval(funfcn{3},x,varargin{:}); 

Caused by: 
Failure in initial user-supplied objective function evaluation. FSOLVE cannot continue. 

Как я могу это исправить?

ответ

2

Пожалуйста, перечитайте requirements for the objective function in the documentation. Функция должна принимать один векторный вход и возвращать вектор. Вы пытаетесь передать два скаляра. Вместо этого:

F = @(x, y, z)[x+y+z; x*y*z]; 
funcc = @(x)F(x(1), x(2), 0); 

Вход для целевой функции должно совпадать начальное предположение, x0 ([10; 10]).