How to reduce function evaluation in each iteration in fsolve?

1 次查看(过去 30 天)
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 个评论
Jan
Jan 2015-10-4
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 2015-10-6
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.

请先登录,再进行评论。

采纳的回答

Eng. Fredius Magige
You might use vectorization instead of for if is use
  1 个评论
Mohmmad Teymouri
Mohmmad Teymouri 2015-10-6
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?!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Optimization 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by