澄清Newton-Raphson的实施

时间:2019-03-14 18:21:16

标签: matlab iteration mathematical-optimization numerical-methods newtons-method

能否请您解释一下此代码的工作原理?我能理解大部分内容,但是cnt命令让我感到困惑。 cnt代表什么?如何用于求解方程式?

t=0; %% Initial estimate of t
idx=1; %% Number of iterations
iter=zeros(1,100); %% Array to store sequence of t values
func=zeros(1,100); %% Array to store sequence of f(t) values
eps=1e-6; %% Required accuracy
n_max=100; %% Number of iterations
f=1; %% f contains f(t)
while abs(f)>eps && idx<n_max

  f=-5-exp(-t)+cos(.3*pi*t)+(.1*t*t);
  dfdt=exp(-t)-(0.3*pi*sin(0.3*pi*t))+(0.2*t);

  iter(idx)=t;
  func(idx)=f;
  idx=idx+1;

  t=t-f/dfdt;
end

cnt=idx-1;
t=linspace(0,10,100);

f=zeros(1,100);
for idx=1:100
  f(idx)=-5-exp(-t(idx))+cos(.3*pi*t(idx))+(.1*t(idx)*t(idx));
end

figure, hold on;
grid on;
plot(t,f);
scatter(iter(1:cnt),func(1:cnt),'r');
title('Newton-Raphson Example','FontSize', 12)
legend('f(t)','Iterations', 'NorthWest');
xlabel('t', 'FontSize', 12);
ylabel('f(t)','FontSize', 12);

1 个答案:

答案 0 :(得分:2)

cnt通常代表“计数”或“计数器”,不是用来解决任何东西,而是用来绘制它。

如果遵循该算法,我们可以看到:

  • 最初,iterfunc被预先分配为长度为100的向量-表示算法有望在此迭代次数(或更少)内收敛。
  • 稍后,while循环结束时,cnt会跟踪实际上收敛所需的迭代次数。
  • 最后,在创建scatter绘图时,cnt被用作绘图的最终索引,因此我们不会最终显示与iter(cnt+1:n_max)相对应的所有零。 func(cnt+1:n_max)