1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > broyden matlab Broyden方法求解非线性方程组的Matlab实现

broyden matlab Broyden方法求解非线性方程组的Matlab实现

时间:2020-02-16 23:52:04

相关推荐

broyden matlab Broyden方法求解非线性方程组的Matlab实现

《Broyden方法求解非线性方程组的Matlab实现》由会员分享,可在线阅读,更多相关《Broyden方法求解非线性方程组的Matlab实现(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_hist。

2、, 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 res。

3、tart, 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% th。

4、e 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 suffici。

5、ent 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 nargin 。

6、= 4maxit=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;fnrm。

7、o=1;stop_tol=atol + rtol*fnrm;outstat(itc+1, :) = itc fnrm 0 0;% terminate on entry?%if fnrm = (1 - lambda*alpha)*fnrmo & iarm 1for kbr = 1:nbroy-1ztmp=stp(:,kbr+1)/lam_rec(kbr+1);ztmp=ztmp+(1 - 1/lam_rec(kbr)*stp(:,kbr);ztmp=ztmp*lam_rec(kbr);z=z+ztmp*(stp(:,kbr)*z)/stp_nrm(kbr);endend% store the n。

8、ew search direction and its norm%a2=-lam_rec(nbroy)/stp_nrm(nbroy);a1=1 - lam_rec(nbroy);zz=stp(:,nbroy)*z;a3=a1*zz/stp_nrm(nbroy);a4=1+a2*zz;stp(:,nbroy+1)=(z-a3*stp(:,nbroy)/a4;stp_nrm(nbroy+1)=stp(:,nbroy+1)*stp(:,nbroy+1);%else% out of room, time to restart%stp(:,1)=-fc;stp_nrm(1)=stp(:,1)*stp(:。

9、,1);nbroy=0;%end% end whileend% Were not supposed to be here, weve taken the maximum% number of iterations and not terminated.%sol=x;it_hist=it_histx(1:itc+1,:);ierr=1;if debug=1disp( outstat)endfunction lambdap = parab3p(lambdac, lambdam, ff0, ffc, ffm)% Apply three-point safeguarded parabolic mode。

10、l for a line search.% This code comes with no guarantee or warranty of any kind.% function lambdap = parab3p(lambdac, lambdam, ff0, ffc, ffm)% input:% lambdac = current steplength% lambdam = previous steplength% ff0 = value of | F(x_c) |2% ffc = value of | F(x_c + lambdac d) |2% ffm = value of | F(x。

11、_c + lambdam d) |2% output:% lambdap = new value of lambda given parabolic model% internal parameters:% sigma0 = .1, sigma1=.5, safeguarding bounds for the linesearch% set internal parameters%sigma0=.1; sigma1=.5;% compute coefficients of interpolation polynomial% p(lambda) = ff0 + (c1 lambda + c2 l。

12、ambda2)/d1% d1 = (lambdac - lambdam)*lambdac*lambdam 0 we have negative curvature and default to% lambdap = sigam1 * lambda%c2 = lambdam*(ffc-ff0)-lambdac*(ffm-ff0);if c2 = 0lambdap = sigma1*lambdac; returnendc1=lambdac*lambdac*(ffm-ff0)-lambdam*lambdam*(ffc-ff0);lambdap=-c1*.5/c2;if (lambdap sigma1*lambdac) lambdap=sigma1*lambdac; end2. 应用举例把以下代码复制在command 窗口中x=1 2 3;f=(x)3*x(1)-cos(x(2)*x(3)-1/2;x(1)2-81*(x(2)+0.1)2+sin(x(3)+1.06;exp(-x(1)*x(2)+20*x(3)+(10*pi-3)/3;tol=3,-5;sol, it_hist, ierr = brsola(x,f,tol)说明:以上应用举例只是给出了上文中代码的一个应用实例,具体能否得到方程的满意数值解还需要进一步调节初始给的x和tol的值。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。