vectorizing solution using fzero
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Matt J
le 5 Oct 2017
Modifié(e) : Matt J
le 5 Oct 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 commentaires
Plus de réponses (1)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!