数值分析上机实验报告
由图象和数据中可以看出,当步长为0.2时,迭代是不收敛的。
3.4问题的总结
(1)用标准的四阶 Runge-Kutta 算法计算常微分方程时,不同的步长算法的稳定性有影响。不够稳定的步长下面的计算,误差会越来越大,结果失真严重。
(2)一般情况下,步长越小,标准的四阶 Runge-Kutta 算法的稳定性越高,精度也越高。
14
数值分析上机实验报告
总结
通过此次数值分析上机实习,认识到了计算机编程在数值分析课程中的重要性。也让我意识到了学习编程语言的重要性。要想要将数学应用于实际工程中,特别是对于工科的学生来讲,这是一门非常重要的实践课程。
在此次报告中,首次接触了Matlab这门软件,之所以选这门,是因为很多工程中对数据的处理需要使用,这对我本身的专业是非常重要的。
本学期学习的数值分析方法,让我在对数学的理解上又有了新的认识。在一连串看似杂乱无章的数据中,用数值分析进行处理,有了很多的收获。在学习的过程中,意识到了这门课对我专业的重要性,让我对自己的专业有了更好的发挥。对我写论文以及解决实际工程问题有很大的帮助。
最后,感谢老师给我这样的机会去接触这门语言,虽然只了解了皮毛,可是仍然收获颇多。由于初次接触这门软件,在报告中仍难免会有不完善甚至错误的地方,望谅解!
15
数值分析上机实验报告
附录
实验一程序
function yy=L(xi) f=fopen('xk.txt','r'); x=fscanf(f,'%f'); g=fopen('yk.txt','r'); y=fscanf(g,'%f');
n=input('请输入插值函数阶数:'); s=0;
xi=[-3.5:0.1:3.5];
for i=1:fix(101/(n-1)):101 t=ones(1,length(xi));
for j=1:fix(101/(n-1)):101 if j~=i
t=t.*(xi-x(j))/(x(i)-x(j)); end end
s=s+t*y(i); end yy=s;
plot(x,y,'b',xi,yy,'r')
16
数值分析上机实验报告
实验二程序
n=input('请输入阶数n:'); w=input('请输入w的值:'); for i=1:n for j=1:n if i==j
a(i,j)=-4;
elseif (i==j+1|i==j-1) a(i,j)=1; else
a(i,j)=0; end end end
for i=1:n
if (i==1|i==n) b(i)=-3; else
b(i)=-2; end end
x=zeros(1,n); for num=1:30 error=0; for i=1:n s=0; xb=x(i); for j=1:n
if i~=j,s=s+a(i,j)*x(j);end end
x(i)=w*(b(i)-s)/a(i,i)+(1-w)*x(i); error=error+abs(x(i)-xb); end
fprintf('num=%3.o, error=%7.2e\\n',num,error) if error/3<0.000001,break;end end x
17
数值分析上机实验报告
实验三程序
a=input('请输入a的值:'); b=input('请输入b的值:'); h=input('请输入步长h:'); x=[a:h:b]; y(1)=1;
yi(1)=exp(-20*x(1)); error(1)=0; n=(b-a)/h+1; for i=2:n
k1=-20*y(i-1)*h;
k2=-20*(y(i-1)+k1/2)*h; k3=-20*(y(i-1)+k2/2)*h; k4=-20*(y(i-1)+k3)*h;
y(i)=y(i-1)+(k1+2*k2+2*k3+k4)/6; yi(i)=exp(-20*x(i)); error(i)=y(i)-yi(i);
fprintf('x[%2.0f]=.6f y[%2.0f]=.6f error[%2.0f]=.6f\\n',i-1,x(i-1),i-1,y(i-1),i-1,yi(i-1),i-1,error(i-1)) end
plot(x,y,'g',x,yi,'r')
18
yi[%2.0f]=.6f

