数值计算方法实验指导(Matlab版)
- 格式:docx
- 大小:140.19 KB
- 文档页数:76
《数值计算方法》实验指导
(Matlab 版)
肇庆学院数学与统计学学院
计算方法课程组
1. 实验名称
实验1 算法设计原则验证(之相近数相减、大数吃小数和简化计算步骤) 2.
实验题目
有效数字的损失.
123 )与1000个较小的数(3 10
15
)的和,验证
大数吃小数的现象.
(3)分别用直接法和秦九韶算法计算多项式
P(x) a 0x n a 1x n 1
在x =1.00037 处的值•验证简化计算步骤能减少运算时间.
n 1 对于第(3)题中的多项式P (x ),直接逐项计算需要n (n 1) 2 1
次乘法
和n 次加法,使用秦九韶算法
P(x) (((a °x ajx a 2)x
a .
则只需要n 次乘法和n 次加法.
3.
实验目的
验证数值算法需遵循的若干规则. 4.
基础理论
设计数值算法时,应避免两个相近的数相减、防止大数吃小数、简化计算步骤减少运算 次数以减少运算时间并降低舍入误差的积累.
两相近的数相减会损失有效数字的个数,
用一
《数值计算方法》实验 1报告
班级: 20xx 级 XXXXx 班
学号: 20xx2409xxxx
姓名: XXX 成绩:
⑴取 z 1016
,计算z 1 Z 和 1/(、z 1
Z),验证两个相近的数相减会造成
(2)按不同顺序求一个较大的数(
a
n 1
X a n
个大数依次加小数,小数会被大数吃掉,乘法运算次数太多会增加运算时间.
5.实验环境
操作系统:Win dows xp ;程序设计语言:Matlab
6.实验过程
(1)直接计算并比较;
(2)法1 :大数逐个加1000个小数,法2 :先把1000个小数相加再与大数加;
(3)将由高次项到低次项的系数保存到数组A[n]中,其中n为多项式次数.
7.结果与分析
(1)计算的~1V Z = _______________________________ ,1/( ~1 < z) ____________________ . 分析:
(2)123逐次加1000个3 10 6的和是_________________________ ,先将1000个3 10 6相
加,再用这个和与123相加得_______________________ .
分析:
(3)计算__________ 次的多项式:
直接计算的结果是___________________ ,用时___________________ ;
用秦九韶算法计算的结果是____________________ ,用时 ___________________
分析:
8.附录:程序清单
(1)两个相近的数相减.
°%*************************************************************
%* 程序名:ex1_1.m
°%*程序功能:验证两个相近的数相减会损失有效数字个数
Q%************************************************************* z=1e16;
x,y
(2)大数吃小数
Q%*************************************************************
%程序名:ex1_2.m
%
*程序功能:验证大数吃小数的现象• °%************************************************************* 0
clc; %清屏
clear all; %释放所有内存变量
format Io ng; %按双精度显示浮点数
z=123; %大数
t=3e-15; %小数
大数依次加小数
x=z; %
% 重复1000次给x中加上t
y=0; %先累加小数
% 重复1000次给y中加上t y=z + y; %再加到大数
x,y
(3)秦九韶算法 °%*************************************************************
%* 程序名:ex1_3.m
°%* 程序功能:验证秦九韶算法可节省运行时间
•
Q%*************************************************************
clc;
%清屏
clear all;
%释放所有内存变量
A=[8,4,-1,-3,6,5,3,2,1,3,2,-1,4,3,1,-2,4,6,8,9,50,-80,12,35,7,-6,42,5,6,23,74,65,55,80,78 ,77,98,56];
A(10001)=0;
%扩展到10001项,后面的都是分量 0
% A 为多项式系数,从高次项到低次项
x=1.00037;
n=9000;
% n 为多项式次数
%直接计算
begi ntime=clock;
format Io ng;
%按双精度显示浮点数
%开始执行的时间