一、实验目的

  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) 分析实验内容,写出程序大致框架或完整的程序代码。 (2) 进入MATLAB集成环境。 (3) 编辑程序并进行保存。 (4) 运行程序,若有错误,修改错误后再次运行,如此反复进行到不显示出错为止。 (5) 检查程序输出结果。

五、实验结果

clc;
clear;

% 计算x1的绝对误差和相对误差
x1 = 3.1;
a1 = 3.0;
abs_err_x1 = abs(x1 - a1);
rel_err_x1 = abs_err_x1 / abs(x1);
fprintf('x1的绝对误差为:%f,相对误差为:%f
', abs_err_x1, rel_err_x1);

% 计算x2的绝对误差和相对误差
x2 = 310.0;
a2 = 300.0;
abs_err_x2 = abs(x2 - a2);
rel_err_x2 = abs_err_x2 / abs(x2);
fprintf('x2的绝对误差为:%f,相对误差为:%f
', abs_err_x2, rel_err_x2);



% 多项式为y=x^5+3x^3-2x+6
p = [1, 0, 3, 0, -2, 6];

% 输入的x为:x1=1.1,x2=1.2,x3=1.3
x = [1.1, 1.2, 1.3];

% 初始化结果变量
result = zeros(1, length(x));

% 使用秦九韶算法求解多项式
for i = 1:length(x)
    temp = p(1);
    for j = 2:length(p)
        temp = temp * x(i) + p(j);
    end
    result(i) = temp;
end



% 打印结果
display(result);


% 多项式为y=x^5+3x^3-2x+6
p = [3, -1, 2, 0, 1];

% 输入的x为:x1=1.1,x2=1.2,x3=1.3
x = [2, 3, 4];

% 初始化结果变量
result = zeros(1, length(x));

% 使用秦九韶算法求解多项式
for i = 1:length(x)
    temp = p(1);
    for j = 2:length(p)
        temp = temp * x(i) + p(j);
    end
    result(i) = temp;
end

% 打印结果
display(result);






%第一种
n = 5;
I = 0.0235;
for i = 1:n
    I = (i^2) * I;
    disp(['I_', num2str(i), ' = ', num2str(I)]);
end



%第二种
n = 5;
I = 338.4;
for i = 1:n
    I = I/(i^2);
    disp(['I_', num2str(5-i), ' = ', num2str(I)]);
end

六、实验结果分析

(1) x1的绝对误差为0.1,相对误差为0.0322;x2的绝对误差为10,相对误差为0.0323。可以看出x2的误差更大。

(2) 第一种算法是数值不稳定的,因为在递归过程中n会越来越大,导致计算机精度的限制越来越明显,误差会越来越大。而第二种算法是数值稳定的,因为在递归过程中n会越来越小,计算机精度的限制不会对结果产生太大的影响。

七、实验心得

本实验通过计算机编程实现了误差和稳定性的相关概念,掌握了秦九韶算法并应用于多项式求解运算。在实验过程中,我深刻认识到误差在计算机科学中的重要性,尤其是在涉及到精度要求较高的计算中,需要特别注意误差的控制和优化。同时,了解稳定性的概念也对算法的选择和设计有了更深刻的认识。实验中编写代码、调试程序也让我对MATLAB编程有了更深入的了解。通过本实验,我更加熟悉了计算机科学中的一些基本概念和方法,提高了自己的编程能力和问题解决能力。

数值计算实验:误差分析、稳定性与秦九韶算法

原文地址: https://www.cveoy.top/t/topic/m6xp 著作权归作者所有。请勿转载和采集!

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