dampednewton.m
来自「Nonlinear Problem Files Collection」· M 代码 · 共 64 行
M
64 行
function [] = dampedNewton(f,Df,x0,maxite);format compactxMax=1.5*abs(x0);xMin=-xMax;dt= (xMax-xMin)/100;yMax=abs(feval(f,xMax));t = xMin:dt:xMax;plot(t,feval(f,t),'k-');axis([xMin xMax -yMax yMax]);hold on;plot([xMin xMax],[0 0],'k-');hold on;plot([0 0],[-yMax yMax],'k-');x(1)=x0; k=0; disp(sprintf('x_%d=%f',k/2,x(k+1)))y(1)=0;for k=2:2:2*maxite x(k)=x(k-1); y(k)=feval(f,x(k)); dx=-feval(f,x(k))/feval(Df,x(k)); lambda=2; lambdaMin=1.e-10; ddx=2*dx; while abs(ddx)>(1-lambda/2.)*abs(dx) lambda=lambda/2; if lambda<lambdaMin lambda=-1; disp('lambda zu klein'); break; end; z=x(k-1)+lambda*dx; ddx=-feval(f,z)/feval(Df,x(k)); end; if lambda<0 break; else waitforbuttonpress; x(k+1)=x(k)+lambda*dx; disp(sprintf('x_%d= %f lambda=%f',k/2,x(k+1),lambda)); y(k+1)=0; plot(x,y,'r*-'); end;end;if lambda<0 displ('Daempfungsparameter zu klein'); end;hold off;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?