clc;
clear;
%%原函数sin(x),cos(x),log(x),log2(x),log10(x),exp(x),
fun=@funs;%初始函数在文件funs.m文件中更改。
%x=[0.1,0.1,-0.1]';
x=[0,1]';%设置初值
%fun=funs(x0);
N=30;%设置最大迭代次数
ep=1e-2;%设置迭代精度
%index=1 表明迭代成功,index=0表明迭代失败
index=0;k=0;
fprintf('%2d %12.9f %12.9f\n',k,x)
%fprintf('%2d %12.9f %12.9f\n',k,x)
k=k+1;
[f,J]=feval(fun,x);
%f
y0=f;f0=f;display('f0=');display(f0);fd=J;display('f0倒数=');display(fd);
hk=inv(J);h0=hk;display('h0=');display(h0);
x=x-hk*f;x1=x;display('x1=');display(x1);
deltax=-hk*f;deltax0=deltax;display('deltax0=');display(deltax0);
% deltay=0;
% deltax=-hk*f;
fprintf('%2d %12.9f %12.9f\n',k,x)
%fprintf('%2d %12.9f %12.9f\n',k,x)
% %disp(hk);
% fprintf('%12.9f %12.9f %12.9f\n',hk)
while k<= N
[f,J]=feval(fun,x);
%deltax=x-inv(J)*f;
%f
%y0
deltay=f-y0;
y0=f;
hk=hk+((deltax-hk*deltay)*deltax'*hk)/(deltax'*hk*deltay);
x=x-hk*f;
deltax=-hk*y0;
if(k<2)
f1=f;display(f1);
display('deltay0=');display(deltay);
h1=hk;display('h1=');display(h1);
end
k=k+1;
fprintf('%2d %12.9f %12.9f %12.9f\n',k,x,norm(inv(J)*f,2))
% fprintf('%2d %12.9f %12.9f %12.9f\n',k,x,norm(inv(J)*f,2))
end
x;
k;
- 1
- 2
- 3
前往页