0计算方法及MATLAB实现简明讲义课件PPS1-2误差分析
matlab计算方法实验指导误差分析
实验一 误差分析实验1(病态问题)实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。
对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。
通过本实验可获得一个初步体会。
数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。
病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。
问题提出:考虑一个高次的代数多项式)1.1()()20()2)(1()(201∏=-=---=k k x x x x x p显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。
现考虑该多项式的一个扰动)2.1(0)(19=+x x p ε其中ε是一个非常小的数。
这相当于是对(1.1)中19x 的系数作一个小的扰动。
我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。
实验内容:为了实现方便,我们先介绍两个MATLAB 函数:“roots ”和“poly ”。
roots(a)u =其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。
设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程01121=+++++-n n n n a x a x a x a的全部根;而函数 poly(v)b =的输出b 是一个n+1维向量,它是以n 维向量v 的各分量为根的多项式的系数。
可见“roots ”和“poly ”是两个互逆的运算函数。
))20:1((;)2();21,1(;000000001.0ve poly roots ess ve zeros ve ess +===上述简单的MATLAB 程序便得到(1.2)的全部根,程序中的“ess ”即是(1.2)中的ε。
实验要求:(1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。
MATLAB教程PPT课件
矩阵元素赋值
大矩阵可以把小矩阵作为其元素
例:>> A=[A ; 11 12 13]
在原矩阵的下方加一行
如何在原矩阵的右边添加一列?
13
矩阵元素的引用
单个元素的引用
例:>> A(2,3) 利用小括弧和元素所在的位置(下标)
x ( i ) :向量 x 中的第 i 个元素 A ( i, j ) :矩阵 A 中的第 i 行,第 j 列元素
例:>> lookfor inverse
which 显示指定函数所在的目录
例:>> which eig
其它相关命令 cd、dir、more
17
Matlab 变量
变量命名原则
以字母开头 后面可以跟 字母、数字 和 下划线 长度不超过 63 个字符(6.5 版本以前为 19 个) 变量名 区分字母的 大小 写
15
Matlab帮助系统
联机帮助
help 显示指定命令的简短使用说明
例:>> help eig >> help help
详细使用帮助 doc 以网页形式显示指定命令的帮助页
例:>> doc eig
其它相关命令 helpdesk、helpwin
16
Matlab 查找命令
lookfor 按指定的关键词查询与之相关的命令
7
Matlab 的特点与功能
Matlab 丰富的工具箱(toolbox)
根据专门领域中的特殊需要而设计的各种可选工具箱 Symbolic Math Signal process PDE Image Process Optimization Statistics Control System System Identification ……
matlab教程ppt(完整版)
展示部分与整体的关系,通过扇形面积或角度表 示占比。
三维图形
01
02
03
04
三维散点图
在三维空间中展示两个变量之 间的关系,通过点的位置展示
数据。
三维曲面图
通过曲面表示两个或多个变量 之间的关系,可以展示数据的
分布和趋势。
三维等高线图
表示三维空间中数据的分布和 变化,通过等高线的形状和密
集程度展示数据。
处理运行过程中出现的错误和 异常情况。
通过优化算法和代码结构,提 高程序的运行效率。
对代码进行重新组织,使其更 易于阅读和维护。
03
MATLAB可视化
绘图基础
散点图
描述两个变量之间的关系,通过点的分布展示数 据。
条形图
比较不同类别的数据大小,通过条形的长度或高 度进行比较。
折线图
展示时间序列数据或多个变量之间的关系,通过 线条的走势呈现数据变化。
控制系统仿真
使用MATLAB进行控制系统仿真 ,模拟系统动态性能。
控制系统优化
对控制系统进行优化设计,如权 重优化、多目标优化等。
THANK YOU
感谢聆听
对图像进行几何变换,如缩放、旋转、平移 等操作。
动画制作
帧动画
通过一系列静态图像的连续播放,形 成动态效果。
路径动画
让对象沿指定路径移动,形成动态效 果。
变形动画
让对象从一个形状逐渐变形为另一个 形状,形成动态效果。
交互式动画
允许用户通过交互操作控制动画的播 放、暂停、回放等操作。
04
MATLAB在科学计算中的应用
对函数进行数值积分和微分, 用于解决定积分和微分方程问 题。
数值优化
matlab教程ppt(完整版)
数据处理
应用MATLAB的信号处理和统计 分析函数库,进行数据预处理、
特征提取和模型训练。
机器学习与深度学习
机器学习
介绍MATLAB中的各种机器学习算法,如线性回归、决策 树、支持向量机等,以及如何应用它们进行分类、回归和 聚类。
深度学习
介绍深度学习框架和网络结构,如卷积神经网络(CNN) 、循环神经网络(RNN)等,以及如何使用MATLBiblioteka B进行 训练和部署。感谢观看
THANKS
符号微积分
进行符号微分和积分运算,如极限、导数和 积分。
符号方程求解
使用solve函数求解符号方程。
符号矩阵运算
进行符号矩阵的乘法、转置等运算。
05
MATLAB应用实例
数据分析与可视化
数据分析
使用MATLAB进行数据导入、清 洗、处理和分析,包括描述性统
计、可视化、假设检验等。
可视化
利用MATLAB的图形和可视化工 具,如散点图、柱状图、3D图等
数值求和与求积
演示如何对数值进行求和与求积 操作。
数值计算函数
介绍常用数值计算函数,如sin、 cos、tan等。
方程求解
演示如何求解线性方程和非线性方 程。
03
MATLAB编程基础
控制流
01
02
03
04
顺序结构
按照代码的先后顺序执行,是 最基本的程序结构。
选择结构
通过if语句实现,根据条件判 断执行不同的代码块。
数据分析
数值计算
MATLAB提供了强大的数据分析工具,支 持多种统计分析方法,可以帮助用户进行 数据挖掘和预测分析。
MATLAB可以进行高效的数值计算,支持 多种数值计算方法,包括线性代数、微积 分、微分方程等。
MATLAB课件第一讲
这时得到了6个文件mfile1.mat~mfile6.mat, 分别保存x1~x6。这可通过load命令检验 :
clear, load mfile1 load mfile3 for i=1:6 load([‘mfile’ int2str(i)]) %读取所有6个的以mfile开头的.mat文件 end
tempdir
返回系统临时工作目录名
tempname 产生临时文件的唯一文件名
3.5: 启动和退出MATLAB
matlabrc startup quit
启动MATLAB的M文件 启动MATLAB的M文件 终止(退出)MATLAB
第一章: 练习
结合下列指令练习:
ver,help,disp,length,size,dir,cd,等
Practice !
第一章: MATLAB系统概述
3. 通用命令
1. 管理命令和函数 2. 管理变量和工作空间 3. 控制命令窗口 4. 使用文件和工作环境 5. 启动和退出MATLAB
第一章: MATLAB系统概述
3.1: 管理命令和函数
help
MATLAB函数和M文件的在线帮助
ver(version) 显示MathWorks产品的版本信息(MATLAB版本号)
1997年仲春,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版 先如今已发展到MATLAB7.1,2008,2009版本
MATLAB基本组成
8个主要部分
➢工作空间中的变量
MM编AA程TT与LLAA数BB据数开类学发型函环数境库提绘供制一二组维读曲ggsprr写aae面ppc文ghh、r23a件➢➢➢➢dd三提提M p输开估处h的维供供A二三入算于发专T命曲许运维维L/、Mg业输A线令多算e图 图n文管图B出e数 所形 形编r件理形数a据 需程l的、的据类 的技执调目型 操术行试录作效M符率文件
matlab教程ppt完整版
进行图像的裁剪、缩放、旋转等基本操作,以满 足图像处理的需求。
图像处理特效
应用滤波、边缘检测、色彩空间转换等图像处理 技术,提升图像质量或提取图像特征。
程序设计与优化
05
M文件编程基础
M文件概述
01
M文件是MATLAB中用于存储代码和数据的文本文件,具有.m
扩展名。
脚本文件与函数文件
稀疏矩阵压缩
通过压缩存储方式节省内存空间。
稀疏矩阵运算
支持基本的四则运算和矩阵函数。
稀疏矩阵应用
在数值计算、图像处理等领域有广泛应用。
数值计算与函数分
03
析
多项式运算及函数拟合
多项式表示与运算
介绍如何在MATLAB中创建多项 式、进行多项式四则运算以及多
项式求值。
函数拟合方法
详细阐述最小二乘法、梯度下降法 等函数拟合方法,并给出相应的 MATLAB实现代码。
使用plot3、mesh、surf等函数 绘制三维曲线、曲面图。
三维图形视角调整
通过view、rotate等函数调整三 维图形的观察角度,以便更好地
展示数据特征。
三维图形样式设置
设置颜色映射、透明度、光照效 果等,提升三维图形的视觉效果
。
特殊图形绘制技巧
极坐标与对数坐标绘图
使用polar、semilogx、semilogy等函数绘制极坐标图和对数坐 标图,适应不同类型的数据展示需求。
使用`dsolve`命令求解常微分方程,使用 `pdepe`等命令求解偏微分方程,分析物理 现象和工程问题。
MATLAB高级功能
07
与应用
MATLAB编译器使用指南
MATLAB编译器介绍
计算方法MATLAB讲义
3.3 三维图形 3.3.1 三维曲线 plot3(x1,y1,z1)
例3-5 绘制三维曲线。 程序如下: t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z);
3.3.2 三维曲面 1.产生三维数据 用meshgrid函数产生平面区域内的网格坐 标矩阵。 其格式为: x=a:d1:b; y=c:d2:d; [X,Y]=meshgrid(x,y);
2.3 MATLAB运算
2.3.1算术运算 1.基本算术运算 基本算术运算有:+(加)、-(减)、*(乘)、 /(右除)、\(左除)、^(乘方)。
(1) 矩阵加减运算
有两矩阵A、B,则由A+B和A-B实现矩 阵的加减运算。
(2) 矩阵乘法
有两个矩阵A、B,若A为m×n矩阵,B 为n×p矩阵,则C=A*B为m×p矩阵。
例4-4 求多项式x4+8x3-10的根。 命令如下: A=[1,8,0,0,-10]; x=roots(A)
第5章 MATLAB解方程 5.1 线性方程组求解 5.2 非线性方程数值求解 5.3 常微分方程初值问题的数值解法
5.1 线性方程组求解 5.1.1 直接解法 线性方程组Ax=b,解: x=A\b
• 例1-3 求积分 quad('x,*log(1+x)',0,1) • 例1-4 求解线性方程组。 a=[2,-3,1;8,3,2;45,1,-9]; b=[4;2;17]; x=inv(a)*b
第 2 章 MATLAB矩阵及其运算 2.1 变量和数据操作 2.2 MATLAB矩阵 2.3 MATLAB运算 2.4 矩阵分析
2.2 MATLAB矩阵
matlab教程ppt(完整版)
矩阵减法:两个相同大小 的矩阵可以进行减法运算 ,例如D=A-B。
矩阵的分解与特征值
详细描述
矩阵分解:将一个复杂的矩阵分 解为几个简单的、易于处理的矩 阵,例如LU分解、QR分解等。
特征值:矩阵的特征值是该矩阵 的一个重要的数值属性,可以用 于分析矩阵的性质和特征。
矩阵运算
介绍矩阵的创建、索引、算术 运算和逻辑运算等操作。
控制流
介绍if语句、for循环和while 循环等控制流结构的使用方法 。
02
MATLAB编程
变量与数据类型
01
02
03
变量命名规则
MATLAB中的变量名以字 母开头,可以包含字母、 数字和下划线,但不能包 含空格。
数据类型
MATLAB支持多种数据类 型,如数值型、字符型、 逻辑型和单元数组等。
matlab教程PPT(完整版)
汇报人:可编辑 2023-12-26
目 录
• MATLAB基础 • MATLAB编程 • MATLAB矩阵运算 • MATLAB图像处理 • MATLAB数值分析 • MATLAB应用实例
01
MATLAB基础
MATLAB简介
MATLAB定义
MATLAB应用领域
MATLAB是一种用于算法开发、数据 可视化、数据分析和数值计算的编程 语言和环境。
函数编写
01
02
03
04
函数定义
使用`function`关键字定义函 数,指定输入输出参数。
函数体
在函数定义中编写实现特定功 能的代码。
函数调用
通过函数名和输入参数调用自 定义函数。
数据分析方法MATLAB实现ppt课件
MATLAB数据分析方法(机械工业出版社)
第2章 数据描述性分析
5/24
虽然均值与中位数都是描述数据集中位置的
数字特征,但是均值用了数据的全部信息,中位数
只用了部分信息(位置信息),因此通常情况下均
值比中位数有效.当数据有异常值时,中位数比较
稳健。为了兼顾两者的优势,因此人们提出三均值
17/24
例2.1.3 根据2007年华东地区各高校教职工数据, 计算专任教师、 行政人员、教辅人员以及工勤人
员占在职教工的百分比,以及百分比的极差、四分 位极差以及上、下截断点.
表2.4 2007年华东地区各高校教职工数据
地 区 在职教工 专任教师 行政人员 教辅人员
上海 江苏 浙江 安徽 福建
61385 134215 67763 59149 47864
第2章 数据描述性分析
1/24
第2章 数据描述性分析
数据描述性分析是从样本数据出发,概括分析数
据的集中位置、分散程度、相互关联关系等,分析数 据分布的正态或偏态特征.描述性分析是进行数据进一 步分析的基础.对不同类型量纲的数据有时还要进行变 换,然后再作出合理分析.本章主要介绍样本数据的基 本统计量、数据的可视化、数据分布检验及数据变换 等内容.
v s / x,或 s / | x | (2.1.9) 变异系数是一个无量纲的量,一般用百分数表示. 在MATLAB中,计算方差命令var,调用格式
S=var(x); 计算标准差命令std,调用格式
d=std(x) 其中输入x是样本数据,输出S为方差,d为标准差.当 输入x是矩阵时,输出x每列数据的方差与标准差. 由均值与方差命令,可设计变异系数的计算程序为 v=std(x)./mean(x),或者v=std(x)./abs(mean(x)) 当输入x是矩阵时,输出x每列数据的变异系数.
matlab教程ppt(完整版) (3)
数值积分与微分
数值积分
使用MATLAB的`integral`函数进 行数值积分,可以选择不同的积
分方法。
数值微分
可以使用差分法或`diff`函数进行 数值微分。
符号积分与微分
使用符号计算工具箱中的函数, 如`syms`、`int`和`diff`,进行符
号积分和微分。
常微分方程求解
欧拉法
简单的一阶常微分方程的初值问题可以使用欧拉法求解。
图形可视化
MATLAB具有强大的图形可视化功能,支 持多种图形类型和交互操作。
编程语言
MATLAB是一种高级编程语言,具有丰富 的函数库和工具箱。
数据分析
MATLAB提供了多种数据分析工具,包括 数据导入、处理、分析和可视化。
MATLAB的应用领域
科学计算
广泛应用于数学、物理、工程等 领域。
控制系统设计
短时傅里叶变换
通过在时间上滑动窗口并对每个窗口内的信号进 行傅里叶变换,实现信号的时频分析。
小波变换
利用小波基函数的特性,对信号进行多尺度分析 ,从而在时频域上展示信号的细节。
信号滤波与变换
数字滤波器设计
使用MATLAB中的滤波器设计工具,如butterworth、 chebyshev等,设计数字滤波器以实现信号的滤波。
03 多目标优化
使用`gamultiobj`函数求解多目 标最优化问题。
0 最小二乘问题 4使用`lsqlin`或`lsqnonlin`函数
求解线性或非线性最小二乘问 题。
05
MATLAB在信号处理中的应用
信号的时频分析
信号的时频表示
将信号从时间域转换到时频域,以便更好地理解 和分析信号的特性。
matlab教程ppt(完整版)
• 2002年7月,推出了Matlab 6.5(R13),在这一版本中Simulink升级到了5.0,性能有 了很大提高,另一大特点是推出了JIT程序加速器,Matlab的计算速度有了明显的 提高。 • 2005年9月,推出了MAILAB 7.1(Release14 SP3),在这一版本中Simulink升级到了 6.3,软件性能有了新的提高,用户界面更加友好。值得说明的是,Matlab V7.1版 采用了更先进的数学程序库,即“LAPACK”和“BLAS”。
MATLRAeBal-TToiPmorleobcoWexsoessriknsghBolpo是ck一很set种可等实能,时已详代有见码人M生A将T成你LA工要B具做在,的线它应帮能用助够程文根序据作成工具箱了。 MATLS成Aim实BuCl时ino档k应m模p。用i型le程r生序成。程序源代码,并打包、编译所生成的源代码生 Simulink Stateflow从是现基有于的有Si限mu状lin态k 机和理Sta论te针flo对w自复动杂生成C语言程序代码的功能、
误差实验 matlab基础知识教程ppt(全)
2016/12/15
Application of Matlab Language
7
2.2 命令窗口 (续)
简单计算(续)
〘例2.2-2〙计算sin(45ْ ) >>sin(45*pi/180)
ans= 0.7071
Matalb中正弦函数sin就是常见的正弦函数。 它的参数值是以“弧度”为单位的。 pi也是Matalb的预定义变量。 pi=3.14159…
In MATLAB
y [1 2 0 5]
一次多项式拟合:
p1 = polyfit(x,y,1)
三次多项式拟合:
p3 = polyfit(x,y,3)
plot 原始数据、一次拟合曲线和三次拟合曲线
x2=1:0.1:10; y1=polyval(p1,x2) y3=polyval(p3,x2) plot( x, y, ‟*‟, x2, y1, „:‟, x2, y3)
2016/12/15
Application of Matlab Language
8
2.2 命令窗口 (续)
“clc”清除窗口显示内容的命令。
〘例2.2-4〙计算
y 2sin 0.3 1 5
的值。
>>y=2*sin(0.3*pi)/(1+sqrt(5)) y= 0.5000 〘例2.2-5〙计算 y 的值。 命令行编辑 “↑”键调回已 >>y=2*cos(0.3*pi)/(r1+sqt(5)) 输入过命令。 y= 修改。 0.3633
Application of Matlab Language 22
意义 最近的计算结果的变量名 MATLAB定义的正的极小值=2.2204e-16 圆周率π ∞值,无限大 虚数单元,sqrt(-1) 非数,0/0、∞/ ∞
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章数值分析与科学计算引论1.1 数值分析的对象、作用与特点1.2 数值计算的误差1.3 误差定性分析与避免误差危害1.4 数值计算中算法设计的技术1.5 数学软件(略)1.3 误差定性分析与避免误差危害一个工程或科学计算问题往往要运算千万次,由于每步运算都有误差,如果每步都做误差分析是不可能的,也不科学.因为误差积累有正有负,绝对值有大有小,都按最坏情况估计误差限得到的结果比实际误差大得多,这种保守的误差估计不反映实际误差积累.考虑到误差分布的随机性,有人用概率统计方法,将数据和运算中的舍入误差视为适合某种分布的随机变量,然后确定计算结果的误差分布,这样得到的误差估计更接近实际,这种方法称为概率分析法.20世纪60年代以后对舍入误差分析提出了一些新方法,较重要的有威尔金森(Wilkinson )的向后误差分析法和穆尔(Moore)的区间分析法两种.1.3.1 算法的数值稳定性用一个算法进行计算,如果初始数据误差在计算中传播 使计算结果的误差增长很快,这个算法就是数值不稳定的.计算 并估计误差. ),1,0(e e 11==⎰-n dx x I xn n 由分部积分可得计算 的递推公式n I ),,2,1(11 =-=-n nI I n n 若计算出 , 0I 代入(3.2),可逐次求出的值. ,,21I I (3.1).e 1ee1110---==⎰dx I x例5 (依“反对幂指三”顺序分部!)而要算出 就要先计算 . 0I 1e -,!)1(!2)1()1(1e 21k k-++-+-+≈- 并取 , 7=k 则得 , 3679.0e 1≈-3679.0e17-=-R 计算过程中小数点后第5位的数字按四舍五入原则舍入.若用泰勒多项式展开部分和用4位小数计算, 截断误差!81≤.10414-⨯<(泰勒展开提供了一种计算近似值的方法!)当初值取为 时,用(3.1)递推00~6321.0I I =≈⎩⎨⎧=-==-).,2,1(~1~;6321.0~)A (10 n I n I I n n 计算结果见表1-1的 列. nI ~ 用 近似产生的误差 就是初值误差, 0~I 0I 000~I I E -=它对后面计算结果是有影响的. ),,2,1(11=-=-n nI I n n (3.1) .e 1e e 11010---==⎰dx I x 计算公式为7.55290.170440.728080.207430.216070.264220.112060.367910.148050.63210计算)(A)(用I n 计算)(A)(用I n 11表n n -↓↓-~~从表中看到 出现负值, 8~I 这与一切 相矛盾.0>n I ()⎰≤≤--=+11011e min e 1edx x n n xx 因此,当 较大时,用 近似 显然是不正确的. n nI ~n I ()⎰≤≤-<1101e max edxx nxx (3.2).11+=n 实际上,由积分估值得nI<(积分中值定理估计值!)计算公式与每步计算都是正确的,计算结果错误的原因主要就是初值 有误差 ,由此引起以后各步 计算的误差 满足关系 0~I 000~I I E -=n n n I I E ~-=).,2,1(1=-=-n nE E n n 容易推得,!)1(0E n E nn -=这说明 有误差 ,则 就是的 倍误差. 0~I 0E n I ~0E !n (误差传播!数值不稳定)例如, , 8=n 若 , 401021-⨯=E 2!808>⨯=E E 这就说明 完全不能近似 了. 8~I 8I 若换一种计算方案. 由(3.3)取, 9=n ,10110e 91<<-I 1911e 21010I -⎛⎫≈ ⎪⎝⎭取算术平均值则 它表明计算公式(A )是数值不稳定的.则 (3.3)111e 1+<<+-n I n n将公式(3.2)倒过来算, 即由算出 ,公式为 *9I *1*7*8,,,I I I ⎪⎩⎪⎨⎧=-==-);1,,8,9()1(,0684.0)B (**1*9 n I n I I n n 计算结果见表1-1的 列. *n I ↑↑-↓↓-0.06847.55290.17080.170440.10350.728080.20730.207430.11210.216070.26430.264220.12680.112060.36790.367910.14550.148050.63210.63210计算)(B)(用I 计算)(A)(用I n 计算)(B)(用I 计算)(A)(用I n11表*nn *nn ~~),,2,1(11 =-=-n nI I n n (3.2) .e 1e e 11010---==⎰dx I x (设定初值,倒向算法)正向与倒向算法比较11反之,当用方案(A )计算时,尽管初值 相当准确, 0~I 此例说明,数值不稳定的算法是不能使用的.记 , **nn nI I E -=则 , **0!1n E n E =比 缩小了 *0E *n E 倍,因此,尽管 较大,但由于误差逐步缩小,故可用 !n *9E 近似 . *nI nI 由于误差传播是逐步扩大的,因而计算结果不可靠.可以看出 与 的误差不超过 .*0I 0I 410-010.6321;(A)1(1,2,).n n I I nI n -⎧=⎨=-=⎩一个算法如果输入数据有误差,而在计算过 程中舍入误差不增长,则称此算法是数值稳定的,否则称 此算法为不稳定的.在例5中,倒向算法(B )是数值稳定的, 而正向算法(A )是不稳定的.定义3 ⎩⎨⎧=-==-).,2,1(~1~;6321.0~)A (10 n I n I I n n ⎪⎩⎪⎨⎧=-==-);1,,8,9()1(1,0684.0)B (**1*9 n I n I I n n1.3.2 病态问题与条件数对一个数值问题本身, 如果输入数据有微小扰动(即误 差),引起输出数据(即问题解)相对误差很大,这就是病态问题.例如计算函数值 时, )(x f 若 有扰动,其 x *x x x -=∆相对误差为 , xx ∆函数值 的相对误差为*)(x f )(*)()(x f x f x f -,)()(/)(*)()(p C x f x f x x x x f x f x f ='≈∆-(3.3)称为计算函数值问题的条件数.p C 相对误差比值自变量相对误差一般不会太大,如果条件数 很大, p C 将引起函数值相对误差很大,出现这种情况的问题就是病态问题.()(*)(())()()f x f x f x f x x εε'-=≈根据误差传播公式例如, , n xx f =)(它表示相对误差可能放大 倍.n 如 , 10=n ,02.1*=x 自变量相对误差为 , %2函数值相对误差为 , %24 一般情况下,条件数 就认为是病态,越大 病态越严重.10≥p C p C 则有 )()(x f x f x C p '=,1n x nx x nn =⋅=-,1=x 若取 这时问题可以认为是病态的.10(1)1,(1.02) 1.02 1.24,f f ==≈(误差扩大到12倍!)⎩⎨⎧=+=+.0,1y x y x αα 解 当时,系数行列式为零,方程组无解,但当时,存在唯一解为 211α-=x 例6 线性方程组.12αα-=y 1=α1≠α 当 时,若输入数据有微小扰动(误差),则解的误差将会很大.1≈αα 例如,若取 ,则解 ;如果有误差0.001, 取 ,则解 ,误差 很大, 说明此时线性方程组是病态的.99.0=α25.50≈x α991.0*=α81.55*≈x 56.5*≈-x x 211lim 1αα→=∞-当 时, ,条件数很大,故问题是病态的. 211α-=x 实际上,由 是 的函数,由(3.3)式可求得 99.0=αα 需要注意的是,病态问题不是计算方法引起的,是数值 问题本身所固有的.因此,对数值问题首先要分析是否病态,病态问题要采取相应的数值方法,以减少误差的危害..12)()(22ααααα-='=x x C p 100=p C1.3.3 避免误差危害的若干原则数值计算中通常不采用数值不稳定算法,在设计算法时 还应尽量避免误差危害,防止有效数字损失。
原则一. 避免两相近数相减求 的小正根. 01162=+-x x 解 ,6381+=x 只有一位有效数字. *2x 6382-=x 则具有3位有效数字.若改用 例6382-=x ,06.094.78*2x ==-≈1863=+115.94≈≈(同样一张表,效果大不同!)(给出平方根表) 637.94=0.0627(分式有理化!)(优良算法设计的重要!)例 计算 (给出四位数学用表).)2cos 1(107︒-=A 由于 , 9994.02cos =)2cos 1(107 -=A 只有一位有效数字. 2sin2cos 12xx =-)2cos 1(107-=A 具有三位有效数字 (这里 ).0175.01sin = 则若利用.106)9994.01(1037⨯=-=272(sin 1)10=⨯⨯=直接计算 (二倍角公式!)36.1310⨯此例说明,可通过改变计算公式(算法)避免或减少有效数字的损失.类似地,如果 和 很接近时,由1x 2x .lg lg lg 2121x x x x =-用右边算式有效数字就不损失(虽然形式上似乎仅仅做了等价变形).1x x +-=也应该用有理化之后的右端算式代替左端.当很大时, x (避免相近数相减,防止损失有效数字!)1,1x x++一般情况,当 时,可用泰勒展开*)()(x f x f ≈+-''+-'=-2*)(2*)(*)*)((*)()(x x x f x x x f x f x f 取右端的有限项近似左端.如果无法改变算式,则采用增加有效位数进行运算; 在计算机上则采用双倍字长运算,但这要增加机器计算时间和多占内存单元. 我们更喜欢改良算法!原则二. 避免大数吃掉小数例2 利用公式∑∞=+-=+11)1()1ln(n nn n xx 的前 项和,可计算的近似值(令 ). N 若要精确到 ,需要对项求和,此时不但计 算量大,舍入误差的积累也很严重. 若改用 2ln 1=x 510-100000=N ),1253(211ln 1253++++++=-++n xx x x x x n 取 ,只要计算前10项之和,其截断误差便小于 . 1010-3/1=x (等价变形,巧用算法!)原则三. 构造适当算法,减少运算次数25x x原则四. 构造适当算法,减少运算次数31小练习1.2.3.(1). (2).4.小练习参考解答1.2.3.(1).(2).4.35。