vectorizing solution using fzero
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Pappu Murthy
am 5 Okt. 2017
Bearbeitet: Matt J
am 5 Okt. 2017
i have equations of the form f(x,X)=0; where X is a column vector of size N. i can solve using for example
f = @(xx) ( f(xx, X))
for i = 1:N
sol(i) = fzero( f(X(i)), [ 0 , 1000])
end
How I would like to eliminate the for loop. Is there a way? I would like something like sol = fzero(f(X), [0,1000]), however it gives an error if I try this. Thanks in advance.
0 Kommentare
Akzeptierte Antwort
Matt J
am 5 Okt. 2017
Bearbeitet: Matt J
am 5 Okt. 2017
Ok. Can I use fsolve to vectorize? My guess based on your answer is that I can not use fsolve either.
You could use fsolve to vectorize, but my feeling is that it is better not to, because this will increase the dimension of the problem and potentially slow convergence.
My recommendation would be to use parfor to parallelize the fzero calls. If the sol(i) are expected to change gradually with i, an alternative way to accelerate things would be to use sol(i-1) as your initial guess, as in,
init=[0,1000];
for i = 1:N
sol(i) = fzero( @(xx) f(xx, X(i)), init);
init=sol(i);
end
0 Kommentare
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Optimization finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!