第3章+数值与数值运算

合集下载

数值计算1-5章

数值计算1-5章

数值计算1-5章数值计算⽅法第1章绪论1.1数值计算⽅法的研究对象和特点数值计算⽅法也称数值分析,它研究⽤计算机求解各种数学问题的数值⽅法及其理论。

数学学科内容⼗分⼴泛,数值计算⽅法属于计算数学的范畴,这⾥只涉及科学和⼯程计算中常见的数学问题,如函数的插值、逼近、离散数据的拟合、数值积分与数值微分、线性和⾮线性⽅程数值解法和矩阵特征值问题数值解法和微分⽅程数值解法等.由于计算机科学与技术的迅速发展,数值计算⽅法的应⽤已经普遍深⼊到各个科学领域,很多复杂和⼤规模的计算问题都可以在计算机上进⾏计算,新的、有效的数值⽅法不断出现.现在,科学与⼯程中的数值计算已经成为各门⾃然科学和⼯程技术科学研究的⼀种重要⼿段,成为与实验和理论并列的⼀个不可缺少的环节.所以,数值计算⽅法既是⼀个基础性的,同时也是⼀个应⽤性的数学学科分⽀,与其他学科的联系⼗分紧密.⽤数值⽅法求解数学问题⾸先要构造算法,即由运算规则(包括算术运算、逻辑运算和运算顺序)构成的完整的解题过程.同⼀个数学问题可能有多种数值计算⽅法,但不⼀定都有效.评价⼀个算法的好坏主要有两条标准:计算结果的精度和得到结果所付出的代价.我们⾃然应该选择代价⼩⼜能满⾜精度要求的算法.计算代价也称为计算复杂性,包括时间复杂性和空间复杂性.时间复杂性好是指节省时间,主要由运算次数决定.空间复杂性好是指节省存储量,主要由使⽤的数据量决定.⽤计算机求数学问题的数值解不是简单地构造算法,它涉及多⽅⾯的理论问题,例如,算法的收敛性和稳定性等.除理论分析外,⼀个数值⽅法是否有效,最终要通过⼤量的数值实验来检验.数值计算⽅法具有理论性、实⽤性和实践性都很强的特点.作为数值计算⽅法的基础知识,本课程不可能⾯⾯俱到.除构造算法外,各章根据内容⾃⾝的特点,讨论的问题有所侧重.学习时我们⾸先要注意掌握⽅法的基本原理和思想,要注意⽅法处理的技巧及其与计算机的结合,要重视误差分析、收敛性和稳定性的基本理论.其次,要通过例⼦,学习使⽤各种数值⽅法解决实际计算问题,熟悉数值⽅法的计算过程.最后,为了掌握本课程的内容,还应做⼀定数量的理论分析与计算练习.1.2数值计算的误差1.2.1误差的来源应⽤数学⼯具解决实际问题,⾸先,要对被描述的实际问题进⾏抽象、简化,得到实际问题的数学模型.数学模型与实际问题之间会出现的误差,我们称之为模型误差.在数学模型中,通常要包含⼀些由观测数据确定的参数.数学模型中⼀些参数观测结果⼀般不是绝对准确的.我们把观测模型参数值产⽣的误差称为观测误差.例如,设⼀根铝棒在温度t时的实际长度为Lt,在t=0时的实际长度为L0,⽤lt来表⽰铝棒在温度为t时的长度计算值,并建⽴⼀个数学模型l t =L(1+at), a≈0.0000238/℃,其中a是由实验观测得到的常数,a∈[0.0000237,0.0000239],则称Lt -lt为模型误差,a-0.0000238是a 的观测误差.在解实际问题时,数学模型往往很复杂,因⽽不易获得分析解,这就需要建⽴⼀套⾏之有效的近似⽅法和数值⽅法.我们可能⽤容易计算的问题代替不易计算的问题⽽产⽣误差,也可能⽤有限的过程代替⽆限的过程⽽产⽣误差.我们将模型的准确解与⽤数值⽅法求得的准确解之间的误差称为截断误差或⽅法误差.例如,对函数()()35721sin 13!5!7!21!n x x x xn x x n +=-+-+++-+,该式右边有⽆限多项,计算机上⽆法计算.然⽽,根据微积分学中的泰勒(Taylor )定理,当|x |较⼩时,我们若⽤前3项作为sin x 的近似值,则截断误差的绝对值不超过77!x .⽤计算机做数值计算时,⼀般也不能获得数值计算公式的准确解,需要对原始数据、中间结果和最终结果取有限位数字.我们将计算过程中取有限位数字进⾏运算⽽引起的误差称为舍⼊误差.例如,13=0.33333…,如果我们取⼩数点后4位数字,则13-0.3333=0.000033…就是舍⼊误差.在数值分析中,除了研究数学问题的算法外,还要研究计算结果的误差是否满⾜精度要求,这就是误差估计问题.在数值计算⽅法中,主要讨论的是截断误差和舍⼊误差.1.2.2 误差与有效数字定义1.1 设x 是某实数的精确值,A x 是它的⼀个近似值,则称x -A x 为近似值A x 的绝对误差,或简称误差.Ax x x-称为x A 的相对误差.当x =0时,相对误差没有意义.在实际计算中,精确值x 往往是不知道的,所以通常把AAx x x -作为A x 的相对误差.定义1.2 设x 是某实值的精确值,A x 是它的⼀个近似值,并可对A x 的绝对误差作估计|x -A x |?A ε,则称εA 是A x 的绝对误差界,或简称误差界.称AAx ε是A x 的相对误差界.例 1.1 我们知道π=3.1415926…,若取近似值πA =3.14,则π-πA =0.0015926…,可以估计绝对误差界为0.002,相对误差界为0.0006.例 1.2 测量⼀⽊板长是954 cm,问测量的相对误差界是多⼤?解因为实际问题中所截取的近似数,其绝对误差界⼀般不超过最⼩刻度的半个单位,所以当x =954 cm 时,有A ε=0.5 cm ,其相对误差界为0.50.00052410.053%954AAx ε==< .定义1.3 设A x 是x 的⼀个近似值,将A x 写成12100.,k A i x a a a =±? , (1.1) 它可以是有限或⽆限⼩数的形式,其中i a (i =1,2,…)是0,1,…,9中的⼀个数字,1a ≠0,k 为整数.如果|x -A x |?0.5×10k n -,则称A x 为x 的具有n 位有效数字的近似值.可见,若近似值A x 的误差界是某⼀位的半个单位,该位到A x 的第⼀位⾮零数字共有n 位,则A x 有n 位有效数字.通常在x 的准确值已知的情况下,若要取有限位数的数字作为近似值,就采⽤四舍五⼊的原则,不难验证,采⽤四舍五⼊得到的近似值,其绝对误差界可以取为被保留的最后数位上的半个单位.例如|π-3.14|?0.5×210-, |π-3.142|?0.5×310-.按定义,3.14和3.142分别是具有3位和4位有效数字的近似值.显然,近似值的有效数字位数越多,相对误差界就越⼩,反之也对.下⾯,我们给出相对误差界与有效数字的关系.定理1.1 设x 的近似值A x 有(1.1)式的表达式. (1) 如果A x 有n 位有效数字,则 111×102A nAx x x a --≤; (1.2)(2) 如果()111×1021A nAx x x a --≤+, (1.3)则A x ⾄少具有n 位有效数字.证由(1.1)式可得到()111--?+≤≤?k A k a x a . (1.4)所以,当A x 有n 位有效数字时11110.5101×10,×102k nA nk Ax x x a a ----?≤=即(1.2)式得证.由(1.3)式和(1.4)式有()()nk nk AAA A a a x x x x x x ---?=?+?+≤-=-105.0101211011111,即说明A x 有n 位有效数字,(2)得证.例1.30.1%,应取⼏位有效数字?解由于因此1a =4,设有n 位有效数字,则由(1.2)式,可令11110a -?≤,即410n -?18,得n ?4.故只要对4位有效数字,其相对误差就可⼩于0.1%,4.472.例1.4 已知近似数A x 的相对误差界为0.3%,问A x ⾄少有⼏位有效数字?解设A x 有n 位有效数字,由于A x 的第⼀个有效数1a 没有具体给定,⽽我们知道1a ⼀定是1,2,…,9中的⼀个,由于()12311101000210291A Ax x x --≤<=+,故由(1.3)式知n=2,即A x ⾄少有2位有效数字.1.2.3 函数求值的误差估计对⼀元函数f(x ),⾃变量x 的⼀个近似值为A x ,以f(A x )近似f(x ),其误差界记作ε(f(A x )).若f(x )具有⼆阶连续导数,f′(A x )与f″(A x )的⽐值不太⼤,则可忽略|x -A x |的⼆次项,由Taylor 展开式得到f(A x )的⼀个近似误差界ε(f(A x ))≈|f′(A x )|ε(A x ).对n 元函数f(x 1,x 2,…,x n ),⾃变量x 1,x 2,…,x n 的近似值分别为x 1A ,x 2A ,…,x n A ,则有()()()12121,,,,,,nn A A nA k kA k k Af f x x x f x x x x x x=??-≈- ∑ ,其中()12,,,A A nA k k f f x x x x x A.因此,可以得到函数值的⼀个近似误差界()()()121,,,nAA nA kA k k Af f x x x x x εε=??≈ ∑. 特别地,对f(x 1,x 2)=x 1±x 2有ε(x 1A ±x 2A )=ε(x 1A )+ε(x 2A ).同样,可以得到ε(x 1A x 2A )≈|x 1A |ε(x 2A )+|x 2A |ε(x 1A ),()()12211222A A A A A A A x x x x x x x εεε+??≈,20A x ≠例1.5 设有长为l,宽为d 的某场地.现测得l 的近似值l A =120 m,d 的近似值d A =90 m ,并已知它们的误差界为|l-l A |?0.2 m,|d-d A |?0.2 m.试估计该场地⾯积S=ld 的误差界和相对误差界.解这⾥ε(l A )=0.2,ε(d A )=0.2,并且有2,,10800A A A S S d l S l d mld====.于是有误差界()21200.2900.242A S m ε≈?+?=,相对误差界()()420.39%10800A r A AS S l dεε=≈=.例1.6 设有3个近似数a=2.31, b=1.93, c=2.24,它们都有3位有效数字.试计算p=a+bc 的误差界和相对误差界,并问p 的计算结果能有⼏位有效数字?解 p=2.31+1.93×2.24=6.6332.于是有误差界ε(p)=ε(a)+ε(bc)≈ε(a)+|b|ε(c)+|c|ε(b) =0.005+0.005(1.93+2.24)=0.02585,相对误差界εr (p)=()0.025856.6332p pε≈≈0.39%.因为ε(p)≈0.02585<0.05,所以p=6.6332能有2位有效数字.1.2.4 计算机中数的表⽰任意⼀个⾮零实数⽤(1.1)式表⽰,是规格化的⼗进制科学记数⽅法.在计算机中通常采⽤⼆进制的数系(或其变形的⼗六进制等),并且表⽰成与⼗进制类似的规格化形式,即浮点形式±2m ×0.β1β2…βt ,这⾥整数m 称为阶码,⽤⼆进制表⽰为m=±α1α2…αs , αj =0或1(j=1,2,…,s),s 是阶的位数.⼩数0.β1β2…βt 称为尾数,其中β1=1,βj =0或1(j=2,3,…,t),t 是尾数部位的位数.s 和t 与具体的机器有关.由于计算机的字长总是有限位的,所以计算机所能表⽰的数系是⼀个特殊的离散集合,此集合的数称为机器数.⽤浮点⽅式表⽰的数有⽐较⼤的取值范围.⼗进制输⼊计算机时转换成⼆进制,并对t 位后⾯的数作舍⼊处理,使得尾数为t 位,因此⼀般都有舍⼊误差.两个⼆进制数作算术运算时,对计算结果也要作类似的舍⼊处理,使得尾数为t 位,从⽽也有舍⼊误差.在实现算法时,计算的最后结果与算法的精确解之间的误差,从根本上说是由机器的舍⼊误差造成的,包括输⼊数据和算术运算的舍⼊误差.因此有必要对计算机中数的浮点表⽰⽅法和舍⼊误差有⼀个初步的了解.有时为了分析某⼀个计算⽅法可能出现的误差现象,为了适应⼈们的习惯,我们会采⽤⼗进制实数系统进⾏误差分析.1.3 数值稳定性和要注意的若⼲原则 1.3.1 数值⽅法的稳定性实际计算时,给定的数据会有误差,数值计算中也会产⽣误差,并且,这些误差在进⼀步的计算中会有误差传播.因此,尽管数值计算中的误差估计⽐较困难,我们还是应该重视计算过程中的误差分析.定义 1.4 对于某个数值计算⽅法,如果输⼊数据的误差在计算过程中迅速增长⽽得不到控制,则称该算法是数值不稳定的,否则是数值稳定的.下⾯举例说明误差传播的现象.例 1.7 计算积分值105nxdx I x =+?, n=0,1,…,6.解由于要计算系列的积分值,我们先推导In 的⼀个递推公式.由1110555n n n n x x I I dx x --++=+?111n xdx n-==,可得下⾯两个递推算法.算法1:115n n I I n-=-,n=1,2, (6)算法2:1115n n I I n -??=-,n=6,5, (1)直接计算可得0ln 6ln 5I =-.如果我们⽤4位数字计算,得I 0的近似值为0I *=0.1823.记n n n E I I *=-,I n *为In 的近似值.对算法1,有15n n E E -=-=…=()5n-E 0.按以上初始值I0的取法有|E 0|?0.5×410-,事实上|E 0|≈0.22×410-.这样,我们得到|E 6|=65|E 0|≈0.34.这个数已经⼤⼤超过了I 6的⼤⼩,所以6I *连⼀位有效数字也没有了,误差掩盖了真值.对算法2,有E k-n =15n ??-E k ,|E 0|=615??|E 6|.如果我们能够给出I 6的⼀个近似值,则可由算法2计算I n (n=5,4,…,0)的近似值.并且,即使E 6较⼤,得到的近似值的误差将较⼩.由于()()11011616551kkk xxI d d x x k k =<<=++??,因此,可取Ik 的⼀个近似值为()()11126151k I k k *=+?? ? ?++??. 对k=6有6I *=0.0262.按0I *=0.1823和6I *=0.0262,分别按算法1和算法2计算,计算结果如表1-1,其中()1n I 为算法1的计算值, ()2n I 为算法2的计算值.易知,对于任何⾃然数n,都有0表1-1n()1nI()2nInI (4位)0 0.1823 0.1823 0.18231 0.0885 0.0884 0.08842 0.0575 0.0580 0.05803 0.0458 0.0431 0.04314 0.0210 0.0344 0.03435 0.0950 0.0281 0.02856-0.3083 0.0262 0.0243当然,数值不稳定的⽅法⼀般在实际计算中不能采⽤.数值不稳定的现象属于误差危害现象.下⾯讨论误差危害现象的其他表现及如何避免问题.1.3.2 避免有效数字的损失在数值计算中,参加运算的数有时数量级相差很⼤,⽽计算机位数有限,如不注意,“⼩数”的作⽤可能消失,即出现“⼤数”吃“⼩数”的现象. 例1.8 ⽤3位⼗进制数字计算x =101+δ1+δ2+…+δ100,其中0.1?δi ?0.4,i =1,2, (100)解在计算机内计算时,要写成浮点数形式,且要对阶.如果是101与δ1相加,对阶时,101=0.101×103,δ1=0.000×103.因此,如果我们⾃左⾄右逐个相加,则所有的δi 都会被舍掉,得x ≈101.但若把所有的δi 先加起来,再与101相加,就有111=101+100×0.1?x ?101+100×0.4=141.可见,计算的次序会产⽣很⼤的影响.这是因为⽤计算机计算时,在运算中要“对阶”,对阶引起了⼤数吃⼩数的现象.⼤数吃⼩数在有些情况下是允许的,但有些情况下则会造成谬误.在数值计算中,两个相近数相减会使有效数字严重损失.例1.9 求实系数⼆次⽅程20ax bx c ++=的根,其中b 2-4ac>0,ab ≠0. 解考虑两种算法. 算法1:1,22x a=算法2:(12b sign b x a--=, 21c x ax =,其中sign 表⽰取数的符号,即()1,0,0,0,1,0.b sign b b b >??==??-对算法1,若ac b 42>>,则是不稳定的,否则是稳定的.这是因为在算法1中分⼦会有相近数相减的情形,会造成有效数字的严重损失,从⽽结果的误差很⼤.算法2不存在这个问题,在任何情况下都是稳定的.因此称算法1是条件稳定的,算法2是⽆条件稳定的.例如,对于⽅程262.10 1.0000x x ++=,⽤4位有效数字计算,结果如下:算法1:x 1=-62.08, x 2=-0.02000. 算法2:x 1=-62.08, x 2=-0.01611.准确解是x 1=-62.083892…,x 2=-0.016107237….这⾥,ac b 42>>,所以算法1不稳定,舍⼊误差对x 2的影响⼤.在进⾏数值计算时,如果遇到两相近数相减的情形,可通过变换计算公式来避免或减少有效数字的损失.例如,如果|x |≈0,有变换公式1cos sin sin 1cos x x xx-=+.如果x 1≈x 2,有变换公式1122lg lg lgx x x x -=.如果x 〉〉1,有变换公式.此外,⽤绝对值很⼩的数作除数时,舍⼊误差会很⼤,可能对计算结果带来严重影响.因此,要避免除数绝对值远远⼩于被除数绝对值的除法运算.如果⽆法改变算法,则采⽤增加有效位数进⾏计算,或在计算上采⽤双精度运算,但这要增加机器计算时间和多占内存单元.1.3.3 减少运算次数在数值计算中,要注意简化计算步骤,减少运算次数,这也是数值分析中所要研究的重要内容.同样⼀个计算问题,如果能减少运算次数,不但可节省计算机的计算时间,还能减少误差的积累.下⾯举例说明简化计算公式的重要性.例1.10 给定x ,计算多项式()110nn n n n P x a x a xa --=+++的值.如果我们先求ak x k ,需要进⾏k 次乘法,再相加,则总共需要()12n n +次乘法和n次加法才能得到⼀个多项式的值.如果我们将多项式写成下⾯的形式()(){}1210n n n n P x x x x a x a a a a --??=+++++?? ,则只需n 次乘法和n 次加法即可得到⼀个多项式的值,这就是著名的秦九韶算法,可描述为1,,1,2,,0,n n k k k u a u u x a k n n +=??=+=--?最后有()0n u P x =.例1.11 计算ln2的值. 解如果利⽤级数()()11ln 11nn n xx n∞+=+=-∑计算ln2,若要精确到误差的绝对值⼩于10-5,要计算10万项求和,计算量很⼤,并且舍⼊误差的积累也⼗分严重.如果改⽤级数()35211ln 213!5!21!n xx x xx x n +??+=+++++ ? ?-+??来计算ln2,取x =1,则只要计算前9项,截断误差便⼩于10-10.1.4 向量和矩阵的范数为了对矩阵计算进⾏数值分析,我们需要对向量和矩阵的“⼤⼩”引进某种度量.在解析⼏何中,向量的⼤⼩和两个向量之差的⼤⼩是⽤“长度”和“距离”的概念来度量的.在实数域中,数的⼤⼩和两个数之间的距离是通过绝对值来度量的.范数是绝对值概念的⾃然推⼴.1.4.1 向量的范数定义1.5 如果向量x ∈n R 的某个实值函数f(x )=‖x ‖满⾜ (1) 正定性:x ?0,且x =0当且仅当x =0;(2) 齐次性:对任意实数α,都有αx =|α|x ; (3) 三⾓不等式:对任意x ,y ∈R n ,都有+x y ?x +y ,则称x 为n R 上的⼀个向量范数.在n R 中,记()12,,,Tn x x x =x ,实际计算中最常⽤的向量范数有: (1) 向量的∞范数1max i i nx ∞≤≤=x;(2) 向量的1范数11nii x ==∑x;(3) 向量的2范数12221in x i ==??∑x.容易验证,向量的∞范数和1范数满⾜定义1.5中的条件.对于2范数,满⾜定义1.5中的条件(1)和(2)是显然的,对于条件(3),利⽤向量内积的Cauchy-Schwarz 不等式可以验证.更⼀般地,有如下向量的p 范数1pipn px i ==??∑x,其中p ∈ [1,+∞).容易验证1ppn∞∞≤≤xxx,由此可得如下定理.定理1.2 lim pp ∞→∞=xx.下⾯,我们利⽤向量范数的连续性来说明向量范数的重要特征.定理1.3 设给定A ∈R n ×n ,x =(x 1,x 2,…,x n )T ∈R n ,则对R n 上每⼀种向量范数,‖A x ‖都是x 1,x 2,…,x n 的n 元连续函数.证设a j 为A 的列向量,将A 写成A =(a 1,a 2,…,a n ). 则由三⾓不等式,对h =(h 1,h 2,…,h n )T ∈R n,有|‖A (x +h )‖-‖A x ‖|?‖A h ‖=‖1ni i h =∑a i ‖1ni i h =∑‖a i ‖M max|h i |,其中M=1ni =∑‖a i ‖.所以,对任意的ε>0,当max|h i |<Mε时,有|‖A (x +h )‖-‖A x ‖|<ε, 这就证明了‖A x ‖的连续性.推论1.1 ‖x ‖是x 的各分量的连续函数. 向量范数的⼀个重要特征是具有等价性.定理 1.4 R n 上的所有向量范数是彼此等价的,即对R n 上的任意两种向量范数‖x ‖s和‖x ‖t ,存在常数c 1,c 2>0,使得对任意x ,有c 1‖x ‖s ?‖x ‖t ?c 2‖x ‖s .证只要就‖x ‖s =‖x ‖∞证明上式成⽴即可,即证明存在常数c 1,c 2>0,对⼀切x ∈R n且x ≠0,有c 1‖x ‖∞?‖x ‖t ?c 2‖x ‖∞.记R n 上的有界闭集D={x :x =(x 1,x 2,…,x n )T ,‖x ‖∞=1}.由定理1.3的推论知,‖x ‖t 是D 上的n 元连续函数,所以在D 上有最⼤值c 2和最⼩值c 1,且x ∈D 时有x ≠0,故有c 2?c 1>0.现考虑x ∈R n ,且x ≠0,则有∞x x ∈D,所以有c 1?‖∞x x ‖t ?c 2, ?x ∈R n ,x ≠0.从⽽对x ≠0有c 1‖x ‖∞?‖x ‖t ?c 2‖x ‖∞.⽽x =0时上式⾃然成⽴,定理得证.由于向量范数之间具有等价性,对于范数的极限性质,我们只需对⼀种范数进⾏讨论,其余范数也都具有相似的结论.⽐如,我们可以⽅便地讨论向量序列的收敛性.定义1.6 设向量序列x (k)=()()()()12,,,Tk k k nx x x ∈R n ,k=1,2,…,若存在x *=()12 ,,,Tn x x x ***∈R n ,使得()lim k iik x x *→∞=, i =1,2,…,n,则称序列{x (k)}收敛于x *,记为()lim k ik *→∞=x x.按定义有)()lim lim 0k k k k **→∞→∞∞=?-=xx xx.⼜因为()()()12k k k c c ***∞∞-≤-≤-xxxxxx,所以有()()lim lim 0k k k k **→∞→∞=?-=xx xx.因此,若向量序列在⼀种范数下收敛,则在其他范数下也收敛.不必强调是在哪种范数意义下收敛.1.4.2矩阵的范数定义1.7 如果矩阵A ∈R n ×n 的某个实值函数f(A )=‖A ‖满⾜ (1) 正定性:‖A ‖?0,且‖A ‖=0当且仅当A =0;(2) 齐次性:对任意实数α,都有‖αA ‖=|α|‖A ‖;(3) 三⾓不等式:对任意A ,B ∈R n ×n ,都有‖A +B ‖?‖A ‖+‖B ‖; (4) 相容性:对任意A ,B ∈R n ×n ,都有‖A B ‖?‖A ‖‖B ‖;则称‖A ‖为Rn ×n上的⼀个矩阵范数.可以验证,对()ij n na ?=A ,12211Fn n a ij i j ?? ?=∑∑ ?==??A是⼀种矩阵范数,称之为Froben i us 范数,简称F 范数.由于矩阵与向量常常同时参与讨论与计算,矩阵范数与向量范数之间需要有⼀种联系. 定义1.8 对于给定的R n 上的⼀种向量范数‖x ‖和R n ×n 上的⼀种矩阵范数‖A ‖,如果满⾜‖A x ‖?‖A ‖‖x ‖,则称矩阵范数‖A ‖与向量范数‖x ‖相容.上⾯的定义1.7是矩阵范数的⼀般定义,下⾯我们通过已给的向量范数来定义与之相容的矩阵范数.定义 1.9 设x ∈R n ,A ∈R n ×n ,对给出的⼀种向量范数v x ,相应地定义⼀个矩阵的⾮负函数m axvvx v≠=A x Ax.称之为由向量范数导出的矩阵范数,也称为算⼦范数或从属范数.由定义可得vvv≤A xAx,1max vvv==xAAx.算⼦范数满⾜矩阵范数⼀般定义中的条件(1)和(2)是显然的,现验证满⾜条件(3)和(4).对任意的A ,B ∈R n ×n ,有()1maxvvv =+=+xA B x11max max v vvvvvxx==≤+=+Ax BxAB1max vvv==xABABx1max vvvvvv=≤=xABxA.因此,算⼦范数满⾜矩阵范数⼀般定义中的条件(3)和(4).由常⽤的向量范数,可以导出与其相容的矩阵算⼦范数.定理1.5 设A ∈R n ×n ,记()ij n na ?=A ,则(1)11max nij i nj a ∞≤≤==∑A,称之为矩阵A 的⾏范数;(2) 111m ax nij j ni a ≤≤==∑A ,称之为矩阵A 的列范数;(3)2=A称之为矩阵A 的2范数或谱范数,其中,()max TλA A 表⽰T A A的最⼤特征值.证这⾥只对(1)和(3)给出证明,(2)的证明同理可得. 先证明(1):设x =(x 1,x 2,…,x n )T ≠0,不妨设A ≠0,则有1111max max nnij j ij i ni nj j xa x xa ∞∞≤≤≤≤===≤∑∑A .111max max nij xi nj a ∞∞∞=≤≤===∑AAx.设矩阵A 的第p ⾏元素的绝对值之和达到最⼤,即111max nnpj ij i nj j a a ≤≤===∑∑.取向量()12,,,Tn ξξξ= ξ,其中1,0,1,0.a pj j apjξ≥??=?-显然,‖ξ‖∞=1,⽽且1111m ax m axnn∞∞=≤≤===≥==∑∑xAA xA ξ.于是(1)得证.再证明(3):显然,A TA 是对称半正定矩阵,它的全部特征值均⾮负,设为120n λλλ≥≥≥≥ .由实对称矩阵的性质,各特征值对应的特征向量必正交.设对应的标准正交特征向量为12,,,nu u u ,即T i i i λ=A Au u (i =1,2,…,n),(u i ,u j )=δi j (i ,j=1,2,…,n).对向量x ∈R n ,‖x ‖2=1,可由R n 的⼀组基u i (i =1,2,…,n)线性表⽰,即有1niii c ==∑x u ,22211nii c===∑x11nnT Ti ii i i cc λλλ====≤=∑∑A xx A A x .另⼀⽅⾯,取ξ=u 1,显然有‖ξ‖2=1,211112T T Tλλ===A ξξA A ξu u .因此,2221m ax ===xAA x得证.由定理1.5可见,计算⼀个矩阵的⾏范数和列范数是⽐较容易的,⽽矩阵的2范数计算却不⽅便,但由于它有许多好的性质,所以在理论上还是有⽤的.例1.12 设矩阵1234-??=解 {}m ax 3,77∞==A,{}1m ax 4,66==A ,10141420T-??=-A A ()21014det 3041420Tλλλλλ--==-+-I A A ,求得115λ=+215λ=-因此25.46=≈A.定义1.10 设A ∈R n ×n 的特征值为λi (i =1,2,…,n),称()1max i i nρλ≤≤=A为A 的谱半径.谱半径在⼏何上可解释为以原点为圆⼼,能包含A 的全部特征值的圆的半径中最⼩者.例1.13 计算例1.12中矩阵的谱半径.解由A 的特征⽅程()2=--=-I A得12λ=,22λ=所以() 5.372ρ=≈A .定理1.6 设A ∈R n ×n ,则有()ρ≤A A .证设A x =λx ,x ≠0,且|λ|=ρ(A ),必存在向量y ,使x y T 不是零矩阵.于是()TTTTA ρλ==≤A xyxyxyA xy,即得ρ(A )?‖A ‖.例1.14 设矩阵A 与矩阵B 是对称的,求证ρ(A +B )?ρ(A )+ρ(B ).证因T =A A ,于是有()()()222max max 2A A AA ,即‖A ‖2=ρ(A ).同理‖B ‖2=ρ(B ).由于A +B =(A +B )T,因此()()()222ρρρ+=+≤+=+A B A BABA B .定理1.7 如果‖B ‖<1,则I ±B 为⾮奇异矩阵,且()111-±≤-I B B,这⾥的矩阵范数是指矩阵的算⼦范数.证若I ±B 奇异,则存在向量x ≠0,使(I ±B )x =0,故有ρ(B )?1,这与‖B ‖<1⽭盾,所以I ±B ⾮奇异.由于()()11--±=± I B I B I B ,于是得()()11--±≤+±I B I BI B .上的任意两种矩阵范数都是等价的,即对Rn ×n上的任意两种矩阵范数sA和t A ,存在常数c 1,c 2>0,使得12stsc c ≤≤AAA.由矩阵范数的等价性,我们可以⽤矩阵的范数描述矩阵序列的极限性质.定义1.11 设矩阵序列()()()kk n nijn na ??=∈A R,k=1,2,…,若存在()n nij n na **=∈A R,使得()lim k ijijk a a *→∞()lim k k *→∞=AA.可以验证()()lim lim 0k k k k **→∞→∞=?-=AA AA.评注本章介绍了数值计算的研究对象、误差及相关概念、数值计算的稳定性及构造算法的基本原则.考虑到矩阵计算的数值分析,本章还介绍了向量范数和矩阵范数的基本概念和常⽤定理.误差分析问题是数值分析中重要⽽困难的问题.误差的基本概念和误差分析的若⼲原则,对学习本课程是很有必要的.但是,作为⼯程或科学计算的实际问题则要复杂得多,往往要根据不同问题分门别类地进⾏分析.例如,由于舍⼊误差有随机性,有⼈应⽤概率的观点研究误差规律.在⼯程计算中,常⽤⼏种不同办法(包括实验⽅法)进⾏⽐较,以确定计算结果的可靠性.20世纪60年代以来,发展了两种估计误差的理论:⼀种是J.H.W i lk i nson 等⼈针对计算机浮点算法提出了⼀套预先估计的研究误差的⽅法,使矩阵运算的舍⼊误差研究获得了新发展;另⼀种是R .E.Moore 等⼈应⽤区间分析理论估计误差,开创了研究误差的新⽅法. 关于范数⽅⾯,所述内容是为以下各章服务的⼀些初步概念和常⽤的定理,对本书够⽤就可以了.例如只讨论了R n ×n 的范数,⽽没有顾及R n ×m .⼜例如介绍了R n 和R n ×n 上范数的等价性,此性质对有限维空间都是成⽴的,⽽对于C[a,b]则没有这个性质,这些都是赋范线性空间有关的问题,详细讨论这些问题是泛函分析的内容.习题 11.1 已知e=2.71828…,问下列近似值A x 有⼏位有效数字,相对误差界是多少? (1) x =e, A x =2.7; (2) x =e, A x =2.718; (3) x =e100, A x =0.027; (4) x =e100, A x =0.02718. 1.2 设原始数据的下列近似值每位都是有效数字:1x *=1.1021, 2x *=0.031, 3x *=56.430. 试计算(1) 1x *+2x *+3x *;(2),并估计它们的相对误差界.1.3 设x 的相对误差界为δ,求n x 的相对误差界.1.4 设x >0,x 的相对误差界为δ,求ln2的绝对误差界.1.5 为了使计算球体体积时的相对误差不超过1%,问测量半径R 时的允许相对误差界是多少?1.6 三⾓函数值取4位有效数字,怎样计算1-cos2°才能保证精度? 1.7 设0Y =28,按递推公式nY=1n Y --…,计算.若取27.982(5位有效数字),试问计算Y 100将有多⼤误差?1.8 求解⽅程25610x x ++=,使其根⾄少具有4位有效数字(≈27.982).1.9 正⽅形的边长⼤约为100 cm ,应怎样测量才能使其⾯积的误差不超过21cm ? 1.10 序列{yn}满⾜递推关系1101n n y y -=-,n=1,2,….若y 0 1.41(3位有效数字),计算到y 10时的误差有多⼤?这个计算过程稳定吗?1.11 对积分11n x n I x edx -=,n=0,1,…,验证101I e-=-,11n n I nI -=-.若取e -1≈0.3679,按递推公式11n n I nI -=-,⽤4位有效数字计算I 0,I 1,…,I 9,并证明这种算法是不稳定的.1.12 反双曲正弦函数为()(ln f x x =+.如何计算f(x )才能避免有效数字的损(1) sin x -siny ; (2) arctan x -arctany ;(3)2; (4)212xe-.1.14 已知三⾓形⾯积1sin 2s ab C=,其中C 为弧度,0π,且测量a,b,C 的误差分别为Δa,Δb,ΔC ,证明⾯积的误差Δs 满⾜s a b C s ab C≤++ .1.15 设P ∈R n ×n 且⾮奇异,⼜设‖x ‖为R n 上的⼀种向量范数,定义p=xP x.试证明‖x‖P 是R n 上的⼀种向量范数.1.16 设A ∈R n ×n 为对称正定矩阵,定义()12,A=xA x x .试证明‖x‖A 为R n 上的⼀种向量范数.1.17 设矩阵0.60.50.10.3??=2F≤≤AA,并说明‖A ‖F 与‖x‖2相容.1.19 设P ∈Rn ×n且⾮奇异,⼜设‖x‖为R n上的⼀种向量范数,定义范数‖x‖P =‖P x ‖.证明对应于‖x‖P 的算⼦范数1 p-=APAP.1.20 设A 为⾮奇异矩阵,求证:11m iny ∞-≠∞∞=A y yA.。

第三章 运算方法

第三章 运算方法

第三章运算方法一名词解释(1)溢出——在运算过程中如出现数据超过这个数表示范围的现象,称溢出。

(2)运算器——运算器是一个用于信息加工的部件,又称执行部件。

它对数据进行算术运算和逻辑运算。

(3)并行加法器——全加器的位数与操作数的位数的加法器称并行加法器。

(4)进位链——进位信号的产生与传递的逻辑结构称为进位链。

(5)进位产生函数——当xi与yi都为1时,Ci=1,即有进位信号产生,所以将xiyi称为进位产生函数,以Gi表示。

(6)进位传递函数——当xi⊕yi=1、Ci-1=1时,则Ci=1。

这种情况可看作是当xi⊕yi=1时,第i-1位的进位信号Ci-1可以通过本位向高位传送。

因此把xi⊕yi称为进位传递函数,以Pi表示。

(7)桶形移位器——在选择电路的控制下可以实现左移、右移、直送操作的具有移位功能的电路。

一.选择题1.大部分计算机内的减法是用_____实现。

A.将被减数加到减数中B.从被减数中减去减数C.补码数的相加 D.补码数的相减2.原码加减法是_____。

A.操作数用原码表示,连符号位直接相加减B.操作数用原码表示,尾数直接相加减,符号位单独处理C.操作数用原码表示,根据两数符号决定实际操作,符号位单独处理D.操作数取绝对值,直接相加减,符号位单独处理3.补码加减法是指______。

A.操作数用补码表示,两尾数加减,符号位单独处理,减法用加法代替B.操作数用补码表示,符号位和尾数一起参加运算,结果的符号与加减相同C.操作数用补码表示,连符号位直接相加减,减某数用加负某数的补码代替,结果的符号在运算中形成D.操作数用补码表示,由数符决定两尾数的操作,符号位单独处理4.在原码加减交替除法中,符号位单独处理,参加操作的数是_____。

A.原码 B.绝对值C.绝对值的补码 D.补码5.两补码相加,采用1位符号位,则当_____时,表示结果溢出。

A.最高位有进位 B.最高位进位和次高位进位异或结果为0C.最高位为1 D.最高位进位和次高位进位异或结果为16.在下列有关不恢复余数法何时需恢复余数的说法中,正确的是_____。

第三章线性方程组AX=B的数值解法

第三章线性方程组AX=B的数值解法

线性方程组的解(续1)
求逆运算和行列式计算由于运算量大,实 际求解过程中基本不使用,仅作为理论上 的定性讨论 克莱姆法则在理论上有着重大意义,但在 实际应用中存在很大的困难,在线性代数 中,为解决这一困难给出了高斯消元法 还有三角分解法和迭代求解法

11.03.2019 华南师范大学数学科学学院 谢骊玲

11.03.2019 华南师范大学数学科学学院 谢骊玲
3.4 高斯消去法和选主元(续1)

考虑一个简单的例子:
3x 1 2x 2 7 4x 1 x 2 1

求解第二个方程,得
x2 5

第二个方程减去第 一个方程除以3再乘 以4得到的新方程, 得到新的方程组:
3x 1 2x2 7 5 25 x2 3 3
上三角线性方程组的求解(续1)
(2) 式可简写成 u11 U
11.03.2019
U x b , 其中
u12 u1n u 22 u 2 n u nn
华南师范大学数学科学学院 谢骊玲
3.4 高斯消去法和选主元
求解有N个方程和N个未知数的一般方程组 AX=B的一般做法:构造一个等价的上三角 方程组UX=Y,并利用回代法求解 如果两个N×N线性方程组的解相同,则称 二者等价 对一个给定方程组进行初等变换,不会改 变它的解
2 x1 x2 4 x3 16 1 x2 5x3 -14 2 x1 3x2 3x3 16
2 x1 x 2 4 x3 16 1 x 2 5 x3 -14 2 5 x 2 x3 8 2
11.03.2019
2x1 x2 4x3 16 x2 10x3 -28 26x3 78

第三章 MATLAB数值计算

第三章 MATLAB数值计算
all any isempty isequal isreal find
功 能
如果所有的元素都是非零值,返回1;否则,返回0。 如果有一个元素为非零值,那么返回1;否则,返回0 判断是否空矩阵 判断两矩阵是否相同 判断是否是实矩阵 返回一个由非零元素的下标组成的向量
常用的矩阵函数
矩阵的行列式、矩阵的秩、特征值等在现代控制理论 中有广泛的应用,Matlab提供了相应的函数求其值 • det(A) 方阵A的行列式 • eig(A) 方阵A的特征值和特征向量 • rank(A) 矩阵A的秩 • trace(A) 矩阵A的迹 • expm(A) 矩阵的指数 • sqrtm(A) 求矩阵的平方根 • funm(A,’fun’) 求一般的方阵函数
矩阵的修改
• (1)直接修改 可用↑键找到所要修改的矩阵,用←键移动到要 修改的矩阵元素上即可修改。
• (2)指令修改 可以用A(﹡, ﹡)=﹡ 来修改。 • (3)由矩阵编辑器修改 由Matlab提供工具栏按钮来查看工作区变量,单 击变量,可以打开或删除变量
• 例: 修改矩阵A中元素的数值 >>A=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]; >>A(1,1)=0;A(2,2)=A(1,2)+A(2,1);A(4,4)=cos(0); 则矩阵变为: • A= 0 2 3 4 5 7 7 8 9 10 11 12 13 14、控制理论、物理学等领域中的很多 问题都可以归结到下面的线性方程组
矩阵行列式
• 如N阶矩阵A的行列式不等于0,即时,称矩阵 A非奇异,否则A奇异。当线性方程系数矩阵 非奇异,则线性方程有唯一解。对N阶方阵A, MATLAB中由函数得到行列式

第三章 数组及其运算

第三章 数组及其运算

Logm(A) A的矩阵对数函数
%例二维数组、矩阵运算 A=[-4,-3,-2;-1,0,1;2,3,4];B=[1,3,2;3,2,5;2,5,7]; C=A+B*i %生成复数数组 C.',C' %非共轭转置和共轭转置
C= -4.0000 + 1.0000i -3.0000 + 3.0000i -2.0000 + 2.0000i -1.0000 + 3.0000i 0 + 2.0000i 1.0000 + 5.0000i 2.0000 + 2.0000i 3.0000 + 5.0000i 4.0000 + 7.0000i ans = -4.0000 + 1.0000i -1.0000 + 3.0000i 2.0000 + 2.0000i -3.0000 + 3.0000i 0 + 2.0000i 3.0000 + 5.0000i -2.0000 + 2.0000i 1.0000 + 5.0000i 4.0000 + 7.0000i ans = -4.0000 - 1.0000i -1.0000 - 3.0000i 2.0000 - 2.0000i -3.0000 - 3.0000i 0 - 2.0000i 3.0000 - 5.0000i -2.0000 - 2.0000i 1.0000 - 5.0000i 4.0000 - 7.0000i
>> a=3*ones(4,5) a= 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 >> b=diag(a) b= 3 3 3 3
>> zeros(5,6) %生成 行6列的全 阵 生成5行 列的全 列的全0阵 生成 ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

遥感数字图像处理-第3章 空间域处理方法

遥感数字图像处理-第3章 空间域处理方法
第3章
空间域处理方法
空间域处理方法
一、数值运算:单波段运算、多波段运算 二、集合运算:空间操作、波段操作 三、逻辑运算:求反、与、或、异或 四、数学形态学操作:腐蚀、膨胀、开运算、闭运算
难点:邻域运算、数学形态学操作 重点:各种运算的原理及其在图像处理中的应用
2
一、数值运算
单波段运算
包括点运算和邻域运算。
点运算是对单幅图像像元进行的逐像元数值运算,它将输入图 像映射为输出图像,输出图像每个像元的灰度值仅由对应的输入 像元点的灰度值决定,它不会改变图像内像元之间的空间关系。 若输入图像为g(x,y),输出图像为f(x,y),则点运算可表示为:
f (x, y) T[g(x, y)]
T为灰度变换函数,可为任意函数,根据灰度变换函数的不同,点 运算又可分为线性点运算、分段线性点运算和非线性点运算。
6
3
二、集合运算
空间操作
包括图像裁剪和图像镶嵌。
图像裁剪
图像裁剪的目的是为了保留图像中需要感兴趣的部分,将感兴趣区之 外的部分去除。
图像裁剪示意图
4
三、逻辑运算
逻辑运算又称布尔运算,逻辑常量只有两个,即0和1,用来表示两个 对立的逻辑状态“假”和“真”。逻辑变量与普通代数一样,可以用字 母、符号、数字及其组合来表示,当进行逻辑运算时逻辑变量需先通过 某种规则转换为逻辑常量。
5
四、数学形态学操作
ቤተ መጻሕፍቲ ባይዱ数学形态学是以形态为基础对图像进行分析的数学工具, 在图像去噪声、图像增强、图像分割等处理中应用较广。
数学形态学操作可以分为二值形态学和灰度形态学,灰度 形态学是由二值形态学扩展而来。基于数学形态学的图像处 理有两个基本运算,即腐蚀和膨胀,而以腐蚀和膨胀为基础 又形成了开运算和闭运算。

第三章_数值计算方案

第三章_数值计算方案
e = u − uˆ = u − u + u − uˆ
其中,u 为真实解, uˆ 为数值计算 解, u 为差分方程
的准确解。可以看出造成模式计算误差的两个主要来源 是: (1)截断误差
u − u ,它是由差分方程模拟微分方程的近似中造成
的,这种误差依赖于时间步长和空间格距; (2) 舍入误差
u − uˆ ,它是由计算机的精度造成的。舍入误差在长
利用差分格式得到的解是否可以看作微分方程的近似解呢?或者说
时,差分方程的解是否会逼近于微分方程的解?这涉及
差分解的收敛性。 显然收敛的一个必要条件是
时,差分格式 微分方程,
这称为差分方程与微分方程相一致或者称为相容性。前面给出的几
种差分格式作为微商的近似当然能够保证相容性,但是满足相容性
是否能够保证解的收敛性?
差分方程及有关的基本概念
差分方程:将微商近似用差商代替得到的代数方程称为差分方程。
一维平流方程
针对这样一个微分方程中的每一个微分算子,可以给出若干个差分 格式,从而形成不同的差分方程。对于一个已知的函数而言,在某 个点微分值是唯一确定的,采用了不同的差分格式后,由于不同的 差分格式具有不同的内在性质和与原来微分算子有不同的近似程 度,呈现不同的数值效应。 因此,要使得采用的差分格式得到的数值解能够很好地反映真实的 物理现象,仔细分析各种格式的有效性、可靠性以及长期数值积分 的收敛性显得尤为重要。下面我们给出涉及差分格式的有关基本概 念。
离散化的网格(网格覆盖): 正方形,正三角形,正六边形,多边形等
三角形精度较好但算法比较复杂,正六边形的精度与正方形的 大体相当,算法比正方形的复杂。因此,通常使用正方形的网 格。 要点:等距(或不等距)节点上的函数值的集合表示连续函数

数值分析第三章习题

数值分析第三章习题

(介于0与x之间)
截断误差的大小直接影响计算结果的精度和计算 工作量,是数值计算中必须考虑的一类误差
舍入误差 • 在数值计算中只能对有限位字长的数值进行 运算 • 需要对参数、中间结果、最终结果作有限位 字长的处理工作,这种处理工作称作舍入处 理 • 用有限位数字代替精确数,这种误差叫做舍 入误差,是数值计算中必须考虑的一类误差
误差
例如在计算时用3.14159近似代替,
产生的误差R= -3.14159=0.0000026… 就是舍入误差。 上述种种误差都会影响计算结果的准确 性,因此需要了解与研究误差,在数值计算 中将着重研究截断误差、舍入误差,并对它 们的传播与积累作出分析
二、误差、有效数字 定义 1 绝对误差,简称误差:
§2 数值计算的误差
一、误差来源、分类
模型误差
观测误差
截断误差或方法误差
f (0) f (0) 2 f ( n) (0) n f ( x) Pn ( x) f (0) x x x 1! 2! n! f ( n1) ( ) n1 x 截断误差: Rn ( x) (n 1)! 舍入误差 R 3.14159 0.0000026. 数制转换、机器数.
e* x * x, 其中x * 为准确值x的近似值.
误差限: * | e* | 的一个上界.
例如,毫米尺 765 x 0.5
相对误差:
e * 或e* e * . , r x* x * * | e 相对误差限: r r | 的一个上界.
* er
例如, x 10 1, y 1000 5.
截断误差
• 精确公式用近似公式代替时,所产生的误差叫截断误差 例如, 函数f(x)用泰勒(Taylor)多项式
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.取整函数INT() 【格式】 INT(〈数值表达式〉) 【功能】 计算并返回〈数值表达式〉的 整数部分。 【例 4】 ? INT(-76.93) -76
5.求模函数MOD() 【格式】 MOD(<被除数>,<除数>) 【功能】 返回<被除数>除以<除数>得到的余数值。 【说明】 在求摸运算中应注意以下几点: (1) 除数不能为0。 (2) 除数为正数,返回正数;如果为负数,返回负数。 (3) 如果被除数与除数能够整除,结果为0。 (4) 如果被除数与除数不能整除,且被除数与除数同号,则结果为被除数 除以除数而得到的余数。即:MOD(X1,X2)=X1-INT(X1/X2)*X2 。 (5) 如果被除数与除数不能整除,且被除数与除数异号,则结果为被除数 除以除数而得到的余数再加上除数。 即: MOD(X1,X2)=X1-INT(X1/X2)*X2+X2 。 【例 5】 ? MOD(10,3) &&结果为:1 ? MOD(-10,-3) &&结果为:-1 ? MOD(-10,3) &&结果为:2 ? MOD(10,-3) &&结果为:-2
• $123.456789结果为123.4568
5.日期型常量
在Visual FoxPro6.0中日期型常量用花括号
“{ }”作为定界符括起来,格式为:
{^YYYY-MM-DD}
例如:{^2005/05/18},或{^2005-05-18}。 命令: set date american set date ymd
• 数组的定义
格式:DIMENSION |DECLARE <数组名> (<下标1>) [,(<下标2>)] [<数组名> (<下标1>) [,(<下标2>)]]… 例如:DIMENSION c(4) DECLARE a(3) , b(2,3)
• 数组的赋值
SZ(1)=”ABCD”
&& 给SZ(1)赋值,字符型,值:ABCD
在命令操作和程序运行过程中其值允 许变化的量称变量,在Visual FoxPro6.0中使用的变量分为字段变量、 内存变量两种。每个变量都必须有一个 变量名,变量名是由字母、汉字、数字 和下划线组成,但必须以字母或汉字。
1.字段变量
字段变量是数据表结构中的任意一 个数据项。在一个数据表中,一个字段 就是一个字段变量。 字段变量是一种多值变量,假设一 个数据表中有10条记录,那么该数据表 的每一字段就有10个取值,当用字段作 变量时,它的当前值随着记录指针的移 动而不断变化。
2.求字符串长度函数LEN() 【格式】 LEN〈字符串表达式〉 【功能】 返回〈字符串表达式〉中所包含的 字符个数,即字符串长度。 【例 2】 ? LEN(”Visual FoxPro6.0”) 16
3.搜索子串位置函数AT() 【格式】 AT(〈字符串1〉,〈字符串2〉[,<数值表达式>]) 【功能】 寻找〈字符串1〉在〈字符串2〉中首次出现的起 始位置。若〈字符串2〉中不包含〈字符串1〉,则返回值 为零。若有“数值表达式”(假设数值表达式为K),则寻 找〈字符串1〉在〈字符串2〉中第K次出现的位置。 【例 3】 X=”Visual FoxPro 6.0” ? AT(”Fox”,X) && 显示结果为 8 ? AT(”fox”,X) && 显示结果为 0 ? AT(”o”,X) && 显示结果为 9 ? AT(”o”,X ,2) && 显示结果为 13
2.字符串转换为数值函数VAL() 【格式】 VAL(〈字符串表达式〉)
【功能】
【例2】
将〈字符串表达式〉转换为数值型数据。
? VAL(”32”+”18”)
3218.00
? VAL(”112GH”),VAL(”AB204”),VAL(”ASD”)
112.00 0.00 0.00
3.字符转日期函数CTOD() 【格式】 CTOD(〈字符串表达式〉)
2.内存变量
内存变量是表结构之外独立存在于内 存中的变量。内存变量可用来存储数据, 定义内存变量时需为它取名并赋初值,内 存 变 量 建 立 后 存 储 于 内 存 中 。 Visual FoxPro6.0中共定义了6种类型的内存变量: 数值型、字符型、日期型、日期时间型、 逻辑型和货币型。可分为简单变量和数组 变量。
第3章 数值与数值运算
第3章 数据与数据运算
• 3-1 数据类型、常量和变量 • 3-2 Visual FoxPro6.0的常用函数 • 3-3 操作符及表达式 • 3-4 小结
3-1 数据类型、常量和变量
• 3-1-1 数据类型
在Visual FoxPro中所有的数据都具有 类型,数据类型决定数据的存储方式和使用 方式,即数据的取值范围和可以进行的操作。
STR(〈数值表达式〉[,〈长度〉[,〈小数位如〉]])
【功能】 将〈数值表达式〉的值转换为由〈长度〉和〈小 数位数〉指定的字符串。如果〈长度〉值比〈数值表达式〉 的整数位数还要小,则返回由〈长度〉个“*”组成的字符串。 【例1】 ? STR(1324.46,6,1)
1324.5 ? STR(1324.46,3,1),STR(1324.46,8,3) *** 1324.460
法常量,而””I am a boy””、’It’s
abest’是非法常量。
注意:最长只能为254个字符
3.逻辑型常量
• 表示“真”或“假”的量 • 表示方法: • “真”——.T.、.Y.、.t.、.y. • “假”——.F.、.N.、.f.、.n. • 注意:两边的点不能少
4.货币型常量
• 表示货币值的量 • 表示:以$开头,4舍5入到小数点4位 • 举例:
4.空格函数SPACE() 【格式】 SPACE(〈数值表达式〉) 【功能】 产生与〈数值表达式〉的值相同 的空格数。 【例 4】 ? ”学生”+SPACE(4)+”情况” 学生 情况 在“ 学生”和“情况”之间产生了4个空格 字符。
3-2-3 转换函数
1.数值转换为字符串函数STR() 【格式】
3-2-4 日期和时间函数
格式:DATE() 功能:返回系统日期 格式:TIME() 功能:返回系统时间 格式:DATETIME() 功能:返回系统日期时间 格式:YEAR(<日期>) 功能:返回<日期>中的年份,4位整型
• • • •
格式:month(<日期>) 功能:返回<日期>中的月份 格式:day(<日期>) 功能:返回<日期>中的日期
Visual FoxPro定义了13种字段类型和7种数
据类型。
字段类型是:字符型、数值型、浮点型、双精
度型、整型、货币型、日期型、日期时间型、
逻辑型、备注型、通用型、二进制字符型和二
进制备注型。
数据类型是:字符型、数值型、货币型、日期
型、日期时间型、逻辑型和通用型。
表达式
• 表达式具有计算、判断和数据类型转换 等作用,广泛用于命令、函数、对话框、 控件及其属性之中。
&& 给SZ(5)赋值,逻辑型,值:真
3-2 Visual FoxPro常见函数
函数的概念: Visual FoxPro6.0 0系统为用户提供了十分丰富的 函数,灵活运用这些函数,不仅可以简化许多运 算,而且能够加强和完善Visual FoxPro的许多 功能。 函数的一般格式:<函数名>(<自变量表>)
• 内存变量赋值命令 格式1:〈内存变量〉=<表达式〉 格式2: STORE <表达式> TO <内存变量 表> 功能: 计算〈表达式〉,然后将计算结果赋
给内存变量。
3.系统内存变量
• 由VFP自动生成和维护的变量 • 举例:
• 一般以下划线开头 • _DIARYDATE • _CLIPTEXT &&当前日期 &&剪贴板文本
函数的三要素:函数名、参数、函数值 如:ABS(-2)
3-2-1 数学运算函数
1.平方根函数SQRT() 【格式】 SQRT(〈数值表达式〉) 【功能】 计算并返回〈数值表达式〉的算术平方根。 【例 1】 ? SQRT(5*5) 5.00 2.绝对值函数ABS() 【格式】 ABS(<数值表达式>) 【功能】 计算并返回〈数值表达式〉的绝对值。 【例 2】 ? ABS(-43.29) 43.29
6.日期时间型常量
• 日期时间常量也必须用花括号括起来, 格式为:
– {^YYYY-MM-DD[hh[:mm[:ss]] [a|p]]}
• 例如:{^2005/05/19 10:04am}、 • {^2005-05-21 11:32:14pm}。 • 但必须注意日期和时间之间必须有空格。
3-1-3 变量
【功能】 将“月/日/年”格式的〈字符 串表达式〉转换为日期型数据。 【例3】 DA=”12/12/04”
? CTOD(DA)
12/12/04
4.日期型转换为字符串函数DTOC() 【格式】 DTOC(〈日期〉) 【功能】 将〈日期〉转换为相应的 字符串。 【例4】 D={^2004/11/24} DT=DTOC(D) ? DT ?? LEN(DT) 11/24/04 8
• 表达式可以是常量、变量、函数和运算 符的组合。 例:表达式 S=2*PI( )*R
• 表达式值显示命令 命令格式:?|??<表达式表> • 功能:计算表达式的值,并将其显 示在屏幕上。 • ?表示从屏幕下一行的第一列起显 示结果; • ??表示从当前行的当前列起显示结 果。
相关文档
最新文档