Undefined function or variable 'x'.
2 次查看(过去 30 天)
显示 更早的评论
similar to the question am also having the same doubt
function F = myfun(x)
x=[x(0),x(1),x(2),x(3),x(4),x(5)];
F = [2*x(1) - x(2) - exp(-x(1));
-x(1) + 2*x(2) - exp(-x(2))];
h=str2func( ['@myfun' F] );
fsolve(h,x1);
this is an example problem from matlab.am just trying to solve this.but am getting error as i mentioned in question!!!!!
how can eliminate this error
my equation is consists of 5 variable and lengthy equation for example my first equation is * *
((((-x(1)*x(2)*x(4)) + (x(1)*x(3)*x(5))*0.15335) + (0.0680154*(-x(1)*x(2)*x(4)) + (x(3)*x(1)*x(5))) + (x(1) (x(1)*x(2)) + (x(2)*x(3)))*(-0.15335))*(1 + (x(1)+(x(1)*x(2)) + (x(2)*x(3)))*0.15335) - ((0.1067*(x(1)*x(2)*x(4)) + (x(1)*x(3)*x(5))) + (x(1) + (x(1)*x(2)) + (x(2)*x(3))*0.0340077)))]
so i need to solve my equations
help to solve the problem
0 个评论
回答(4 个)
Steven Lord
2015-9-14
Do NOT try to call FSOLVE with a function handle to myfun from within myfun itself. Doing so is likely to lead to a recursion error. Either create two separate function files, one named myfun.m that evaluate the system of equations for which you want to find a solution and another that contains your FSOLVE call. The solveit.m file should contain only:
function y = solveit(x0)
% Contains the FSOLVE call ONLY
y = fsolve(@myfun,x0);
and the myfun.m file should contain only:
function F = myfun(x)
% Contains the system to be solved
F = [2*x(1) - x(2) - exp(-x(1));
-x(1) + 2*x(2) - exp(-x(2))];
Alternately, if the only place you use myfun is in this solveit call, you could create it as a subfunction in solveit.m to avoid creating two separate files. In this scenario, solveit.m contains:
function y = solveit(x0)
y = fsolve(@myfun,x0);
function F = myfun(x)
F = [2*x(1) - x(2) - exp(-x(1));
-x(1) + 2*x(2) - exp(-x(2))];
In either of these cases, you'd call solveit with your initial guess at a solution vector as the only input.
1 个评论
Yahia Mounir
2015-9-15
Thanks Steven for your explanation can you have a look for attached file and equation and try fix the m.file I will be grateful for your help
Julia
2014-7-25
Is it "Undefined function or variable 'x'" or "Undefined function or variable 'x1'"?
fsolve(h, x1);
I cannot find x1 in your code.
Image Analyst
2014-7-25
You did not define x1. Also you can't start with and index of zero like you did. To crop/extract only the first 6 elements of x, you'd do this
x = x(1:6);
Yahia Mounir
2015-9-14
Hello I am trying to run the following file however it give me error undefined variable X, I attached the my file can you help with that ,
Please note if i call the function at command window with the following steps @myfun t x0=[0 0] x=(@myfun,xo) it is working and giving me the answer i need only to use the mfile to get the answer
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!