用递推公式计算定积分 实验目的: 1.充分理解不稳定的计算方法会造成误差的积累,在计算过程中会导致误差的迅速增加,从而使结果产生较大的误差
2.在选择数值 计算公式来进行近似计算时,应学会选用那些在计算过程中不会导致误差迅速增长的计算公式
3.理解不稳定的计算公式造成误差积累的来源及具体过程; 4.掌握简单的matlab 语言进行数值计算的方法
实验题目: 对n=0,1,2,…,20,计算定积分: 实验原理: 由于y(n)= = – 在计算时有两种迭代方法,如下: 方法一: y(n)= – 5*y(n-1),n=1,2,3,…,20; 取 y(0)= = ln6-ln5 ≈ 0
182322 方法二: 利用递推公式:y(n-1)=- *y(n),n=20,19,…,1
而且,由 = * ≤≤ * = 可取:y(20)≈ *()≈0
008730
实验内容: 对算法一,程序代码如下: function [y,n]=funa() syms k n t; t=0
182322; n=0; y=zeros(1,20); y(1)=t; for k=2:20 y(k)=1/k-5*y(k-1); n=n+1; end y(1:6) y(7:11) 对算法二,程序代码如下: %计算定积分; %n--表示迭代次数; %y 用来存储结果; function [y,n]=f(); syms k y_20; y=zeros(21,1); n=1; y_20=(1/105+1/126)/2; y(21)=y_20; for k=21:-1:2 y(k-1)=1/(5*(k-1))-y(k)/5; n=n+1; end 实验结果: 由于计算过程中,前11 个数字太小,后9 个数字比较大,造成前面几个数字只显示0
0000 的现象,所以先输出前6 个,再输出7—11 个,这样就能全部显示出