fsolve
10 次查看(过去 30 天)
显示 更早的评论
Is there a way to accelerate the fsolve function, with the least lost of precision possible. In:
beta(n+1)=fsolve(F,beta(n))
采纳的回答
Sean de Wolski
2011-6-17
preallocate beta
beta = zeros(nmax+1,1);
beta(1) = beta_of_1;
for ii = 1:nmax
beta(ii+1) = fsolve(F,beta(ii));
end
EDIT more stuff:
You calculate:
- 'sqrt((Ko^2-(x)^2))*b': 4x
- 'sqrt((Ko^2*Ed-(x)^2))*a': 4x
- the bessel functions multiple times a pop.
Turn your function handle into a function. Make each of these calculations once, then use them multiple times.
更多回答(1 个)
Walter Roberson
2011-6-17
fsolve() can be much faster if you can constrain the range to search in.
2 个评论
Walter Roberson
2011-6-20
Sorry it turns out that fsolve() has no way of constraining ranges. fzero() can operate over an interval, if your function has only one independent variable.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linear Algebra 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!