📄 dampednewton.m
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -