数值分析课第一次作业答案answer1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 5 2 x +2 x− 7 答案:L2 (x) = 6 3。
2. 给定 f (x) = ln x 的数值表,分别用线性插值及二次插值计算 ln 0.54 的近似值。
3
x
0.4
0.5
0.6
0.7
0.8
ห้องสมุดไป่ตู้
ln x −0.916291 −0.693147 −0.510826 −0.357765 −0.223144 答案: 线性插值取节点 0.5, 0.6, L1 (x) = 6.93147(x − 0.6) − 5.10826(x − 0.5), L1 (0.54) = −0.6202186; 二次插值取节点 0.4,0.5,0.6, L2 (x) = −50 × 0.916291(x − 0.5)(x − 0.6) + 69.3147(x − 0.4)(x − 0.6) − 50 × 0.510826(x − 0.4)(x − 0.5), L2 (0.54) = −0.61531984。 3. 在 −4 ≤ x ≤ 4 上给出 f (x) = ex 的等距节点函数表,若用二次插值 求 ex 的近似值,要使截断误差不超过 10−6 ,问使用函数表的步长 h 应取 多少? 答案:考虑其中相邻三个节点 xi−1 = xi − h,xi+1 = xi + h。
2
a 6 6e+154 0 1 1
b 10 10e+154 1 -1e+5 -4
c -4 -4e+154 1 1 3.999999
-1e+155 -7e+155 1e+155 答案:第二种方法更准确,因为第一种方法是一个累加的过程。 matlab 的 x = a : h : b 和 x = a + (0 : n) ∗ h 是第二种方法实现的。 代码: format long e a = 0; b = 8; n = 9; h = (b-a)/n; x(1) = a; y(1) = a; for j = 1:n, x(j+1) = x(j) + h; y(j+1) = y(1) + j*h; end [x',y',(a:h:b)',a+(0:n)’*h] 第二章 插值法 1. 当 x = 1, −1, 2 时,f (x) = 0, −3, 4,求 f (x) 的二次插值多项式。 (计算两遍,分别用拉格朗日插值和牛顿插值)
′′′ 余项 R2 (x) = 1 6 f (ξ )(x − xi−1 )(x − xi )(x − xi−1 ),
由 f ′′′ (x) = ex ,−4 ≤ ξ ≤ 4,|f ′′′ (ξ )| ≤ e4 。 再计算 |(x − xi−1 )(x − xi )(x − xi−1 )| = |(x − xi − h)(x − xi )(x − xi + h)| = |(x − xi )3 − h2 (x − xi )| 上式必有极小点。对 x 求导,得驻点 x = xi ±
2 3 3sqrt3 h . 1 4 2 |R2 (x)| ≤ 6 e 3sqrt3 h3 。 4 2 3 −6 只要 1 6 e 3sqrt3 h ≤ 10 ,即 1 sqrt3 h.
上式 ≤
h ≤ 0.0065 时,截断误差不超过 10−6 。
4. f (x) = x7 + x4 + 3x + 1,求 f [20 , 21 , . . . , 27 ] 及 f [20 , 21 , . . . , 28 ]。 答案:利用 f [x0 , x1 , . . . , xn ] = f (n) (ξ )/n!。n = 7, 8 f [20 , 21 , . . . , 27 ] = 1,f [20 , 21 , . . . , 28 ] = 0。 5. 求一个次数不高于 4 次的多项式 P (x),使它满足 P (0) = P ′ (0) = 0, P (1) = P ′ (1) = 1,P (2) = 1。
1
2^-1, 2^0, 2^1, 0.1, 0.3, 0.3/0.1, 3 format short 结果: 3fe0000000000000, 3ff0000000000000, 4000000000000000 3fb999999999999a, 3fd3333333333333, 4007ffffffffffff, 4008000000000000 3. 使用冒号运算符创建下列表达式对应的向量。 (1)x = linspace(0, 10, 5); (2)x = linspace(−5, 5)。 答案:x = 0 : (10 − 0)/(5 − 1) : 10,x = −5 : (5 − (−5))/(100 − 1) : 5。 4. 使用 linspace 函数创建下列表达式对应的向量。 (1)x = 0 : 10; (2)x = 0 : 0.2 : 10。 答案: x = linspace(0, 10, 10−0+1), x = linspace(0, 10, (10−0)/0.2+1)。 5. 输入 x = 1, x = x ∗ 1010 现在按上箭头,接着按回车键,如此反复,出现什么现象?生成的数列 有何规律?在数 x 上溢出之前,需要执行上述过程多少次? 答案:第 1 次 1020 ,. . .,第 29 次 10300 ,第 30 次 Inf 。 6. Matlab 的最大浮点数为 1.7977e + 308,试给出一个普遍的方法求下 列各区间的中点: [1e−8, 4e+3], [1e+308, 1.5e+308], [−1.4e+308, 1.4e+308]。 答案:若利用 若利用 a + 利用
a 2 a+b 2 计算中点,则第二个区间计算时会发生上溢; b−a 2 计算中点,则第三个区间计算时会发生上溢;
+
b 2
计算中点,则三个区间计算时都不会发生上溢和下溢。
7. 写一个程序求解一元二次方程 ax2 + bx + c = 0 的根,可以选用标准 的求根公式或其变形。程序必须以三个系数为输入参数,并返回两个根的 值。考虑 a = 0 或 c = 0 的情况,并对下列例子求解:
5
∗ ∗ ∗ x∗ 1 = 1.1021,x2 = 0.031,x3 = 385.6,x4 = 56.430。
答案:五位、二位、四位、五位。 4. 计算球体积要使相对误差限为 1%,问度量半径 R 时允许的相对误 差是多少?
3 答案:V = 4 3 πR ,εr (V ) =
4πR2 ε(R) = 3 εr ( R ) 。 4 3 πR 3 球体积要使相对误差限为 1%,R 时允许的相对误差是 1 3 = 0.3333?
2 2 答案:利用重节点均差(差商)表。P (x) = 1 4 x (x − 3) 。
计算机习题: 1. 作多项式 p,以 −1,0,1 为零点,首项系数为 2,并计算 p(3)。 4
答案:p = poly ([−1, 0, 1]),s = polyval(p, 3)。 2. 已知函数在下列各点的值为 xi 0.2 0.4 0.6 0.8 1.0
ε(V ) V
=
5. 求方程 x2 − 56x + 1 = 0 的两个根,使它至少具有四位有效数字 √ 。 ( 783 ≈ 27.982) √ √ 答案:x1 = 28 + 783 ≈ 55.982,x2 = 1/(28 + 783) ≈ 0.017863。 计算机习题: 1. 分别写出 5、21、35、64 对应的二进制数,用内置函数 dec2bin 检 验正确性。 答案:101,10101,100011,1000000。 2. 把下列数转换成双精度浮点数:2−1 ,20 ,21 ,0.1、0.3、0.3/0.1,3, 并指出 0.3/0.1 和 3 有何不同,为什么? 转换成双精度浮点数的方法,在命令窗口输入: 答案: 代码: format hex
第一章 误差 1. 设 x > 0,x 的相对误差为 δ ,求 ln x 的误差。 答案:利用 ε(x)/x = δ ,和 f (x) 的(绝对)误差限是 |f ′ (x)|ε(x)。 这里 f (x) = ln x。求 ln x 的误差是 δ 。 2. 设 x 的相对误差为 2%,求 xn 的相对误差。 答案:利用 ε(x)/x = 2%,和 f (x) 的(绝对)误差是 |f ′ (x)|ε(x)。 这里 f (x) = xn 。 3. 下列各数都是经过四舍五入得到的近似数,试指出它们是几位有效 数字:
f (xi ) 0.98 0.92 0.81 0.64 0.38 求 4 次牛顿插值多项式 P4 (x) 并画图。 答案: 代码: x=0.2:0.2:1.0; y=[0.98,0.92,0.81,0.64,0.38]; n = length(y); if length(x)~=n, error('x and y are not compatible'); end D = zeros(n,n); D(:,1)=y(:); for j=2:n for i=j:n D(i,j) = (D(i,j-1)-D(i-1,j-1))/(x(i)-x(i-j+1)); end end p=D(1,1)*[zeros(1,n-1),1]; for k=2:n p=p+D(k,k)*[zeros(1,n-k),poly(x(1:k-1))]; end x=0.2:0.01:1.0; z=polyval(p,x); plot(x,z) 比较:p = polyf it(x, y, 4)。
2. 给定 f (x) = ln x 的数值表,分别用线性插值及二次插值计算 ln 0.54 的近似值。
3
x
0.4
0.5
0.6
0.7
0.8
ห้องสมุดไป่ตู้
ln x −0.916291 −0.693147 −0.510826 −0.357765 −0.223144 答案: 线性插值取节点 0.5, 0.6, L1 (x) = 6.93147(x − 0.6) − 5.10826(x − 0.5), L1 (0.54) = −0.6202186; 二次插值取节点 0.4,0.5,0.6, L2 (x) = −50 × 0.916291(x − 0.5)(x − 0.6) + 69.3147(x − 0.4)(x − 0.6) − 50 × 0.510826(x − 0.4)(x − 0.5), L2 (0.54) = −0.61531984。 3. 在 −4 ≤ x ≤ 4 上给出 f (x) = ex 的等距节点函数表,若用二次插值 求 ex 的近似值,要使截断误差不超过 10−6 ,问使用函数表的步长 h 应取 多少? 答案:考虑其中相邻三个节点 xi−1 = xi − h,xi+1 = xi + h。
2
a 6 6e+154 0 1 1
b 10 10e+154 1 -1e+5 -4
c -4 -4e+154 1 1 3.999999
-1e+155 -7e+155 1e+155 答案:第二种方法更准确,因为第一种方法是一个累加的过程。 matlab 的 x = a : h : b 和 x = a + (0 : n) ∗ h 是第二种方法实现的。 代码: format long e a = 0; b = 8; n = 9; h = (b-a)/n; x(1) = a; y(1) = a; for j = 1:n, x(j+1) = x(j) + h; y(j+1) = y(1) + j*h; end [x',y',(a:h:b)',a+(0:n)’*h] 第二章 插值法 1. 当 x = 1, −1, 2 时,f (x) = 0, −3, 4,求 f (x) 的二次插值多项式。 (计算两遍,分别用拉格朗日插值和牛顿插值)
′′′ 余项 R2 (x) = 1 6 f (ξ )(x − xi−1 )(x − xi )(x − xi−1 ),
由 f ′′′ (x) = ex ,−4 ≤ ξ ≤ 4,|f ′′′ (ξ )| ≤ e4 。 再计算 |(x − xi−1 )(x − xi )(x − xi−1 )| = |(x − xi − h)(x − xi )(x − xi + h)| = |(x − xi )3 − h2 (x − xi )| 上式必有极小点。对 x 求导,得驻点 x = xi ±
2 3 3sqrt3 h . 1 4 2 |R2 (x)| ≤ 6 e 3sqrt3 h3 。 4 2 3 −6 只要 1 6 e 3sqrt3 h ≤ 10 ,即 1 sqrt3 h.
上式 ≤
h ≤ 0.0065 时,截断误差不超过 10−6 。
4. f (x) = x7 + x4 + 3x + 1,求 f [20 , 21 , . . . , 27 ] 及 f [20 , 21 , . . . , 28 ]。 答案:利用 f [x0 , x1 , . . . , xn ] = f (n) (ξ )/n!。n = 7, 8 f [20 , 21 , . . . , 27 ] = 1,f [20 , 21 , . . . , 28 ] = 0。 5. 求一个次数不高于 4 次的多项式 P (x),使它满足 P (0) = P ′ (0) = 0, P (1) = P ′ (1) = 1,P (2) = 1。
1
2^-1, 2^0, 2^1, 0.1, 0.3, 0.3/0.1, 3 format short 结果: 3fe0000000000000, 3ff0000000000000, 4000000000000000 3fb999999999999a, 3fd3333333333333, 4007ffffffffffff, 4008000000000000 3. 使用冒号运算符创建下列表达式对应的向量。 (1)x = linspace(0, 10, 5); (2)x = linspace(−5, 5)。 答案:x = 0 : (10 − 0)/(5 − 1) : 10,x = −5 : (5 − (−5))/(100 − 1) : 5。 4. 使用 linspace 函数创建下列表达式对应的向量。 (1)x = 0 : 10; (2)x = 0 : 0.2 : 10。 答案: x = linspace(0, 10, 10−0+1), x = linspace(0, 10, (10−0)/0.2+1)。 5. 输入 x = 1, x = x ∗ 1010 现在按上箭头,接着按回车键,如此反复,出现什么现象?生成的数列 有何规律?在数 x 上溢出之前,需要执行上述过程多少次? 答案:第 1 次 1020 ,. . .,第 29 次 10300 ,第 30 次 Inf 。 6. Matlab 的最大浮点数为 1.7977e + 308,试给出一个普遍的方法求下 列各区间的中点: [1e−8, 4e+3], [1e+308, 1.5e+308], [−1.4e+308, 1.4e+308]。 答案:若利用 若利用 a + 利用
a 2 a+b 2 计算中点,则第二个区间计算时会发生上溢; b−a 2 计算中点,则第三个区间计算时会发生上溢;
+
b 2
计算中点,则三个区间计算时都不会发生上溢和下溢。
7. 写一个程序求解一元二次方程 ax2 + bx + c = 0 的根,可以选用标准 的求根公式或其变形。程序必须以三个系数为输入参数,并返回两个根的 值。考虑 a = 0 或 c = 0 的情况,并对下列例子求解:
5
∗ ∗ ∗ x∗ 1 = 1.1021,x2 = 0.031,x3 = 385.6,x4 = 56.430。
答案:五位、二位、四位、五位。 4. 计算球体积要使相对误差限为 1%,问度量半径 R 时允许的相对误 差是多少?
3 答案:V = 4 3 πR ,εr (V ) =
4πR2 ε(R) = 3 εr ( R ) 。 4 3 πR 3 球体积要使相对误差限为 1%,R 时允许的相对误差是 1 3 = 0.3333?
2 2 答案:利用重节点均差(差商)表。P (x) = 1 4 x (x − 3) 。
计算机习题: 1. 作多项式 p,以 −1,0,1 为零点,首项系数为 2,并计算 p(3)。 4
答案:p = poly ([−1, 0, 1]),s = polyval(p, 3)。 2. 已知函数在下列各点的值为 xi 0.2 0.4 0.6 0.8 1.0
ε(V ) V
=
5. 求方程 x2 − 56x + 1 = 0 的两个根,使它至少具有四位有效数字 √ 。 ( 783 ≈ 27.982) √ √ 答案:x1 = 28 + 783 ≈ 55.982,x2 = 1/(28 + 783) ≈ 0.017863。 计算机习题: 1. 分别写出 5、21、35、64 对应的二进制数,用内置函数 dec2bin 检 验正确性。 答案:101,10101,100011,1000000。 2. 把下列数转换成双精度浮点数:2−1 ,20 ,21 ,0.1、0.3、0.3/0.1,3, 并指出 0.3/0.1 和 3 有何不同,为什么? 转换成双精度浮点数的方法,在命令窗口输入: 答案: 代码: format hex
第一章 误差 1. 设 x > 0,x 的相对误差为 δ ,求 ln x 的误差。 答案:利用 ε(x)/x = δ ,和 f (x) 的(绝对)误差限是 |f ′ (x)|ε(x)。 这里 f (x) = ln x。求 ln x 的误差是 δ 。 2. 设 x 的相对误差为 2%,求 xn 的相对误差。 答案:利用 ε(x)/x = 2%,和 f (x) 的(绝对)误差是 |f ′ (x)|ε(x)。 这里 f (x) = xn 。 3. 下列各数都是经过四舍五入得到的近似数,试指出它们是几位有效 数字:
f (xi ) 0.98 0.92 0.81 0.64 0.38 求 4 次牛顿插值多项式 P4 (x) 并画图。 答案: 代码: x=0.2:0.2:1.0; y=[0.98,0.92,0.81,0.64,0.38]; n = length(y); if length(x)~=n, error('x and y are not compatible'); end D = zeros(n,n); D(:,1)=y(:); for j=2:n for i=j:n D(i,j) = (D(i,j-1)-D(i-1,j-1))/(x(i)-x(i-j+1)); end end p=D(1,1)*[zeros(1,n-1),1]; for k=2:n p=p+D(k,k)*[zeros(1,n-k),poly(x(1:k-1))]; end x=0.2:0.01:1.0; z=polyval(p,x); plot(x,z) 比较:p = polyf it(x, y, 4)。