版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Broyden方法求解非線性方程組的Matlab實(shí)現(xiàn) 注:matlab代碼來自網(wǎng)絡(luò),僅供學(xué)習(xí)參考。1. 把以下代碼復(fù)制在一個(gè).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+
10、1,1)=fnrm; it_histx(itc+1,2)=it_histx(itc,2)+iarm+1; if(itc = 1) it_histx(itc+1,2) = it_histx(itc+1,2)+1; end; it_histx(itc+1,3)=iarm;% terminate?% if fnrm stop_tol sol=x; rat=fnrm/fnrmo; outstat(itc+1, :) = itc fnrm iarm rat; it_hist=it_histx(1:itc+1,:);% it_hist(itc+1)=fnrm; if debug=1 disp(outsta
11、t(itc+1,:) end return end% modify the step and step norm if needed to reflect the line % search% lam_rec(nbroy)=lambda; if lambda = 1 stp(:,nbroy)=lambda*stp(:,nbroy); stp_nrm(nbroy)=lambda*lambda*stp_nrm(nbroy); end% it_hist(itc+1)=fnrm; rat=fnrm/fnrmo; outstat(itc+1, :) = itc fnrm iarm rat; if deb
12、ug=1 disp(outstat(itc+1,:) end% if theres room, compute the next search direction and step norm and% add to the iteration history % if nbroy 1 for kbr = 1:nbroy-1 ztmp=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);
13、 end end% store the new 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)
14、=-fc; stp_nrm(1)=stp(:,1)*stp(:,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=1 disp( outstat)end function lambdap = parab3p(lambdac, lambdam, ff0, ffc, ffm)% Apply thr
15、ee-point safeguarded parabolic model 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 +
16、lambdac d) |2% ffm = value of | F(x_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
17、% p(lambda) = ff0 + (c1 lambda + c2 lambda2)/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 = 0 lambdap = sigma1*lambdac; returnendc1=lambdac*lambdac*(ffm-ff0)-lambdam*lambdam*(ffc-ff0);lambdap=-c1*.5/c2;if (lambdap sigma1*lambda
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三方店鋪買賣合同范本
- 中藥材購(gòu)銷經(jīng)典合同范本
- 三方土地租賃合同格式范文
- 三人共同投資合作合同
- OEM代工合同樣本
- 個(gè)人債務(wù)轉(zhuǎn)讓合同范本
- 個(gè)人汽車抵押貸款合同范本
- 個(gè)人二手船舶交易合同協(xié)議書
- 中外貿(mào)易采購(gòu)合同(DDP條款)
- 上海居民房屋租賃合同樣本
- 具有履行合同所必須的設(shè)備和專業(yè)技術(shù)能力的承諾函-設(shè)備和專業(yè)技術(shù)能力承諾
- 混床計(jì)算書(新)
- 1325木工雕刻機(jī)操作系統(tǒng)說明書
- 初中衡水體英語(28篇)
- 斯瓦希里語輕松入門(完整版)實(shí)用資料
- 復(fù)古國(guó)潮風(fēng)中國(guó)風(fēng)春暖花開PPT
- GB/T 2317.2-2000電力金具電暈和無線電干擾試驗(yàn)
- 機(jī)動(dòng)車輛保險(xiǎn)理賠實(shí)務(wù)2023版
- 病原微生物實(shí)驗(yàn)室標(biāo)準(zhǔn)操作規(guī)程sop文件
- 最完善的高速公路機(jī)電監(jiān)理細(xì)則
- 建筑工程技術(shù)資料管理.ppt
評(píng)論
0/150
提交評(píng)論