一、实验目的

  1. 了解误差的有关概念
  2. 掌握数值稳定性的概念
  3. 掌握秦九韶算法

二、实验平台

  1. 计算机
  2. 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, ...), 现有两种算法:

  1. 给出 I_0 = 0.0235,利用 I_n = n^2 * I_{n-1} 求解 I_1,I_2,I_3,I_4,I_5
  2. 给出 I_5 = 338.4,利用 I_{n-1} = I_n / n^2,求 I_4,I_3,I_2,I_1。

试问哪种算法是数值稳定的?给出讨论过程。

(3) 编程实现秦九韶算法,并运用于多项式求解运算。

  1. f(x) = x^5 + 3x^3 - 2x + 6 在 x = 1.1;x = 1.2;x = 1.3 处的值。
  2. 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录