I'm trying to solve a system of non linear odes in Matlab as follows.
editparams %parameters Tend = 50; Nt = 100; % Define RHS functions RHS = @(t,x) ModelRHS(t,x,param); %anonymous function defining the set of equations %Execution----------------------------------------------------------------- x0 =[0.04;0.75;0.85]; %Initial condition t = linspace(0,Tend,Nt); %TSPAN [t x] = ode45(RHS, t, x0); Now, I need to find the steady state of the system and I'm trying to create a function for this. I thought I'd calculate the steady state using the Jacobian. My equations are in an anonymous function which is defined as f in the code below. However, I realised that jacobian does not work for anonymous functions (or may be there is a way to do with anonymous functions) . so I thought I would convert the anonymous function to a symbolic function and try it. But i still have a difficulty in getting that done. So any help is really appreciated!
function SS = SteadyState(param, E) f = @(t,x)ModelRHS(t,x,param,E); %set of odes SymbolicSystem = sym(f); %trying to make the anonymous function symbolic SymbolicJacobian = jacobian(SymbolicSystem',x); %jacobian Jacob = matlabFunction(SymbolicJacobian,x); end Also if there is any other way apart from finding the Jacobian, kindly let me know about that too. I tried using 'fsolve' to calculate the steady-state as follows:
f = @(t,x)ModelRHS(t,x,param); x0 =[0.04;0.75;0.85]'; options = optimoptions('fsolve','Display','iter'); % Option to display output SS = fsolve(f,x0,options); % Call solver but it returned an error
Not enough input arguments. Error in @(t,x)ModelRHS(t,x,param) Error in fsolve (line 242) fuser = feval(funfcn{3},x,varargin{:}); Caused by: Failure in initial objective function evaluation. FSOLVE cannot continue. 2 Reset to default