How to reduce function evaluation in each iteration in fsolve?

1 view (last 30 days)
Hello, I have a code which contains non-linear equations. I want to solve it using fsolve and it goes very well. But the problem is that function evaluations in each iteration is so time consuming (115 func-count in each iteration). I want to reduce function evaluations in each iteration. Is there any way or code to do it? Or how can I optimize my codes to lower the execution time. Now the running time using tic-toc is 9.5 seconds. I need it to be lower than 0.5 second. With best regards
  2 Comments
Jan
Jan on 4 Oct 2015
What about posting the code? Perhaps it is possible to accelerate the function evaluations instead of reducing the number of evaluations.
Mohmmad Teymouri
Mohmmad Teymouri on 6 Oct 2015
I am not pretty sure that my codes are easily readable. But in case you send me your email address I will send them to you. I am sure there is a way to reduce the run time.

Sign in to comment.

Accepted Answer

Eng. Fredius Magige
Eng. Fredius Magige on 4 Oct 2015
You might use vectorization instead of for if is use
  1 Comment
Mohmmad Teymouri
Mohmmad Teymouri on 6 Oct 2015
The "for" loops I have used in my codes are somehow complicated. I'm not sure how can I replace vectors instead of "for". I know it is possible and may be easy for a professional programmer but I am new in MATLAB and coding, so it takes a long time for me to do it. Although by a little help and guidance I can change my codes.
I have used Globals in my previous codes. I changed them to class data and also changed else if into elseif and I could reduce the run time from 9.5 seconds to about 5.5 seconds. But it is still too much for my work. I need it to be less than 0.5 seconds. I don't know what can I do?!

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!