system of non linear functions
45 次查看(过去 30 天)
显示 更早的评论
Hello,
I get an error saying not enough input arguments.
I literally tried to go step by step from the matlab tutorial for non linear functions.
Do you know what might be wrong?
Thanks!
function F = root2d(x)
F(1) = 97-(1/sqrt(2))*(exp((1i)*(136)*x(1)))- exp((1i)*105*x(2))*(1/sqrt(2));
F(2) = 51-(1/sqrt(2))*(exp((1i)*(51)*x(1)))- exp((1i)*14*x(2))*(1/sqrt(2));
fun = @root2d;
x0 = [0,0];
x = fsolve(fun,x0)
1 个评论
Star Strider
2019-12-13
Your code runs for me without error:
function F = root2d(x)
F(1) = 97-(1/sqrt(2))*(exp((1i)*(136)*x(1)))- exp((1i)*105*x(2))*(1/sqrt(2));
F(2) = 51-(1/sqrt(2))*(exp((1i)*(51)*x(1)))- exp((1i)*14*x(2))*(1/sqrt(2));
end
fun = @root2d;
x0 = [0,0];
x = fsolve(fun,x0)
(I added an end to the function because I am running it inside another function I use to test Answers functions.)
It produces a normal termination for fsolve, and these parameter estimates:
x =
0.000514467767515 - 0.082745912708573i -0.029252385734369 - 0.107158749735724i
采纳的回答
Steven Lord
2019-12-13
It's unclear from what you've posted whether the last three lines of your code:
fun = @root2d;
x0 = [0,0];
x = fsolve(fun,x0)
are inside root2d.m or outside. They need to be outside of root2d.m, otherwise you will either receive an error about not enough input arguments (if you call root2d with no input arguments) or (eventually) an error about the recursion limit or simply a crash (if you call root2d with an input argument that has at least two elements.)
Why would you receive the recursion limit error if you call this with an input argument?
Your first call to root2d would call fsolve
which would call root2d which would call fsolve
which would call root2d which would call fsolve
which would call root2d which would call fsolve ...
Break this infinite loop by not calling fsolve inside root2d to solve the system computed by root2d.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Calculus 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!