Broyden方法求解非线性方程组的Matlab实现.doc
《Broyden方法求解非线性方程组的Matlab实现.doc》由会员分享,可在线阅读,更多相关《Broyden方法求解非线性方程组的Matlab实现.doc(7页珍藏版)》请在文库网上搜索。
1、Broyden方法求解非线性方程组的Matlab实现 注:matlab代码来自网络,仅供学习参考。1. 把以下代码复制在一个.m文件上function sol, it_hist, ierr = brsola(x,f,tol, parms)% Broydens Method solver, globally convergent% solver for f(x) = 0, Armijo rule, one vector storage% This code comes with no guarantee or warranty of any kind.% function sol, it_his
2、t, ierr = brsola(x,f,tol,parms)% inputs:% initial iterate = x% function = f% tol = atol, rtol relative/absolute% error tolerances for the nonlinear iteration% parms = maxit, maxdim% maxit = maxmium number of nonlinear iterations% default = 40% maxdim = maximum number of Broyden iterations% before re
3、start, so maxdim-1 vectors are % stored% default = 40% output:% sol = solution% it_hist(maxit,3) = scaled l2 norms of nonlinear residuals% for the iteration, number function evaluations,% and number of steplength reductions% ierr = 0 upon successful termination% ierr = 1 if after maxit iterations% t
4、he termination criterion is not satsified.% ierr = 2 failure in the line search. The iteration% is terminated if too many steplength reductions% are taken.% internal parameter:% debug = turns on/off iteration statistics display as% the iteration progresses% alpha = 1.d-4, parameter to measure suffic
5、ient decrease% maxarm = 10, maximum number of steplength reductions before% failure is reported % set the debug parameter, 1 turns display on, otherwise off%debug=1;% initialize it_hist, ierr, and set the iteration parameters%ierr = 0; maxit=40; maxdim=39; it_histx=zeros(maxit,3);maxarm=10;%if nargi
6、n = 4 maxit=parms(1); maxdim=parms(2)-1; endrtol=tol(2); atol=tol(1); n = length(x); fnrm=1; itc=0; nbroy=0;% evaluate f at the initial iterate% compute the stop tolerance%f0=feval(f,x);fc=f0;fnrm=norm(f0)/sqrt(n);it_hist(itc+1)=fnrm;it_histx(itc+1,1)=fnrm; it_histx(itc+1,2)=0; it_histx(itc+1,3)=0;f
7、nrmo=1;stop_tol=atol + rtol*fnrm;outstat(itc+1, :) = itc fnrm 0 0;% terminate on entry?%if fnrm stop_tol sol=x; returnend% initialize the iteration history storage matrices%stp=zeros(n,maxdim);stp_nrm=zeros(maxdim,1);lam_rec=ones(maxdim,1);% Set the initial step to -F, compute the step norm%lambda=1
8、;stp(:,1) = -fc;stp_nrm(1)=stp(:,1)*stp(:,1);% main iteration loop%while(itc = (1 - lambda*alpha)*fnrmo & iarm maxarm% lambda=lambda*lrat; if iarm=0 lambda=lambda*lrat; else lambda=parab3p(lamc, lamm, ff0, ffc, ffm); end lamm=lamc; ffm=ffc; lamc=lambda; x = xold + lambda*stp(:,nbroy); fc=feval(f,x);
9、 fnrm=norm(fc)/sqrt(n); ffc=fnrm*fnrm; iarm=iarm+1; end% set error flag and return on failure of the line search% if iarm = maxarm disp(Line search failure in brsola ) ierr=2; it_hist=it_histx(1:itc+1,:); sol=xold; return; end% How many function evaluations did this iteration require?% it_histx(itc+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Broyden 方法 求解 非线性 方程组 Matlab 实现