当前位置:
首页 > 教材教辅 > 大学 > 现代数值计算(第2版)pdf/doc/txt格式电子书下载

现代数值计算(第2版)pdf/doc/txt格式电子书下载

本站仅展示书籍部分内容

如有任何咨询

请加微信10090337咨询

现代数值计算(第2版)pdf/doc/txt格式电子书下载

书名:现代数值计算(第2版)pdf/doc/txt格式电子书下载

推荐语:

作者:同济大学计算数学教研室著

出版社:人民邮电出版社

出版时间:2014-09-01

书籍编号:30470906

ISBN:9787115359933

正文语种:中文

字数:225868

版次:2

所属分类:教材教辅-大学

全书内容:

现代数值计算(第2版)pdf/doc/txt格式电子书下载






第2版前言


本次修订版,作了如下的改动:


改正了第1版中的一些文字和公式错误,将第1版中第6章向量范数的定义放到第1章的误差定义中,使得可读性更强,增加了第3章关于混合插值的误差估计和第5章中关于辛普森求积公式的证明,增加了一些习题使得书的内容更加完整.


本次修订仍由同济大学计算数学教研室的有关教师集体完成. 其中第1章和第7章由陈雄达完成,第2章和第6章由殷俊锋完成,第3章和第4章由陈素琴完成,第5章由徐承龙完成, 第8 章由关晓飞完成, 第9 章由王琤完成. 徐承龙阅读了全书, 提出了一些修改意见,最后由陈雄达排版.


本书的修订工作得到了同济大学研究生院和数学系领导的大力支持,同济大学计算数学教研室使用本书的全体教师提出了宝贵的意见,以及人民邮电出版社武恩玉编辑对本次修订工作的热忱关心和支持,我们深表感谢.


编者


2014年1月于同济大学

前言


“数值分析”课程是科学计算方面的重要基础课程之一, 承担着引导计算科学入门到介绍数值计算中各种基本算法的任务.随着科学技术的快速发展,对数值计算方面知识的要求也越来越高, 这就迫切需要一本适合于目前学生学习的教材. 本着这样的想法, 同济大学计算数学教研室的有关教师在原有教材的基础上编写了本书.希望达到两个目的: 一是在课程中介绍数值计算领域中的基本思想、基本理论与基本算法, 如函数插值与函数逼近,线性与非线性方程(组)的求解,数值积分与微分,矩阵的特征值与特征向量的计算,微分方程的近似数值解; 二是适当地介绍一些当今科学与工程研究中遇到的数值计算问题求解的新方法,如快速傅里叶变换, 高维积分的蒙特卡罗方法, 数值求导的稳定算法, 大型线性方程组的分块迭代算法等. 当然,由于课时的限制,我们只给出这些内容的一个初步介绍,有兴趣者可以参阅有关的参考书. 本着实用的原则, 同时也由于课时限制的原因, 我们在介绍一些数学上比较深入的结论时, 往往省略了相关的理论证明. 在介绍一些重要的典型算法的同时, 附上了在工程中广泛使用的MATLAB程序.以便于大家在修完此课程后能快速地上手做一些工程项目中的计算与编程问题.


全书共分9章,由同济大学计算数学教研室有关任课教师集体编写. 其中第1章“科学计算与MATLAB”和第7章“非线性方程求根”由陈雄达编写,第2章“线性方程组的直接解法”和第6章“线性方程组的迭代解法”由殷俊锋编写,第3章“多项式插值与样条插值”和第4章“函数逼近”由陈素琴编写,第5章“数值积分与数值微分”由徐承龙编写,第8章“矩阵特征值与特征向量的计算”和第9章“常微分初边值问题数值解”由王琤编写. 全书由徐承龙负责组织与协调,陈雄达与殷俊锋负责本书的排版和校对. 本书适合作为高等院校本科生和工科研究生的教材与参考书,需要读者掌握高等数学、线性代数和初步的概率方面的知识. 在编写过程中我们参考了同济大学数学教研室和国内外有关专家编写的相关教材,在此表示感谢. 同济大学数学系和同济大学研究生院领导对本书的编写给予了大力支持,为此我们表示深切的谢意.


由于编写时间和水平的限制,本书不可避免出现错误,我们殷切希望广大读者提出批评与修改建议.


编者


2009年7月于同济大学

第1章 科学计算与 MATLAB



§1.1 科学计算的意义


数值计算是随着计算机的出现和大规模计算的需求而发展起来的一门新兴学科.数值计算主要考虑各种数学模型及其算法,这些数学模型是为了解决各类应用领域,特别是科学与工程计算领域的实际问题而提出的. 为此,数值计算有时也称为科学计算、工程计算或科学工程计算. 随着科学技术的发展, 计算机的性能和算法的效率, 即计算机的硬件和软件水平都有了飞速的提高,需要求解的实际问题规模也成倍扩大,其中的数学模型日趋复杂. 通常,这些数学模型是不能够精确地求解的,这时需要简化模型并且提出相应的数值解法,然后在计算机上编程实现,求解这些问题并作实际检验. 随着硬件性能的提高和软件上各种高效算法的出现,人类的计算能力迅猛提高,并同时期待能解决一些超大规模的具有挑战性的问题,如基因测序、全球天气模拟等. 对于同一个问题,不同的算法在计算性能上可能相差百万倍甚至更多,科学计算的主要任务就是设计高效可靠的数值算法. 例如:用一个每秒钟计算一亿次浮点运算的计算机求解一个20阶的线性代数方程组,用克拉默(Cramer)法和行列式展开法计算至少需要 30 万年, 而用高斯消去法只不过用几秒钟而已. 这个事实说明了两个问题:一方面,计算方法效率的提高速度往往比计算机性能的提高更快;另一方面,选择高效率的计算方法无疑是极其重要的.


求解科学与工程计算领域中的问题一般要经历以下几个过程. 首先根据实际问题构造相应的数学模型,把它转换为可以计算的问题,称为数值问题;其次根据问题特点选择计算方法并编制程序; 最后在计算机上求解. 科学计算的主要研究内容是提出数值问题, 设计高效的算法,并探讨全过程中各种误差对近似解的影响.数值问题要求对有限个输入数据计算得出有限个输出数据, 这些输出数据通常称为数值解, 或者也可以理解为近似解. 数值算法则是求解问题数值解的方法,它是由有限个明确无歧义的操作组成的对输入数据的变换,其中每一个操作都是计算机能够完成的, 例如, 仅包含加减乘除的运算. 一个算法只有在保证可靠的前提下才有可能评价其性能的好坏,通俗地讲, 可靠性方面包含诸如算法的收敛性、稳定性、误差估计等多方面的内容.评价一个算法的优劣应该考虑其时间复杂度 (即占用的计算机时间)、空间复杂度(即占用的计算机存储空间)以及逻辑复杂度(即程序开发周期长短及维护的难易程度).


由于各种科学计算问题最后通常都归结为求解一些基本的问题,所以数值算法领域的许多工作者为这些基本问题设计了一些相对固定的高效算法, 并把它们设计成简单且容易调用的功能函数并形成软件包. 但由于实际问题的复杂性及算法自身的适应性,调用者必须自行选择适合自己问题的功能函数. 现代数值计算领域流行的软件有 Maple、Mathematica、MATLAB 等, 但不仅限于这些软件, 更多软件可以在网上查询(http://www.netlib.org), 其中, MATLAB 软件是在工程计算界广泛使用的深受计算工作者和工程师喜爱的软件之一. MATLAB的官方网站是http://www.mathworks.com.


鉴于实际问题的复杂性,通常将一个实际问题具体分解为一系列的子问题进行研究,数值工作者把这些子问题归纳总结为数学上不同的几类问题.本课程主要涉及以下几方面的问题:第1章余下部分为数值计算的基本知识及MATLAB软件简介,其后各章内容包括函数的插值与逼近、数值积分与数值微分、线性方程组的直接解法和迭代解法、非线性方程组的求解、矩阵特征值问题的求解以及常微分方程的数值解.



§1.2 误差基础知识


人们常用相对误差、绝对误差或有效数字来说明一个近似值的准确程度.这些概念在科学计算中被广泛应用,下面我们对有关概念作一介绍.



§1.2.1 误差的来源


我们把通过任何途径得到的数据或模型与真实情况之间的差异称为误差. 误差的来源经常是多方面的. 在建立数学模型的过程中, 不可避免要忽略一些次要的因素, 因而数学模型往往只是对实际问题的一种近似的表达,这两者之间的差异我们称为模型误差. 同时数学模型中可能包含一些参数,它们可以通过仪器观测得到或通过经验得到,这种数据间的误差我们称为观测误差. 数值分析通常假定数学模型真实地反映了客观实际,直接处理已经归纳总结出来的数值问题,因而这两类误差在数值分析中并不常见.数学模型问题通常要转化为数值问题才能被求解,经常使用的转化手段往往有离散化、有限展开等方式. 我们称这种数值问题与数学模型之间的误差为截断误差或方法误差,通常引起方法误差的原因在于我们必须在有限的步骤内在计算机上得到结果.在用计算机实现数值方法的过程中,由于计算机表示的浮点数是固定的有限字长, 因此计算机并不能精确地表示所有的数, 这样, 不仅原始输入数据有误差,中间计算的数据及最终输出结果也必然有误差. 这种因为计算机有限字长引起的误差称为舍入误差,原始数据的误差导致最终结果也有误差的过程称为误差传播.



§1.2.2 误差度量


假设x是真值,figure_0013_0001是它的近似值,则称figure_0013_0002为该近似值的绝对误差,或简称误差.一般说来,真值通常是求不出来的,因此我们也不可能知道∆x的值,而只能有如下估计:

figure_0013_0003

数ε称为绝对误差限或误差限.于是有

figure_0013_0004

在工程上也记作figure_0013_0005误差限给出了真值的范围,但并不能很好地表示近似值的精确程度.例如测量珠峰高度为8848m,误差不超过1m;在测量运动员身高时就绝对不可以用这个误差限, 否则结果是没有任何意义的. 同样的误差限对于不同的数据, 其反映近似真实的程度可以完全相反,因此必须同时考虑真值的大小.


若x是不为零的真值,figure_0013_0006是它的近似值,则称figure_0013_0007为该近似值的相对误差(真值为零的情况没有定义).若可求得某数εr 满足

figure_0013_0008

则称εr为相对误差限.由于真值难以求出,假如figure_0014_0009也非零,通常也使用 figure_0014_0010



§1.2.3 有效数字


当x有很多位数字,为规定其近似数的表示法,使得用它表示的近似数自身就指明了相对误差的大小,我们引入有效数字的概念.


设十进制数有如下的标准形式:

figure_0014_0011

其中m为整数,{xi}⊆{0,1,2,…,9}且figure_0014_0012.对x四舍五入保留n位数字,得到近似值figure_0014_0013

figure_0014_0014

容易证明,四舍五入近似数的误差限满足

figure_0014_0015

设x的近似值figure_0014_0016有如下标准形式

figure_0014_0017

其中m为整数,{xi}⊆{0,1,2,…,9}且x1figure_0014_00180,p≥n.如果有

figure_0014_0019

则称figure_0014_0020为x的具有n位有效数字的近似数,其中x1,x2,…,xn分别称为第1位到第n位有效数字.当p=n时,称figure_0014_0021为有效数,即全由有效数字组成的数是有效数.有效数的误差限是末位数单位的一半,其本身就体现了误差界,因此有效数末尾是不可以随便添加零的.



§1.2.4 向量的误差


某些问题的解可能是一个 n维向量 x, x=(x1, x2,… , xn)T. 为了度量向量的误差,我们引入向量的范数.


定义1.2.1对任意n维向量x,若对应非负实数figure_0014_0022,且满足


(1)figure_0014_0023,当且仅当x=0时等号成立;


(2)对任意实数α,figure_0014_0024=|α|.figure_0014_0025;


(3)对任意的n维向量x和y,figure_0014_0026,


则称figure_0014_0027为向量x的范数.


设x=(x1, x2,… , xn)T,定义

figure_0014_0028

为向量的1 范数、2 范数和无穷范数.


易证,这三个范数都满足上述范数的三条性质.


譬如,对于向量的2范数figure_0015_0029前两条性质显然成立.


对于性质3,使用柯西不等式,有

figure_0015_0030

即性质3成立,所以figure_0015_0031是一个向量范数.


若向量x有近似值figure_0015_0032,则定义该近似向量误差为figure_0015_0033,这里范数可根据实际需要选取。


一般地,向量的相对误差figure_0015_0034并不能直接解读出各分量的有效位。如令x=(1.000,0.001)T,figure_0015_0035=(0.999,0.002)T,则采用无穷范数时figure_0015_0036但是x第二个分量误差达到了100%.



§1.2.5 计算机的浮点数系


计算机内部通常使用浮点数进行实数的运算.计算机的浮点数是仅有有限字长的二进制数, 大部分实数存入计算机时需要做四舍五入, 由此引起的误差称为舍入误差. 一个浮点数的表示由正负号、小数形式的尾数以及为确定小数点位置的阶三部分组成. 例如单精度实数用 32位的二进制表示,其中符号占 1位,尾数占 23位,阶数占 8位. 这样一个规范化的计算机单精度数(零除外)可以写成如下形式:

figure_0015_0037

上面记号中, Z 表示整数集. 二进制的非零数字只有1,所以α1=1. 阶数的8位中须有1位表示阶数的符号,所以阶数的值占7位. 凡是能够写成上述形式的数称为机器数. 设机器数a有上述形式, 则与之相邻的机器数为 b=a+2p−23 和 c=a−2p−23 . 这样, 区间 (c, a)和(a, b)中的数无法准确表示,计算机通常按规定用与之最近的机器数表示.


设实数 x 在机器中的浮点 (float) 表示为 f l(x), 我们把 x−f l(x) 称为舍入误差. 如当figure_0015_0038时,用a表示x,记为fl(x)=a.其相对误差满足

figure_0015_0039

上式表明单精度实数有6∼7位有效数字.


二进制阶数最高为27−1,相应于十进制的阶数38,即(27−1)lg2. 因此单精度实数(零除外)的数量级不大于1038 且不小于10−38 . 当输入数据、输出数据或中间数据太大而无法表示时, 计算过程将会非正常停止, 此现象称为上溢(overflow); 当数据太小而只能用零表示时, 计算机将此数置零, 精度损失, 此现象称为下溢(underflow). 下溢并不总是有害的, 在做浮点运算时,我们需要考虑数据运算可能产生的上溢及有害的下溢.



§1.2.6 一个实例


下面我们通过一个简单的例子来说明,一个实际问题从提出到解决过程中出现的各种误差.


例 1.2.1 有一艘驳船,宽度为5m,欲驶过一个河渠. 该河渠有一个直角弯道,形状和尺寸如图1-1所示. 试问,要驶过这个河渠,驳船的长度不能超过多少米?

figure_0016_0040

图1-1 河渠的图形

解:易知,驳船的长度有如下关系

figure_0016_0041

式中, l1, l2 分别为直角拐角处到船两头的距离. 驳船如若能通过河渠, 则其最大长度应是上式右端函数的最小值.因此,该问题就转化为求解极小化问题

figure_0016_0042

或者,求解非线性函数零点的问题

figure_0016_0043

可以证明,对于任意figure_0016_0044,figure_0016_0045.因此(1.12)式的极小点即是(1.13)式的零点,这两者完全等价. 通过本教材将要介绍的近似计算方法,我们可以知道上述两个问题的解为

figure_0016_0046

因此,驳船的长度不能超过21m.


从实际的角度出发, 我们知道, 一艘驳船能不能通过河渠应该是一个复杂的问题:驳船不完全是长方形的, 而且可能和水深也有关系. 我们把它简化为长方形的, 并且只在二维平面内考虑该问题, 这就造成了模型误差. 我们无法精确求解极小化问题 (1.12) 式或求零点问题 (1.13) 式, 用近似求解的方法代替精确求解的方法, 造成了方法误差. 测量的数据, 如5m、10m、12m等,都带有误差,称为观测误差. 因此,结论中的数据也只给出了两位有效数字, 是一个近似的答案. 由于初始数据的误差导致最终答数的误差, 这个过程就是误差的传播过程.



§1.2.7 数值计算中应注意的几个问题


舍入误差在实际计算中几乎是不可避免的,定量地分析舍入误差的积累过程往往都是非常繁杂的. 一个可行的方法是研究舍入误差是否能够得到有效的控制,不会影响到计算结果的实际效用. 一个算法, 如果在一定的条件下, 其舍入误差在整个运算过程中能够得到有效控制或者舍入误差的增长不影响产生可靠的结果,则称该算法是数值稳定的,否则称为数值不稳定的.


例1.2.2计算figure_0016_0047,其中n=0,1,2,…,8.


解:由于

figure_0016_0048

取S0=ln6−ln5=0.182,利用公式figure_0016_0049,可以逐步得到如下的数值,计算过程中所有的数精确到小数点后3位:

figure_0017_0050

通过简单的积分估计,有

figure_0017_0051

所以上述的8个计算结果中,那些负数或者大于1的结果都是不可接受的. 当然,其他结果也可能有比较大的误差.


下面我们分析造成这种现象的原因.假设Sn的真值为figure_0017_0052,误差为εn,即figure_0017_0053对于真值,我们也有关系式figure_0017_0054综合两个递推等式,有

figure_0017_0055

这就意味着哪怕开始只有一点点误差, 就算整个过程都保留很长的小数位, 只要 n 足够大,按照这种每计算一步误差增长5倍的方式,所得的结果总是不可信的. 因此整个算法是数值不稳定的.


换一种方式,若我们把计算方式改为

figure_0017_0056

则误差就会以每计算一步缩小到1/5的方式进行. 用这样的方式计算,可以先用上面的估计式计算出S8

figure_0017_0057

逐步计算有

figure_0017_0058

这样的计算结果和实际是很相近的. 对 S8 不同的估计方式, 最后得到的结果也相似:只需对递推计算公式进行同样的误差分析就可以得到这个结论.


误差的传播在一些实际的问题中经常是很复杂的,不像上面的例子那样可以得到一个误差传播的具体的公式. 事实上,这个误差传播的具体公式需要假定1/n的计算是完全精确的.


通过对误差传播规律的简单分析,下面我们指出在数值计算中应该注意的基本问题.


§1.2.7.1 避免相近的数相减


在数值计算中,两个相近的数相减时有效数字会损失.例如计算

figure_0017_0059

其中x是比较大的数,例如x=1000. 取4位有效数字计算,有

figure_0017_0060

可以看出, 在计算过程中, 每个根号的计算都有 4 位有效数字, 相减之后结果只有一位有效数字,相对误差变得很大,严重影响了结果的精确程度.事实上,可以有如下的等价计算公式

figure_0018_0061

按此公式计算可得y=0.015 81,仍旧有4位有效数字. 可见,数学上等价的公式在计算上是不等价的. 其他计算公式中,也经常有需要变形的,例如

figure_0018_0062

当x比较大或者ε比较小时,上述各等式右边的计算方式都比左边有效.


§1.2.7.2 避免数量级相差太大的两数相除


计算大数除以小数或者小数除以大数时,容易出现计算溢出的情形,使得计算过程非正常中断或者中间数据没有任何有效数字. 在这种情况下,有必要在数量级上对这两个数做一些处理.


§1.2.7.3 避免大数和小数相加减


在数值计算中,有时候会碰到数量级相差很大的两个数相加减. 计算机做加减法首先要对阶,即把这两个数都写成同一个阶数的表示方式,再对其尾数进行相加减.


例如,假设在十进制5位机器上,做下面的加法:

figure_0018_0063

计算机做加法时,要把两个数都写成尾数小于1的数,称为对阶,即

figure_0018_0064

但是, 计算机只能表示 5 位尾数, 因此第二个数在计算机上就等于 0. 我们可以把这种情形称为“大数吃小数”.


例 1.2.3 计算下面调和级数的部分和

figure_0018_0065

解:最自然的计算方式是设一个部分和为S ,依次把第k 项(k ≤n)加到S 上. 对于比较大的n,因为调和级数是发散的, S 会越来越大,趋向无穷. 但是,当我们把第k项加到S 上时,所做的加法是

figure_0018_0066

依照上面的分析,只要k足够大,就会出现“大数吃掉小数”,更大的k更是如此. 因此,实际计算时这个部分和并不会越来越大,而是停在某一个大数上,其后各项都被它吃掉.


我们有其他措施来防止大数和小数相加. 例如上面的例子, 可以从后面往前面加, 也可以在中间加括号等.


§1.2.7.4 简化计算步骤


同样的结果在数学上可以有不同的表达形式,在计算机上它们的结果可能是完全不一样的. 例如,计算多项式

figure_0019_0067

如果直接采用上面的公式逐项求和,那么计算第k 项需要 n−k+1个乘法, 因此总计算量为n(n+1)/2个乘法和n个加法. 然而,多项式求值也可以采用下面的方式

figure_0019_0068

这时总运算量为n个乘法和n个加法. 这个算法称为秦九韶算法或者Horner算法.


一个好的算法不仅应当是数值稳定的,还应当是高精度的和高效的. 然而这些要求常常不能兼备,很多情况下甚至是相互冲突、相互制约的.



§1.3 MATLAB软件



§1.3.1 简介


MATLAB源于Matrix Laboratory一词,意为矩阵实验室. MATLAB软件是一个功能非常强大的科学计算软件. 早期的 MATLAB 是一个专门为方便调用 LINPACK 和 EISPACK软件包而做的界面程序;最新的MATLAB版本含有科学计算、符号计算、图形处理等功能,可以很方便地处理各类矩阵及多项式运算、线性方程组求解、微分方程数值解、插值拟合、统计和优化等问题,并且可以针对用户提供的问题所具有的特点自行选择合适的算法.


MATLAB的数据类型包括:数、字符串、矩阵、单元型数据和结构型数据. 后两种实际上是复合数据类型,而数和字符串都可以看成是矩阵的特例,因此矩阵是最有代表性的数据类型,这也是MATLAB名字的来源.


MATLAB的使用界面是一个集成的界面,它包含以下几个窗口:命令窗口、命令历史窗口、当前路径窗口、工作空间变量窗口等. 命令窗口是系统执行各项工作的主要场所, 一般地,我们可以把想要执行的命令依次键入到命令窗口. 命令历史窗口则保留了以前键入的历史命令, 通过双击它之中的某条命令, 就可以重新执行该条命令. 当前路径窗口显示了当前路径下的各文件, 以备查询. 工作空间变量窗口显示了你所使用的各变量, 可以双击变量来显示或修改其值.


MATLAB 的命令提示符为 >>, 在提示符后面键入命令并回车, 就可以运行命令. 运行结束后,系统就会出现下一个提示符.运行中,系统可能给出部分结果的显示,或者是某一步出错的警告. 例如,


>> 123 - 45 - 67 + 89   % my first code


ans =


100


>> 1 + 2^(3*4-5) - 6 - 789


ans =


-666


>>


%是注释符,同一行上它之后的所有符号都被当成注释而忽略掉.如果一行写不完,可以在最后写上续行符,即3个点“…”,系统会把下一行当成是这一行的继续.


MATLAB的变量不必事先说明,也不需要指定类型,它会根据变量所涉及到的操作来决定变量的类型. 任何以字母开头,包含字母、数字或下划线并且长度少于32的字符串都可以作为变量的名字. 不同 MATLAB 版本, 命名的最大字符长度可能会不一样, 但一般都足够使用. 变量名区分大小写, 并且不能与系统的关键字和内部函数同名. 通常 MATLAB 中的变量 (系统的和用户的) 都以约定俗成的简写方式命名. 在前面的例子中, 运算结束后结果没有被赋给任何变量,系统就默认地赋给了变量ans.



§1.3.2 向量和矩阵的基本运算


§1.3.2.1 MATLAB数据类型


MATLAB的基本数据类型是矩阵.以下的方式定义了一个矩阵 figure_0020_0069

figure_0020_0070

矩阵的界定符是[和],矩阵同一行的元素之间以空格或者逗号隔开,不同行之间的元素以分号隔开或者直接换行. 例如上面的矩阵也可以如下输入


>> A = [ 1, 3


2, 4 ];


这里,行末的分号起着抑制显示结果的作用. 以后,我们不总是给出运行结果,读者可以自行把命令复制到命令行执行以查看运行结果.


向量和数分别看成只有一行或一列,以及只有一行一列的矩阵


>> a = [123456]


a=


1 2 3 4 5 6


该命令还可以这么写:a = 1:6. 在MATLAB中a:s:b代表以a为起点, s为步长, b为终止的向量,步长为1时则可以省略.


>> 2:3:10


ans =


2 5 8


>> 10:-1.5:6


ans =


10.0000 8.5000 7.0000


>> 10:2:6


ans =


Empty matrix: 1-by-0


是一个空矩阵. 在 MATLAB中变量是区分大小写的, A和 a是不同的变量. 如果在命令行中输入


>> A = [1; 2; 3]


A=


1


2


3


则生成一个3行1列的列向量A,原来的矩阵A的值就没有了. 在MATLAB中,行向量和列向量是不同的. 另外,变量的类型可以随时改变


>> A = ’hello matlab’


A=


hello matlab


这时,A 就是一个字符串而非向量或矩阵. 字符串以引号界定, 里面可以是任何字符. 实际上,字符串也是向量, A的第一个和最后一个分量分别为字母 h和字母 b. 若字符串本身含有引号,只需把引号写两遍即可


>> A = ’This’’s matlab’’s world.’


A=


This’s matlab’s world.


可以用如下的方式合并字符串:


>> A = [ A ’ I love this game.’]


A=


This’s matlab’s world. I love this game.


MATLAB的数据类型还有细胞、结构等,这里我们就不展开了.


§1.3.2.2 常量和变量


常量就是在运行过程中不能变化的量, 例如上面提到的字符串 ’hello matlab’, 当然3.14, [2,3,4]也是常量.


MATLAB中的数据常量常用科学记数法来表示,例如


>> 3.14159^10


ans =


9.3647e+004


结果是9.364 7 × 104 . 如果想显示更多的小数位,可以用命令format


>> format long


>> 3.14159^10


ans =


9.364725646787224e+004


>> format short


>> 3.14159^10


ans =


9.3647e+004


format命令只影响该命令运行之后的数、向量或者矩阵的数值显示方式,在计算机内部都是以16位小数的精度进行计算.可以随时使用format命令切换输出方式.


变量则相反,它的值可以随时变化,例如上面的矩阵、字符串变量 A. 在计算机程序里,变量都保存在一定的地方,即内存里,变量的名字实际上也就代表了找到内存一个确切地方的地址.例如


>> A = ’Thi

....

本站仅展示书籍部分内容

如有任何咨询

请加微信10090337咨询

本站仅展示书籍部分内容
如有任何咨询

请加微信10090337咨询

再显示