能否请您解释一下此代码的工作原理?我能理解大部分内容,但是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);
答案 0 :(得分:2)
cnt
通常代表“计数”或“计数器”,不是用来解决任何东西,而是用来绘制它。
如果遵循该算法,我们可以看到:
iter
和func
被预先分配为长度为100的向量-表示算法有望在此迭代次数(或更少)内收敛。 while
循环结束时,cnt
会跟踪实际上收敛所需的迭代次数。scatter
绘图时,cnt
被用作绘图的最终索引,因此我们不会最终显示与iter(cnt+1:n_max)
相对应的所有零。 func(cnt+1:n_max)
。