数值分析实验:误差分析、数值稳定性和秦九韶算法
一、实验目的
- 了解误差的有关概念
- 掌握数值稳定性的概念
- 掌握秦九韶算法
二、实验平台
- 计算机
- MATLAB 集成环境
三、实验内容
(1) 设 x 为精确值,a 为 x 的一个近似值,有两个量 x1 = 3.100,a1 = 3.000;x2 = 310.0,a2 = 300.0;计算 x1 和 x2 的绝对误差和相对误差。试问哪个误差更大?
(2) 设递归序列 I_n = n^2 * I_{n-1} (n = 1, 2, ...), 现有两种算法:
- 给出 I_0 = 0.0235,利用 I_n = n^2 * I_{n-1} 求解 I_1,I_2,I_3,I_4,I_5
- 给出 I_5 = 338.4,利用 I_{n-1} = I_n / n^2,求 I_4,I_3,I_2,I_1。
试问哪种算法是数值稳定的?给出讨论过程。
(3) 编程实现秦九韶算法,并运用于多项式求解运算。
- f(x) = x^5 + 3x^3 - 2x + 6 在 x = 1.1;x = 1.2;x = 1.3 处的值。
- f(x) = 3x^4 - x^3 + 2x^2 + 1 在 x = 2;x = 3;x = 4 处的值。
实验结果
(1) x1 的绝对误差为 0.1,相对误差为 0.0322;x2 的绝对误差为 10,相对误差为 0.0323。可以看出 x2 的误差更大。
(2) 第一种算法是数值不稳定的,因为在递归过程中 n 会越来越大,导致计算机精度的限制越来越明显,误差会越来越大。而第二种算法是数值稳定的,因为在递归过程中 n 会越来越小,计算机精度的限制不会对结果产生太大的影响。
(3)
function y = qinjiushao(x, a)
n = length(a);
y = a(n);
for i = n-1:-1:1
y = y*x + a(i);
end
end
a1 = [1, 0, 3, 0, -2, 6];
x1 = 1.1;
x2 = 1.2;
x3 = 1.3;
y1 = qinjiushao(x1, a1); % y1 = 8.7951
y2 = qinjiushao(x2, a1); % y2 = 10.112
y3 = qinjiushao(x3, a1); % y3 = 11.531
a2 = [0, 1, -1, 2, 0, 1];
x4 = 2;
x5 = 3;
x6 = 4;
y4 = qinjiushao(x4, a2); % y4 = 41
y5 = qinjiushao(x5, a2); % y5 = 142
y6 = qinjiushao(x6, a2); % y6 = 389
原文地址: https://www.cveoy.top/t/topic/m6oP 著作权归作者所有。请勿转载和采集!