我正在准备进行数值分析的笔试。
有多种类型的答案:
以下代码提供了最接近...的打印输出
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。我不确定如何解决第二个和第三个问题。
是否可以使用某种通用策略来确定类似的迭代应该收敛(不使用计算机)?
答案 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/3
和3<x^2>+<x>=3/3+1/2=1.5
。