(Matlab)关于迭代结果的考试问题

时间:2019-03-13 20:59:27

标签: matlab iteration numerical-analysis

我正在准备进行数值分析的笔试。

有多种类型的答案:

以下代码提供了最接近...的打印输出

N=100;
dt=0.5/N;
x=1;
for n=1: N-1
x=x+dt*x*x;
end
display(x);

正确的选项:2


以下代码提供了最接近...的打印输出

N=100;
x=1;
y=1;
for n=1: N-1
x = x - (x-exp(-x))/(1+exp(-x));
y = y - (y-exp(-y));
end
display(x-y)

正确的选项:0


以下代码的打印输出通常是...

s=0.0;
N=10000;
for n=1:N
x=rand(1);
s=s+3*x*x+x;
end
display(s/N)

正确的选项:1.5

对于第一个问题,我认为是某种程度上使用了Eulers方法,但是我无法得出2。我不确定如何解决第二个和第三个问题。

是否可以使用某种通用策略来确定类似的迭代应该收敛(不使用计算机)?

1 个答案:

答案 0 :(得分:3)

一般策略是查看正在实现的迭代正在做什么。

第一个问题

这是dx/x^2=dt,即1/x0-1/x=t,即x=x0/(1-x0*t)=1/(1-1*0.5)=2

第二个问题

x的方程式是f(x)=x-exp(-x)的牛顿方法,即f'(x)=1+exp(-x),因此解决方案是x=exp(-x)的根。

y的方程是y=exp(-y)的定点迭代。两者具有相同的解决方案x=y=0.5671 (4sf)

第三个问题

rand(1)是[0,1]上的均一分布,均值1/2,方差为1/12,所以<x^2>=1/12+1/4=1/33<x^2>+<x>=3/3+1/2=1.5