vectorized fzero function for Monte Carlo simulation

3 次查看(过去 30 天)
I am run a Monte Carlo simulation with e.g. 1 million realizations and there is a zero searching using the fzero function in each loop. The code becomes very slow for 1 million loops. Is there a vectorized way for fzero? The code likes:
for i = 1:1e6
x(i) = fzero(fun, x0)
end
Is there a quick way like: x = vectorized_fzero(fun, x0) to improve the efficiency?
Thanks

回答(2 个)

Walter Roberson
Walter Roberson 2021-10-6
No.
However if you happen to know the derivative of the function or can construct it symbolically, then you can create a vectorized version of the Newton Raphson method.
Selection of which entries to process further can end up being more expensive than just processing all of the entries in some cases, depending on how expensive the function is.
The number of digits gain per iteration is known in theory so you can often put in a fixed upper limit on the number of iterations.

wangm
wangm 2021-10-8
not familar with your solution. does it work with multiple random variabes? the x in equation is a vector of x1, x2,... and x1, x2,... are sampled from their respective distribution. I just wonder if someone has made fzero applicable to this situation.

类别

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

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by