数值分析论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数值分析与科学计算概述》研究
第一章对象描述
一、数值分析与科学计算的概念
科学计算即数值计算,科学计算是指应用计算机处理科学研究和工程技术中所遇到的数学计算。

在现代科学和工程技术中,经常会遇到大量复杂的数学计算问题,这些问题用一般的计算工具来解决非常困难,而用计算机来处理却非常容易。

科学计算是一门工具性、方法性、边缘性的学科,发展迅速,它与理论研究和科学实验成为现代科学发展的三种主要手段,它们相辅相成又互相独立,在实际应用中导出的数学模型其完备形式往往不能方便地求出精确解,于是只能转化为简化模型求其数值解,如将复杂的非线性模型忽略一些因素而简化为可以求出精确解的线性模型,但这样做往往不能满足近似程度的要求,因此使用数值方法直接求解做较少简化的模型,可以得到满足近似程度要求的结果,使科学计算发挥更大的作用。

自然科学规律通常用各种类型的数学方程式表达,科学计算的目的就是寻找这些方程式的数值解。

这种计算涉及庞大的运算量,简单的计算工具难以胜任。

在计算机出现之前,科学研究和工程设计主要依靠实验或试验提供数据,计算仅处于辅助地位。

计算机的迅速发展,使越来越多的复杂计算成为可能。

利用计算机进行科学计算带来了巨大的经济效益,同时也使科学技术本身发生了根本变化:传统的科学技术只包括理论和试验两个组成部分,使用计算机后,计算已成为同等重要的第三个组成部分。

数值分析也称计算方法,它与计算工具发展密切相关。

是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象。

为计算数学的主体部分。

在电子计算机出现以前,计算工具只有算盘,算图,算表和手摇及电动计算机。

计算方法只能计算规模较小的问题。

数值分析的任务是研究求解各类数学问题的数值方法和有关理论的学科。


值分析的过程为构造算法、使用算法、分析算法。

数值分析是研究数值问题的算法,概括起来有四点:
第一,面向计算机,要根据计算机的特点提供切实可行的计算方法。

即算法只能包括加、减、乘、除运算和逻辑运算,这些计算是计算机直接能处理的运算。

第二,有可靠的理论分析,能任意逼近并达到精度要求,对近似算法要保证收敛性和数值稳定性,还要对误差进行分析,这些都建立在相应数学理论的基础上。

第三,要有好的计算复杂性,时间复杂性好是指节省计算时间,空间复杂性好是指节省存储空间,这也是建立算法要研究的问题,它关系到算法能否在计算机上实现。

第四,要有数值实验,即任何一个算法除了从理论上要满足上述三点外,还要通过数值试验证明是行之有效的。

二、数值计算的相关概念与理论
1 误差来源与分类
所谓误差就是测得值与被测量的真值之间的差,可以表示为:
误差=测得值-真值
误差来源:
(一)测量装置误差
(二)环境误差
(三)方法误差
(四)人员误差
误差分类:
将无限位字长的精确数处理成有限位字长近似数的处理方法称为摄入方法,称为舍入误差。

用计算机解决科学计算问题首先要建立数学模型,它是对被描述的实际问题进行描述、简化而得到的,因而是近似的。

我们把数学模型与实际问题之间出现的这种误差称为模型误差。

在数学模型中往往还有一些根据观测得到的物理量,如温度、长度、电压等,这些参量显然包含误差,这种由观测产生的误差称为观测误差,在数值分析中不
讨论这种误差,数值分析只研究用数值方法求解数学模型产生的误差。

当数学模型不能得到精确解时,通常要用数值方法求它的近似解,其近似解与精确解之间的误差称为截断误差或方法误差。

2 绝对误差与相对误差
某量值的测得值和真值之差为绝对误差。

通常简称为误差,即:
绝对误差=测得值-真值
设*
x 为准确值x 的一个近似值,称
*x x e -=
为近似值*x 的绝对误差(Absolute Error),简称误差。

当ε≤e 时,则称ε为*x 的一个绝对误差限。

设*x 为准确值x 的近似值,称绝对误差与准确值之比为近似值*
x 的相对误差(Relative Error),记为r e ,即
x x x x e e r *
-== 若r r e ε≤,则称r ε为*
x 的一个相对误差限。

由于绝对误差可能为正值或负值,因此相对误差也可能为正值或负值。

对于相同的被测量,绝对误差可以评定其测量精度的高低,但对于不同的被测量以及不同的物理量,绝对误差就难以评定其测量精度的高低,而采用相对误差来评定较为确切。

例1 已知近似数*x 有两位有效数字,试求其相对误差限。

解 利用有效数字与相对误差的关系。

可知2=n 且这里1a 是1到9之间的数字。

()%51012110211211***=⨯⨯≤⨯≤-=
+-+-n r a x x x x ε
3 有效数字
含有误差的任何近似数,如果其绝对误差界是最末位的半个单位,那么从这个近似数左方起第一个非零的数字,称为第一位有效数字。

如果近似值*x 的误差限是n -⨯105.0,则称*x 准确到小数点后第n 位,并从第一个非零数字到这一位的所有数字均称为有效数字。

例2 问3.142,3.141,722
分别作为π的近似值各具有几位有效数字? 解 因为π=3.141 592 65…
记 1x =3.142,2x =3.141,3x =722。

由 00040.0142.314159
.31-=-=-x π知 3
1410211021--⨯≤-<⨯x π
因而1x 具有4位有效数字。

由 00059.0141.314159
.32-=-=-x π知 2
2310211021--⨯≤-<⨯x π
因而2x 具有3位有效数字。

由 00126.014285.314159.3722-=-=-π知 2
310217221021--⨯≤-<⨯π
因而3x 具有3位有效数字。

4 有效位数与误差的关系
从第一位有效数字起到最末一位数字止的所有数字,不论是零或者非零的数字,都叫有效数字。

设近似数*
x 具有n 位有效数字,则有
n
r a e -⨯≤111021
即有效数字位数越多,则*
x 的绝对误差与相对误差越小。

例3 已知近似数的相对误差限为0.3%,问*x 至少有几位有效数字?
解 设1a 是1到9之间的数字,则有
()()()1112*
10121101921102110003%3.0--⨯+≤⨯+⨯=⨯<==εa x r 设*x 具有n 位有效数字,令11-=+-n ,则2=n ,从而*x 至少具有2位有效数字。

5 误差定性分析与避免误差危害
数值运算中的误差分析是个很重要而复杂的问题。

一个工程或科学计算问题往往要运算千万次,由于每步运算都有误差,如果每步都做误差分析是不可能的,也不科学,因为误差积累有正有负,绝对值有大有小,按照最坏情况估计误差限得到的结果比实际误差大很多,这种保守的误差估计不反映实际误差积累。

考虑到误差分布的随机性,有人用概率统计方法,将数据和运算中的舍入误差视为适合某种分布的随机变量,然后确定计算结果的误差分布,这样得到的误差估计更接近实际,这种方法称为概率分析法。

20世纪60年代以后对舍入误差估计提出了一些新方法,较重要的是威尔金森的向后误差分析法和穆尔的区间分析法。

但都不是十分有效,到目前为止舍入误差的定量估计尚无有效的分析方法,为确保数值计算的正确性通常只进行定性分析。

一个算法如果输入数据有误差,而在计算过程中舍入误差不增长,则称此算法是数值稳定的;否则称此算法是不稳定的。

6 为了避免误差危害,在数值计算中应注意的一些问题:
(1)要使用数值稳定的计算公式;
(2)要避免两个相近的数相减;
(3)要避免除数的绝对值远小于被除数的绝对值;
(4)要防止大数“吃掉”小数的现象;
(5)要尽量简化计算步骤,减小运算次数。

三、数值计算中算法的设计
在数值计算中算法设计好坏不但影响计算结果的精度,还可大量节省计算时间。

下面介绍几个具有代表性的算法,其基本原则都是数值分析中常用的。

(1)多项式求值的秦九韶算法:这是计算多项式值最好的算法,他是我国南宋数学家秦九韶于1247年提出的,国外称此算法为Hernor算法,是1819年给出的,比秦九韶算法晚500多年。

(2)迭代法与开放求值:迭代法是一种按同一公式重复计算逐次逼近真值的算法。

无论在应用上或理论上,求解线性或非线性方程而言,迭代法都是重要的方法。

(3)以直代曲与化整为零:在数值计算中不取极限,知识采用以直代曲与化整为零求和的思想,通常可以将非线性问题线性化。

在局部范围内用直线近似曲线是常用的方法。

(4)加权平均的松弛技术:松弛技术是计算方法中一种提高收敛速度的有效方法。

四、数值分析与科学计算概述的国内外研究进展
重理论轻实践是传统数值分析教学存在的问题之一,从20世纪90年代以来,数值分析教学内容的创新实践成为数值分析教学的主要研究方向。

数值计算方法除了具有建立在相应数学理论基础上的可靠的理论分析,还要有数值实验,即任何一个数值算法除了满足理论上的要求,还要通过数值试验证明是行之有效的。

数值分析教学第一线的研究者对国内外数值分析的研究前沿及改革动向应时关注,推动了数值分析课程建设的实质性改革。

运用一些数学软件进行数值图形图像处理,可以应用于汽车、飞机等的外形设计,计算机的图形、图像模式识别与处理,样条技术的引入使得外形设计、图像处理越来越光滑、美观。

数值分析可以作为数学建模与数学试验之间的桥梁与媒介,为学生使用计算机解决科学与工程中的实际问题打下良好的理论基础与应用基础,国外数值分析教材都选取了大量来自实际的问题,如人口增长模型、传染病模型、虫口模型、经济增长模型等,让学生感觉数值分析内容的新鲜有趣。

事实上,诸如金属合金配方、化学反应速度、污染物扩散等都可以作为数值分析的模型实例。

通过选取
一些贴近事实的问题,使得数值分析与工程实际有机结合,实现数值分析与科学研究零距离对接。

五、数学软件
在众多的数学软件中,就软件的内核而言,可分为两大类。

一类是数值计算型软件,如Matlab、Xmath、Gauss等,这类软件有较强的计算能力和可视化功能,运行效率较高。

另外一类是数学分析型软件,如Mathematica、Maple等,它们处理符号运算的功能特别强,可得到解析符号解和任意精度解。

MATLAB是MATrix LABoratory的缩写,即矩阵实验室,它整合了非线性方程组、数值积分、三次样条函数、曲线拟合、最优化、常微分方程和绘图工具等功能,但它主要是以EISPACK和LINPACK子程序为基础。

MATLAB目前是由C和汇编语言编写的,它的基本结构是执行矩阵运算,是一个对求解线性方程特别有用的功能强大的自包容系统。

Mathematica的原始系统是由美国物理学家Stephen Wolfram领导的一个小组开发来进行量子力学研究的,软件开发的成功促使Stephen Wolfram推出系统的不同版本。

目前国内最常见的是3.0版本和4.0版本。

迄今为止,Mathematica 已经广泛的应用到工程、应用数学、计算机科学、财经、生物、药学、生命科学以及太空科学等领域。

数以万计的论文、科学报告、期刊杂志、图书资料、计算机绘图等都是Mathematica的杰作。

Mathematica是一个交互式、集成化的计算机软件系统。

它的主要功能包括三个方面:符号演算、数值计算、图形功能。

4.0版本对Mathematica系统做出了重大的改进,尤其是在处理大容量数据方面,比以前版本增强了许多。

另外,在代数、语言和用户界面等方面,也做出了很大的改进,使其运行效率更好,执行速度更快。

第二章算法研究
一、插值法的定义
目前,主要的插值法有Lagrange插值、Newton插值、Hermite插值、三次样条插值。

设函数)(x f y =在区间],[b a 上有定义,且已知在点b x x a n ≤≤≤≤ 0上的值i i y x f =)(),,1,0(n i =,若存在一简单函数)(x ϕ,使
i i y x =)(ϕ),,1,0(n i =
成立,就称)(x ϕ为)(x f 的插值函数(Interpolating Function),点i x ),,1,0(n i =为插值节点(Interpolation Knot),包括插值节点的区间],[b a 称为插值区间(Interpolation Interval),求插值函数)(x ϕ的方法称为插值法(Interpolation Method)。

若)(x n ϕ为次数不超过n 的代数多项式
n n n x a x a a x +++= 10)(ϕ
其中的i a ),,1,0(n i =为实数,就称)(x n ϕ为插值多项式(Interpolation Ploynomial),相应的插值法称为多项式插值。

若)(x n ϕ为分段的多项式,就称为分段插值(Piecewise Interpolation)。

2. 插值多项式的原理
定理:设函数)(x f y =在区间],[b a 上有定义,且在],[b a 上1+n 个不同点
,,10x x n x , 上的函数值)(i i x f y =),,1,0(n i =,
则存在一个至多n 次的插值多项式
n n n x a x a a x +++= 10)(ϕ
通过给定的1+n 个点(,())i i x x ϕ),,1,0(n i =,其中的i a ),,1,0(n i =为实数。

事实上,n 次多项式(2-2)中有1+n 个待定系数i a ),,1,0(n i =,由插值条件(2-1)可以得到1+n 个方程
⎪⎪
⎩⎪⎪⎨⎧=++++=++++=++++n
n n n n n n n n n y x a x a x a a y x a x a x a a y x a x a x a a 22101121211000202010 (2-3) 记此方程组的系数矩阵为A ,则行列式
n n n n n n x x x x x x x x x A
21211
0200111)det(=
是范德蒙特(Vandermonde )行列式。

当n x x x ,,,10 互不相同时,此行列式值不为零。

因此方程组(2-3)有唯一解。

这表明,只要这1+n 个节点互不相同,满足插值条件(2-1)的插值多项式(2-2)是存在且唯一的。

3. 插值多项式的误差估计
若在],[b a 上用)(x n ϕ近似)(x f ,则
)()()(x x f x R n n ϕ-=
称为插值多项式的截断误差(或余项)。

4. Lagrange 插值多项式
给定))(,(i i x f x ),,1,0(n i =,多项式
∑∏∑=≠==⎪⎪⎪⎭
⎫ ⎝⎛--==n i n i j j j i j i n i i i n x x x x y x l y x 000)()(ϕ 称为)(x f 关于n x x x ,,,10 的n 次Lagrange 插值多项式。

例1
5===,构造二次拉格朗日插值多项式。

(1
(2)估计误差并与实际误差相比较。


(1)以插值点(27,3), (64,4), (125,5)代入插值公式,得
∑∏∑=≠==⎪⎪⎪⎭
⎫ ⎝⎛--==2020202)()(i i j j j i j i i i i x x x x y x l y x ϕ =(64)(125)(27)(125)(27)(64)345(2764)(27125)(6427)(64125)(12527)(12564)
x x x x x x ------⨯+⨯+⨯------
2(100)
(10064)(100125)(10027)(100125)(10027)(10064)345(2764)(27125)(6427)(64125)(12527)(12564)
ϕ≈------=⨯+⨯+⨯------ 4.68782=
(2) 由误差公式有
(3)()()(27)(64)(125)3!
f R x x x x ξ=---
记8
(3)(3)310()(),()27
f x f x x f x -==在[27,125]上是单调递减函数。

(3)(3)5()(27) 5.6450310f x f -≤≈⨯
(3)()(100)(10027)(10064)(100125)0.6181316
f R ξ∴≤---≈
2(100)0.04623ϕ=。

【程序设计】
Clear[n,g]
g[n_]:=n^(1/3)
A1={{27,g[27]},{64,g[64]},{125,g[125]}};
f=InterpolatingPolynomial[A1, x];
Expand[%]//N
%/.x->100
Abs[%-g[100]]//N
5.差商(Divided Difference)的定义
设有函数)(x f , ,,,210x x x 为一系列互不相等的点,称
j i j i j i x x x f x f x x f --=)
()(],[ )(j i ≠
为)(x f 关于点j i x x ,的一阶差商(也称均差)。

一般的,称
k
k k k x x x x x f x x x f x x x f --=
-02111010]
,,,[],,,[],,,[
为)(x f 关于点k x x x ,,,10 的k 阶差商。

6.差商的性质
(1)各阶差商均具有线性性质,即若],,,[],,,,[1010k k x x x x x x ψϕ分别为
)(),(x x ψϕ关于点k x x x ,,,10 的k 阶差商,且)()()(x b x a x f ψϕ+=,则有
],,,[],,,[],,,[101010k k k x x x b x x x a x x x f ψϕ+=
(2)k 阶差商],,,[10k x x x f 可表示成)(,),(),(10k x f x f x f 的线性组合,即

=+=n
i i k i k x x f x x x f 0110)
(')
(],,,[ω
其中的∏≠=+-=n
i j j j i i n x x x 0
1)()('ω。

(3)若)(x f 是n 次多项式,则一阶差商],[j x x f 是1-n 次多项式。

7. Newton 插值多项式
]
,,,[)())((],,[))((],[)()()(1011021010000n n n x x x f x x x x x x x x x f x x x x x x f x x x f x N
----++--+-+=
称为Newton 插值多项式。

插值误差为
]
,,,,[)(]
,,,,[)())(()(1011010n n n n n x x x x f x x x x x f x x x x x x x R +=---=ω
例2、已知)(x f 的函数表如下,求向前差分表,并写出Newton 向前插值公式。

解 构造向前差分表的Mathematica 程序为:
data1 = {{0.2, 0.56}, {0.4, 0.79}, {0.6, 1.68}, {0.8, 2.54}, {1.0, 2.87}, {1.2, 3.44}}
deltaF[p_] = Module[{myD}, myD[{a1_, a2_}] := a1[[2]] - a2[[2]];
myD[{a1_, r__, a3_}] := myD[{r, a3}] - myD[{a1, r}]; myD[p]]
Table[Map[deltaF, Partition[data1, i, 1]], {i, 2, 6}] // TableForm // Chop 运行结果:
-0.23 -0.89 -0.86 -0.33 -0.57 -0.66 0.03 0.53 -0.24 0.69 0.5 -0.77 -0.19 -1.27 -1.08
求出Newton 向前插值多项式
expr =
0.56-0.23t-0.66*t(t-1)/2+0.69*t(t-1)(t-2)/2-0.19*t(t-1)(t-2)(t-3)/2
-1.08*t(t-1)(t-2)(t-3)(t-4)/2// Expand % /. t -> 10x 8.Hermite 插值多项式
设已知函数)(x f y =在1+n 互异的节点b x x x a n ≤<<<≤ 10上的函数值)(i i x f y =),,1,0(n i =和导数值)(''i i x f y =),,1,0(n i =,要求一个至多12+n 次的插值多项式)(x H ,满足条件
i i y x H =)( i i y x H ')('= ),,1,0(n i =
满足条件(2-39)的多项式)(x H 称为Hermite 插值多项式。

其形式为
12121012)()(++++++==n n n x a x a a x H x H
例3、求满足条件
的Hermite 插值多项式。

解 令2,121==x x ,代入Hermite 插值多项式
12111210
1102000201
003)()()(]1)(21[ )()()(]1)
(21[)(y x l x x y x l x x x x y x l x x y x l x x x x x H '-+---+'-+---=
这里,)(,)(0
11
11010x x x x x l x x x x x l --=--=
得 5982)(233+-+-=x x x x H
9.三次样条函数
若函数)(x S 在区间],[b a 上有连续二阶导数,且在每个小区间],[1+i i x x 上是三次多项式,其中b x x x a n =<<<= 10是给定节点,则称)(x S 为节点
i x )1,,2,1(-=n i 上的三次样条函数。

若在节点i x 上给定函数值)(i i x f y =
)1,,2,1(-=n i ,并成立
i i y x S =)( )1,,2,1(-=n i
则称)(x S 为三次样条插值函数。

第三章 插值算法的应用与比较
数值分析中不同插值法应用比较
在插值函数中,以多项式函数应用最广。

常用的多项式插值有Lagrange 插值、Newton 插值、Hermite 插值及三次样条插值等。

其中Newton 插值法是一种利用均差构造插值多项式的方法,n 次的Newton 插值多项式与n 次的Lagrange 插值多项式是恒等关系,只是表现的形式不同而已。

Hermite 插值法是一种带导数信息的插值方法,常用的有两点三次Hermite 插值,即考虑2 个插值结点的情形。

三次样条插值法是一种分段插值法,由于在插值结点处具有二阶导数连续,
从而具有更好的光滑性。

在传统的学习中,虽然都通过例题对各种插值法进行了分析,但一般都是将这些插值法孤立地进行讲解。

虽然可以掌握各种插值法的基本理论,但不能更深层地了解各插值法之间的相互联系及区别。

在实际的学习中,若通过一个具有实际背景的问题对不同插值方法进行对比分析,不仅使我们深刻理解各种插值方法,而且能培养我们的数学思想和科研能力。

下面我们以“计算断面面积”为例,对Lagrange 插值法、Newton插值法、Hermite 插值法及三次样条插值法进行对比分析。

1、提出问题
在许多工程建设中,常常会遇到计算断面的面积,如计算土方量及探测矿产储量时,都需要通过断面测量才能实现。

图1 中,实测点P1 , P2 , , Pn将地形断面曲线分成n −1段。

目前,通常使用的方法是通过插值或逼近来构造出断面的边界曲线,然后再计算断面面积,并对比分析不同插值法的计算结果。

2、分析问题
为了方便地选取插值信息,这里可以选取一条具体的边界曲线作为断面。

如采用方程为y = 4 + sin x(x∈[0, 3π])作为断面的边界曲线,选取的插值信息见表1。

为了进行对比分析,要采用不同类型的三次插值多项式,即三次Lagrange 插值多项式(三次Newton 插值多项式)、两点三次Hermite 插值多项式与三次样条插值多项式来构造边界曲线。

其中三次Lagrange 插值多项式(三次Newton 插值多项式)由于需要4 个节点,故有2 段曲线,而两点三次Hermite 插值多项式与三次样条插值多项式有6段曲线。

表1
3、解决问题
利用Matlab 软件绘制出的不同类型三次插值曲线(见图2~图4),其中实线部分表示原曲线,虚线部分表示插值曲线。

图3 两点三次Hermite 插值
观察图2~图4 的结果,通过观察可以看出,两点三次Hermite 插值多项式构造边界曲
线的效果最好,其次是三次样条插值多项式,效果最差的是三次Lagrange 插值多项式,即两点三次Hermite插值多项式计算断面面积的精度最高,其次是三次样条插值多项式,精度最差的是三次Lagrange 插值多项式。

为了进一步证实结果的正确性,分别计算利用 3 种插值多项式计算出的断面面积,然后将结果进行对比分析,见表2。

表2 三种计算结果的对比分析
由表2 可以看出,两点三次Hermite 插值多项式计算断面面积的误差最小,其次是三次样条插值多项式,误差最大的是三次Lagrange 插值多项式,即所得结论是正确的。

4、总结问题
在学习问题时,我们应该对不同问题进行比较,通过对比着学习,这样不但
能更好的掌握所学的知识,还能够掌握不同的方法的优缺点。

测量点数据如下,用lagrange插值在[-0.2,.3]区间以0.01为步长进行插值,并画出多项式
Lagrange 插值多项式matlab编码:
function y=lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
y(i)=s;
end
------------------------------------------------------
x=[0:pi/2:3*pi];
y=[4 5 4 3 4 5 4];
x0=[0:0.01:3*pi];
y0=lagrange(x,y,x0);
plot(x0,y0) hold on
plot(x0,4+sin(x0))
第四章 算法展望
在许多实际问题中,有的函数)(x f 虽然有解析表达式,但其计算复杂,使用不便。

甚至有些函数)(x f 知识给出了某些点上的函数。

因此我们希望根据给定的信息,构造出一个既能反映函数特性又便于计算的简单函数,并用其逼近,我们可以根据插值法来达到这个目的。

在全球信息化大潮的推动下,计算机技术迅速发展的今天,插值法在生活中的应用更为广泛。

当我们探索、学习过中国古代历法中插值法的基本机构后,用现代数学眼光来看,尽管多项式插值法有很多不同的形式,但其本质是一样的。

之所以出现不同类型的多项式插值法,原因在于创造者的出发点和构造思想不同。

分形插值在电涡流式位移传感器数据处理中的应用实例
电涡流式位移传感器是一种将机械位移或振动幅度转化成电信号的测量器件,它具有精度高,高频响、稳定性高、抗干扰能力强等特点。

采用电涡流式位移传感器的系统要求具有较高的精确度,在设计中我们所采用的传感器其位移与输出频率之间的如表 1 所示。

表 1传感器位移与输出频率原始数据
利用分形插值法来构造函数 f(x) 使之通过表 1 中的数据点。

首先建立笛卡儿坐标系,令表中的(X ,Y )是坐标点。

m=8, n=9 ,(x0 , ,y0)=(0.3,2.523),(x1,y1)=(0.5,2.502), x2 ,y2)=(1.0,2.461),(x3,y3)=(1.5,2.432),(x4 ,y4)=(2.0,2.410),(x5 ,y5)=(3.0,2.380), (x6,y6)=(4.0,2.362),(x7,y7)=(5.0,2.351),(x8,y8)=(6.0,2.343),根据(5)式构造计算仿射变换的系数,
并通过(3)式计算出 IFS。

通过(6)式的迭代关系,我们得到分行插值函数 f (x)的图像如图 1
实现以上算法的程序如下:
void CFractalView ;OnFractalChazhi()
{
//设置画图现实窗口显示标题
Win_Title="分形插值";
GetDocument()->SetTitle(Win_Title);
//设置画图环境
cclientDC.dlgDC(this)
// 定义变量
int Itn=100000,I,NUM=9,RandomN=0; D[]=[0.2,0.5,0.7];
double NewX,NewY,XO,YO,
/定义插值点
X[]=[0,240,330,600],
Y[]=[0,120,240,90],
A[9],B,C[9],D[9],E[9],F[9];
//定义数据计算出剪切系数
For(i=1;i<=NUM;i++)
{
B=X[NUM]-X[0];
A[i]=(X(i)-X[i-1])/B
E[i]=(X[NUM]*X[i-1]-X[0]*X[i])/B
C[i]=(Y[i]-Y[i-1]-D[i]*(Y[NUM]-Y[0]))/B
F[i]=(X[NUM]*Y[i-1]-X[0]*Y[i]-D[i]*(X[NUM]*Y[0]-x[0]*Y[N UM]))/B;
}
dlgDC.MoveTo(50,50);
dlgDC.LineTo(50,500);
dlgDC.LineTo(750,500);
i=0;XO=0;YO=0;
//迭代画图
while(i<Itn)
{
RandomN=(int)(NUM*rand()/RAND_MAX)+1;
NewX=A[RandomN]*xo+E[RandomN];
NewY=C[RandomN]*x0+d[RandomN]*YO+F[RandomN];
XO=NewX;
YO=NewY;
dlgDC.setPixel(50+(int)xo,500-(int)YO,RGB(0,0,0));
i++;
}
}
第五章学习思考
一、《数值分析与科学计算概述》相关的问题
1.什么是数值分析?它与数学科学和计算机的关系如何?
数值分析也称计算数学,是教学科学的一个分支,它研究用计算机求解各种数学问题的数值计算方法及其理论与软件的实现,用计算机求解科学技术问题通常经历以下步骤:
①.根据实际问题建立数学模型.
②.由数学模型给出数值计算方法.
③.根据计算方法编制算法程序(数学软件)在计算机上算出结果.
第一步建立数学模型通常是应用数学的任务,而第②,③步是计算数学的任务,也就是数值分析研究的对象,它涉及数学的各个分支,内容十分广泛。

作为“数值分析”课程,只介绍其中最基本、最常用的数值计算方法以及理论,它包括插值与数据逼近,数值微分与积分,线性方程组的数值求解,非线性方程与方程组求解,特征值计算,常微分方程数值解等。

它们都是以数学问题为研究对象,只是不像纯数学那样只研究数学本身的理论,而是把理论与计算紧密结合,着重研究数学问题的数值算法以及理论。

与其他数学课程一样,数值分析也是一门内容丰富,研究方法深刻,有自身理论体系的课程,既有纯数学高度抽象性与严密科学性的特点,又有应用广泛性与实际试验高度技术性的特点,是一门与计算机使用密切结合实用性很强的数学课程。

2.何谓算法?如何判断数值算法的优劣?
算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。

或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。

能用计算机计算的“数值问题”是指输入数据(即问题中的自变量与原始数据)与输出数据(结果)之间函数关系的一个确定而无歧义的描述,输入输出数据可用有限维向量表示。

数值问题可用各种数值方法求解,这些数值方法就是算法。

对于一个给定的数值问题可以有许多不同的算法,它们都能给出近似答案,但需要的计算量和得到的精确程度可能相差很大。

一个面向计算机,有可靠理论分析且计算复杂性好的算法就是一个好算法。

理论分析主要是连续系统的离散化及离散型方程的数值问题求解,它包括误差分析、稳定性、收敛性等基本概念,它刻画了算法的可靠性、准确性。

计算复杂性包含计算时间复杂性与存储空间复杂性两个方面。

在同一规模、同一精度条件下,计算时间少的算法为计算时间复杂性好,而占用内存空间少的算法为存储空间复杂性好,它实际上就是算法中计算量与存储量的分析。

对解同一问题的不同算法其计算复杂性可能差别很大。

3.列出科学计算中误差的三个来源,并说出截断误差与舍入误差的区别。

模型误差:数学模型与实际问题之间出现的这种误差称为模型误差。

相关文档
最新文档