createExitMsg - Fsolve execution Time
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
There is a function being called by fsolve called "createExitMsg." I am not using the exit information for anything. Is there anyway I can prevent fsolve from calling this function to save time. My function DetermineSumAlpha is going to be called several thousands of times, so I would love to get my execution time down the best I can.
I've tried commenting out these lines of code in MATLAB, but since it is an internal function I am getting an access denied error.
0 comentarios
Respuestas (2)
Matt J
el 23 de Nov. de 2014
Editada: Matt J
el 23 de Nov. de 2014
Try turning the 'Display' option to 'off'.
1 comentario
Matt J
el 24 de Nov. de 2014
Brandon Commented:
Display options are currently set to off:
persistent options
if isempty(options)
options=optimset('Display','off', 'Jacobian','on', 'TolFun', 1E-3, 'TolX', 1E-3);
else
% Already set, do nothing
end
% options=optimset('Display','on');
% Solve for Theta
Theata = fsolve(@FindTheta, Theta0(1:2), options);
When I turn the display options to "on" it takes approximately 0.7 seconds to createExitMsg. It appears that fsolve calls createExitMsg even if display is set to of and only displays the message when it is set to on.
Matt J
el 23 de Nov. de 2014
Editada: Matt J
el 23 de Nov. de 2014
My function DetermineSumAlpha is going to be called several thousands of times
If you are calling fsolve several thousand times, you should try to combine the thousands of equations into a single system so that you only have to call fsolve once (or fewer times). That way, service and set-up operations like createExitMsg are only done once and don't dominate the execution time.
3 comentarios
Matt J
el 24 de Nov. de 2014
Editada: Matt J
el 24 de Nov. de 2014
Correct me if I am wrong, but my thoughts are that the convergence rate increase exponentially as the size of the system increases.
Not if there's no coupling between the systems. Since the Jacobian is then block diagonal, variables in each system get updated just the same as if you had solved each system separately. You can also use the JacobPattern option (if using the Trust-Region Reflective algorithm) to tell the code that the Jacobian is sparse and block diagonal, or supply your own sparse Jacobian calculation in whatever algorithm you're running.
Ver también
Categorías
Más información sobre Solver Outputs and Iterative Display en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!