以下为《19-20-2数值分析实验报告(1)》的无排版文字预览,完整内容请下载
数值分析实验报告
学 院:
***
专 业:
信息与计算科学
班 级:
17级信科 1 班
学生姓名:
王某某
学 号:
***103
指导教师:
虞某某
开课时间:
2019-2020学年度第二学期
实验1:舍入误差与数值稳定性
实验目的与要求:
1. 熟悉MATLAB的上机环境,通过上机编程,复习巩固MATLB程序设计语言及上机操作指令。
2. 通过上机计算,了解舍入误差所引起的数值不稳定性。
实验内容:
1. 设,其精确值为。
(1)算法1:按下标从大到小的顺序计算,即. 编制按算法1计算的通用程序.
n=input('n=');
A=single((-1/(n+1)-1/n+3/2)/2);
sum=single(0);
for i=n:-1:2
sum=sum+(1/(i^2-1));
fprintf('s[%d]=%f\n',n-i+2,sum);
end
(2)算法2:按下标从小到大的顺序计算,即. 编制按算法2计算的通用程序.
n=input('n=');
A=single((-1/(n+1)-1/n+3/2)/2);
sum=single(0);
for i=2:n;
sum=sum+(1/(i^2-1));
fprintf('s[%d]=%f\n',n,sum);
end
(3)按两种算法分别计算,,的近似值,并指出有效数字位数。
算法1
算法2
近似值
0.749900
0.749852
有效数字位数
6
4
近似值
0.749990
0.749852
有效数字位数
4
3
近似值
0.749999
0.749852
有效数字位数
6
3
(4)上述两种方法中,哪一种方法的计算结果误差更小?同一个计算式,计算顺序不同,为什么结果不同?
算法1误差比较小,算法2会导致大数吃小数的现象容易产生较大的误差
2. 给出两种算法计算积分。
(1)分别编制两种算法的程序,输出计算结果.
算法1:
Y(n)=1/(4*n)-0.25*y*(n-1)
Y(0)=0.25*ln5
N=0,1,2……10
算法2:
Y(n-1)=1/n-4*y(n)
Y(10)=1/2(1/55+1/11)
N=10,9……1
算法1的程序:
y0=0.25*log(5);
fprintf('y[%d]=%f\n',0,y0);
for n=1:10;
y=(0.25*(1/n))-(0.25*y0);
fprintf('y[%d]=%f\n',n,y);
yo=y;
end
y[0]=0.402359
y[1]=0.149410
y[2]=0.024410
y[3]=-0.017257
y[4]=-0.038090
y[5]=-0.050590
y[6]=-0.058923
y[7]=-0.064876
y[8]=-0.069340
y[9]=-0.072812
y[10]=-0.075590
算法2的程序:
y0=(1/55+1/11)/2;
fprintf('y[%d]=%f\n',10,y0);
for n=10:-1:1;
y=1/n-(4*y0);
fprintf('y[%d]=%f\n',n-1,y);
yo=y;
end
y[10]=0.054545
y[9]=-0.118182
y[8]=-0.107071
y[7]=-0.093182
y[6]=-0.075325
y[5]=-0.051515
y[4]=-0.018182
y[3]=0.031818
y[2]=0.115152
y[1]=0.281818
y[0]=0.781818
(2)对两种算法作误差分析.
算法1是数值不稳定的
算法2是数值稳
实验2:方程求根
实验目的与要求:
1. 通过对二分法与牛顿迭代法作编程练习与上机运算,进一步体会二分法与牛顿迭代法的不同特点。
2. 通过选取不同初值,运用牛顿迭代法求解方程,理解牛顿迭代法的局部收敛性。
实验内容:
二分法的算法
给定区间/,并设/符号相反,取/为根的容许误差,/为/的容许误差。
① 令/;
② 如果/或/,则输出/,结束,否则执行③;
③ 如果/,则/,否则/,重复①,②,③。
1. 设方程,易知其有三个根,,。
(1)给定有根区间和容许误差,用二分法求解方程根至少需要对分多少次?(写出判断过程)
解:??
?2
=?
2
3
0,当??∈
?2,?1
时,??′
??
=
??
2
?1>0,所以方程在区间
?2,?1
内仅有一个实根且单调递增,由
1
2
??+1
[(?1)?
?2
]≤0.5×
10
?8
,解得??≥26.5754,所以要对分27次即可满足精度要求的近似值。
(2)根据(1)中的条件,编制用二分法求解方程根的程序.
解:第一步,先定义函数??
??
=
1
3
??
3
???
function y=f(x)
y=1/3*x.^3-x;
end
保存为M文件f.m;
第二步,编写二分法程序求解非线性方程的根
function [x,k] = erfen(a,b,eps)
delta=2e-16;k=0;
if f(a)*f(b)>=0
f(a),f(b),
return
else
x=(a+b)/2;
while abs(x-a)>=eps&abs(f(x))>=delta
if f(a)*f(x)请点击下方选择您需要的文档下载。
以上为《19-20-2数值分析实验报告(1)》的无排版文字预览,完整内容请下载
19-20-2数值分析实验报告(1)由用户“纯_月侠XX”分享发布,转载请注明出处