Solve equations by fsolve and with input anonymous function format

조회 수: 10 (최근 30일)
zongxian
zongxian 2020년 9월 12일
답변: Steven Lord 2020년 9월 12일
By the help document of Matlab, the example of fsolve is:
function F = root2d(x)
F(1) = exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2);
F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;
fun = @root2d;
x0 = [0,0];
x = fsolve(fun,x0)
But now outer function transfer a anonymous function of fun, like:
fun = @(x,y) [x+y^2-5, 6*x^2+13*y-5]
Start value x0 = [1, 1]
How do I fit fsolve input format?

채택된 답변

Steven Lord
Steven Lord 2020년 9월 12일
fun = @(x,y) [x+y^2-5, 6*x^2+13*y-5]
Since fsolve requires the function you pass into it to accept one input, a vector, you need an adapter.
g = @(xy) fun(xy(1), xy(2));
This has the interface fsolve requires and calls fun the way it expects to be called.
g([1 2]) % [0 27]
fun(1, 2) % [0 27]

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Mathematics에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by