欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数值分析上机实验指导书.pdf

    • 资源ID:20010777       资源大小:1.25MB        全文页数:37页
    • 资源格式: PDF        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数值分析上机实验指导书.pdf

    “数值计算方法”上机实验指导书实验一实验一 误差分析误差分析实验实验 1.11.1(病态问题)实验目的实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。 病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等) 。问题提出问题提出:考虑一个高次的代数多项式p(x) (x1)(x2)(x20) (xk)k120(1.1)显然该多项式的全部根为 1,2,20 共计 20 个,且每个根都是单重的。现考虑该多项式的一个扰动p(x)x19 0(1.2)其中是一个非常小的数。这相当于是对(1.1)中x19的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。实验内容实验内容: 为了实现方便, 我们先介绍两个 MATLAB函数:“roots”和 “poly” 。u roots(a)其中若变量 a 存储 n+1 维的向量,则该函数的输出 u 为一个 n 维的向量。设 a 的元素依次为a1,a2,an1,则输出 u 的各分量是多项式方程a1xn a2xn1 anx an1 0的全部根;而函数b p o ly ( v的输出 b 是一个 n+1 维向量,它是以 n 维向量 v 的各分量为根的多项式的系数。可见“roots”和“poly”是两个互逆的运算函数。ess 0.000000001;ve zeros(1,21);ve(2) ess;roots(poly(1:20)ve)1上述简单的 MATLAB程序便得到 (1.2) 的全部根, 程序中的 “ess” 即是 (1.2)中的。实验要求实验要求:(1)选择充分小的 ess,反复进行上述实验,记录结果的变化并分析它们。如果扰动项的系数很小,我们自然感觉(1.1)和(1.2)的解应当相差很小。计算中你有什么出乎意料的发现?表明有些解关于如此的扰动敏感性如何?(2)将方程(1.2)中的扰动项改成x18或其它形式,实验中又有怎样的现象出现?(3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将方程(1.2)写成展开的形式,p(x,) x20 x19 0(1.3)同时将方程的解 x 看成是系数的函数,考察方程的某个解关于的扰动是否敏感,与研究它关于的导数的大小有何关系?为什么?你发现了什么现象,哪些根关于的变化更敏感?思考题一思考题一: (上述实验的改进)在上述实验中我们会发现用 roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数 solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数 poly2sym,函数的具体使用方法可参考 MATLAB的帮助。思考题二思考题二: (二进制产生的误差)用 MATLAB计算0.1100。结果居然有误差!因为从十进制数角度分析,i11000这一计算应该是准确的。实验反映了计算机内部的二进制本质。思考题三思考题三: (一个简单公式中产生巨大舍入误差的例子)可以用下列式子计算自然对数的底数1e e1 lim(1)nnn这个极限表明随着 n 的增加,计算 e 值的精度是不确定的。现编程计算1f (n) (1)n与 exp(1)值的差。n 大到什么程度的时候误差最大?你能解释其中n的原因吗?相关 MATLAB函数提示:poly(a)求给定的根向量 a 生成其对应的多项式系数(降序)向量roots(p)求解以向量 p 为系数的多项式(降序)的所有根poly2sym(p)将多项式向量 p 表示成为符号多项式(降序)sym(arg)将数字、字符串或表达式 arg 转换为符号对象2syms arg1 arg2 argk将字符 arg1,arg2,argk定义为基本符号对象solve(eq1)求符号多项式方程 eq1 的符号解3实验二实验二插值法插值法实验实验 2.12.1(多项式插值的振荡现象)问题提出问题提出:考虑一个固定的区间上用插值逼近一个函数。显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。 我们自然关心插值多项式的次数增加时,Ln(x)是否也更加靠近被逼近的函数。龙格( Runge)给出一个例子是极著名并富有启发性的。设区间-1,1上函数1f (x) 2125x实验内容实验内容:考虑区间-1,1的一个等距划分,分点为2ixi 1,i 0,1,2,nn则拉格朗日插值多项式为Ln(x) 1l (x)2i125xi0jn其中的li(x),i 0,1,2,n是 n 次拉格朗日插值基函数。实验要求实验要求:(1) 选择不断增大的分点数目 n=2,3.,画出原函数 f(x)及插值多项式函数Ln(x)在-1,1上的图像,比较并分析实验结果。(2)选择其他的函数,例如定义在区间-5,5上的函数xh(x) ,g(x) arctanx1 x4重复上述的实验看其结果如何。(3)区间a,b上切比雪夫点的定义为xkbabac22(2k 1)os2(n1),k 1,2,n1以x1,x2,xn1为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果。实验实验 2.22.2(样条插值的收敛性)问题提出问题提出:多项式插值是不收敛的,即插值的节点多,效果不一定就好。对样条函数插值又如何呢?理论上证明样条插值的收敛性是比较困难的, 但通过本实验可以验证这一理论结果。实验内容实验内容:请按一定的规则分别选择等距或者非等距的插值节点,并不断增加插值节点的个数。考虑实验2.1 中的函数或选择其他你有兴趣的函数,可以用MATLAB的函数“spline”作此函数的三次样条插值。实验要求实验要求:(1)随节点个数增加,比较被逼近函数和样条插值函数误差的变化情况。分4析所得结果并与拉格朗日多项式插值比较。(2) 样条插值的思想是早产生于工业部门。 作为工业应用的例子考虑如下问题:某汽车制造商用三次样条插值设计车门的曲线,其中一段的数据如下:xk012345678910yk0.00.791.532.192.713.033.272.893.063.193.29yk0.80.2思考题一: (二维插值)在一丘陵地带测量高程, x 和 y 方向每隔 100 米测一个点, 得高程数据如下。试用 MATLAB 的二维插值函数“interp2”进行插值,并由此找出最高点和该点的高程。yx100200300400100636697624478200698712630478300680674598412400662626552334相关 MATLAB函数提示:plot(x,y)作出以数据(x(i),y(i)为节点的折线图, 其中 x,y 为同长度的向量subplot(m,n,k)将图形窗口分为 m*n 个子图,并指向第 k 幅图yi=interp1(x,y,xi)根据数据(x,y)给出在 xi 的分段线性插值结果 yipp=spline(x,y)返回样条插值的分段多项式(pp)形式结构pp=csape(x,y,边界类型,边界值)生成各种边界条件的三次样条插值yi=ppval(pp,xi)pp 样条在 xi 的函数值ZI=interp2(x,y,z,xi,yi)x,xi 为行向量,y,yi 为列向量,z 为矩阵的双线性二维插值ZI=interp2(,spline)使用二元三次样条插值ZI=griddata(x,y,z,xi,yi)x,y,z 均为向量(不必单调)表示数据,xi,yi 为网格向量的三角形线性插值(不规则数据的二维插值)5实验三实验三 函数逼近与曲线拟合函数逼近与曲线拟合实验实验 3.13.1(曲线逼近方法的比较)问题提出问题提出:曲线的拟合和插值,是逼近函数的基本方法,每种方法具有各自的特点和特定的适用范围,实际工作中合理选择方法是重要的。实验内容实验内容:考虑实验 2.1 中的著名问题。下面的 MATLAB程序给出了该函数的二次和三次拟合多项式。x=-1:0.2:1;y=1/(1+25*x.*x);xx=-1:0.02:1;p2=polyfit(x,y,2);yy=polyval(p2,xx);plot(x,y,o,xx,yy)xlabel(x)ylabel(y)hold on;p3=polyfit(x,y,3);yy=polyval(p3,xx);plot(x,y,o,xx,yy)hold off;适当修改上述 MATLAB程序,也可以拟合其他你有兴趣的函数。实验要求实验要求:(1)将拟合的结果与拉格朗日插值及样条插值的结果比较。(2) 归纳总结数值实验结果, 试定性地说明函数逼近各种方法的适用范围,及实际应用中选择方法应注意的问题。思考题一思考题一: (病态)考虑将0,130 等分节点,用多项式y 1 x x5生成数据,再用 polyfit 求其 3 次、5 次、10 次、15 次拟合多项式,并分析误差产生的原因。相关 MATLAB函数提示:p=polyfit(x,y,k)用 k 次多项式拟合向量数据(x,y),返回多项式的降幂系数,当k=n-1 时,实现多项式插值,这里 n 是向量维数6实验四实验四数值积分与数值微分数值积分与数值微分实验实验 4.14.1 (高斯数值积分方法用于积分方程求解)问题提出问题提出:线性的积分方程的数值求解,可以被转化为线性代数方程组的求解问题。 而线性代数方程组所含未知数的个数,与用来离散积分的数值方法的节点个数相同。在节点数相同的前提下,高斯数值积分方法有较高的代数精度,用它通常会得到较好的结果。实验内容实验内容:求解第二类 Fredholm 积分方程y(t) k(t,s)y(s)ds f (t),a t bab首先将积分区间a,b等分成 n 份,在每个子区间上离散方程中的积分就得到线性代数方程组。实验要求实验要求:分别使用如下方法,离散积分方程中的积分1.复化梯形方法; 2.复化辛甫森方法; 3.复化高斯方法。 求解如下的积分方程。21ttt1)y(t) ,方程的准确解为;ee y(s)dse0e1112)y(t) esty(s)ds1e2tet,方程的准确解为et;02比较各算法的计算量和误差以分析它们的优劣。实验实验 4.24.2(高维积分数值计算的蒙特卡罗方法)问题提出问题提出:高维空间中的积分,如果维数不很高且积分区域是规则的或者能等价地写成多重积分的形式, 可以用一元函数积分的数值方法来计算高维空间的积分。 蒙特卡罗方法对计算复杂区域甚至不连通的区域上的积分并没有特殊的困难。实验内容实验内容:对于一般的区域,计算其测度(只要理解为平面上的面积或空间中的体积)的一般方法是:先找一个规则的区域 A 包含,且 A 的测度是已知的。生成区域A 中 m 个均匀分布的随机点pi,i 1,2,m,如果其中有n 个落在区域中,则区域的测度 m()为 n/m。函数 f(x)在区域上的积分可以近似为:区域的测度与函数 f(x)在中 n 个随机点上平均值的乘积,即f (x)dx m()1f (pk)npk实验要求实验要求:假设冰琪淋的下部为一锥体而上面为一半球,考虑冰琪淋体积问题:计算锥面z2 x2 y2上方和球面x2 y2(z 1)21内部区域的体积。如果使用球面坐标,该区域可以表示为如下的积分:/42cos02 002sinddd用蒙特卡罗方法可以计算该积分。另一方面,显然这样的冰琪淋可以装在如下立方体的盒子里1 x 1,1 y 1,0 z 27而该立方体的体积为 8。只要生成这个盒子里均匀分布的随机点,落入冰琪淋锥点的个数与总点数之比再乘以 8 就是冰琪淋锥的体积。 比较两种方法所得到的结果。类似的办法可以计算复杂区域的测度(面积或体积) 。试求由下列关系所界定区域的测度:0 x 1,1 y 2,1 z 3(1)ex ysin(z)y 01 x 3,1 y 4(2)x3 y3 29y ex20 x 1,0 y 1,0 z 1(3)x2sin y zx z ex1相关 MATLAB函数提示:diff(x)如果 x 是向量,返回向量 x 的差分;如果 x 是矩阵,则按各列作差分diff(x,k)k 阶差分q=polyder(p)求得由向量 p 表示的多项式导函数的向量表示 qFx=gradient(F,x)返回向量 F 表示的一元函数沿 x 方向的导函数 F(x),其中 x是与 F 同维数的向量z=trapz(x,y)x 表示积分区间的离散化向量;y 是与 x 同维数的向量,表示被积函数;z 返回积分的近似值z=guad(fun,a,b,tol)自适应步长 Simpson 积分法求得 Fun 在区间a,b上的定积分,Fun 为 M 文件函数句柄,tol 为积分精度z=dblquad(fun,a,b,c,d,tol,method)求得二元函数 Fun(x,y)的重积分z=triplequad(fun,a,b,c,d,e,f,tol,method)求得三元函数 Fun(x,y,z)的重积分8实验五实验五解线性方程组的直接方法解线性方程组的直接方法实验实验 5.15.1 (主元的选取与算法的稳定性)问题提出问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。但由于计算机的数值运算是在一个有限的浮点数集合上进行的, 如何才能确保 Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。实验内容实验内容:考虑线性方程组Ax b,ARnn,bRn编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss消去过程。实验要求实验要求:61 7 86115(1)取矩阵A ,b ,则方程有解x* (1,1,1)T。861158614取 n=10 计算矩阵的条件数。让程序自动选取主元,结果如何?(2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。(3)取矩阵阶数 n=20 或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异, 说明主元素的选取在消去过程中的作用。(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并分析实验结果。实验实验 5.25.2(线性代数方程组的性态与条件数的估计)问题提出问题提出:理论上,线性代数方程组Ax b的摄动满足xc o n(d A)x1 A1A Ab Ab矩阵的条件数确实是对矩阵病态性的刻画,但在实际应用中直接计算它显然不现实,因为计算A1通常要比求解方程Ax b还困难。实验内容实验内容:MATLAB中提供有函数“condest”可以用来估计矩阵的条件数,它给出的是按 1-范数的条件数。首先构造非奇异矩阵 A 和右端,使得方程是可以精确求解的。 再人为地引进系数矩阵和右端的摄动A和b, 使得A 和 b充9分小。实验要求: bb,以 1-范数,(1)假设方程 Ax=b 的解为 x,求解方程(AA)x给出xx xxx的计算结果。(2) 选择一系列维数递增的矩阵 (可以是随机生成的) , 比较函数 “condest”所需机器时间的差别 .考虑若干逆是已知的矩阵,借助函数“eig”很容易给出cond2(A)的数值。将它与函数“cond(A,2)”所得到的结果进行比较。(3) 利用 “condest” 给出矩阵 A 条件数的估计, 针对 (1) 中的结果给出xx的理论估计,并将它与(1)给出的计算结果进行比较,分析所得结果。注意,如果给出了 cond(A)和A的估计,马上就可以给出A1的估计。(4)估计著名的 Hilbert 矩阵的条件数。H (hi, j)nn,hi, j1,i j 1i, j 1,2,n思考题一: (Vadermonde矩阵)设11A11x0 x1x2xn2x0 x122x22xnnix00nix0nxin1x1i0nx2,b ni,x2i0nxnnixni0其中,xk10.1k,k 0,1,n,(1)对 n=2,5,8,计算 A 的条件数;随 n 增大,矩阵性态如何变化?(2)对 n=5,解方程组 Ax=b;设 A 的最后一个元素有扰动 10-4,再求解 Ax=b(3)计算(2)扰动相对误差与解的相对偏差,分析它们与条件数的关系。(4)你能由此解释为什么不用插值函数存在定理直接求插值函数而要用拉格朗日或牛顿插值法的原因吗?10相关 MATLAB函数提示:zeros(m,n)生成 m 行,n 列的零矩阵ones(m,n)生成 m 行,n 列的元素全为 1 的矩阵eye(n)生成 n 阶单位矩阵rand(m,n)生成 m 行,n 列(0,1)上均匀分布的随机矩阵diag(x)返回由向量 x 的元素构成的对角矩阵tril(A)提取矩阵 A 的下三角部分生成下三角矩阵triu(A)提取矩阵 A 的上三角部分生成上三角矩阵rank(A)返回矩阵 A 的秩det(A)返回方阵 A 的行列式inv(A)返回可逆方阵 A 的逆矩阵V,D=eig(A)返回方阵 A 的特征值和特征向量norm(A,p)矩阵或向量的 p 范数cond(A,p)矩阵的条件数L,U,P=lu(A)选列主元 LU 分解R=chol(X)平方根分解Hi=hilb(n)生成 n 阶 Hilbert 矩阵11实验六实验六 解线性方程组的迭代法解线性方程组的迭代法实验实验 6.16.1(病态的线性方程组的求解)问题提出问题提出:理论的分析表明,求解病态的线性方程组是困难的。实际情况是否如此,会出现怎样的现象呢?实验内容实验内容:考虑方程组 Hx=b 的求解,其中系数矩阵 H 为 Hilbert 矩阵,H (hi, j)nn,hi, j1,i j 1i, j 1,2,n这是一个著名的病态问题。通过首先给定解(例如取为各个分量均为 1)再计算出右端 b 的办法给出确定的问题。实验要求实验要求:(1)选择问题的维数为 6,分别用 Gauss 消去法、J 迭代法、GS 迭代法和SOR 迭代法求解方程组,其各自的结果如何?将计算结果与问题的解比较,结论如何?(2) 逐步增大问题的维数, 仍然用上述的方法来解它们, 计算的结果如何?计算的结果说明了什么?(3)讨论病态问题求解的算法12实验七实验七非线性方程求根非线性方程求根实验实验 7.17.1(迭代法、初始值与收敛性)实验目的实验目的:初步认识非线性问题的迭代法与线性问题迭代法的差别,探讨迭代法及初始值与迭代收敛性的关系。问题提出问题提出:迭代法是求解非线性方程的基本思想方法,与线性方程的情况一样, 其构造方法可以有多种多样,但关键是怎样才能使迭代收敛且有较快的收敛速度。实验内容实验内容:考虑一个简单的代数方程x2 x1 0针对上述方程,可以构造多种迭代法,如2xn1 xn1(7.1)xn111xn(7.2)xn1xn1(7.3)在实轴上取初始值 x0,请分别用迭代(7.1)-(7.3)作实验,记录各算法的迭代过程。实验要求实验要求:(1)取定某个初始值,分别计算(7.1)-(7.3)迭代结果,它们的收敛性如何?重复选取不同的初始值,反复实验。 请自选设计一种比较形象的记录方式(如利用 MATLAB的图形功能) ,分析三种迭代法的收敛性与初值选取的关系。(2)对三个迭代法中的某个,取不同的初始值进行迭代,结果如何?试分析迭代法对不同的初值是否有差异?(3)线性方程组迭代法的收敛性是不依赖初始值选取的。比较线性与非线性问题迭代的差异,有何结论和问题。相关 MATLAB函数提示:x=fzero(fun,x0)返回一元函数 fun 的一个零点,其中 fun 为函数句柄,x0 为标量时, 返回在 x0 附近的零点; x0 为向量a,b时, 返回函数在a,b中的零点x,f,h=fsolve(fun,x0)返回一元或多元函数 x0 附近 fun 的一个零点, 其中 fun 为函数句柄,x0 为迭代初值;f 返回 fun 在 x 的函数值,应该接近0; h 返回值如果大于 0,说明计算结果可靠,否则不可靠13实验八实验八 常微分方程初值问题数值解法常微分方程初值问题数值解法实验实验 8.18.1(Lorenz 问题与混沌)问题提出问题提出:考虑著名的 Lorenz 方程 dxdt s(y x)dy rx y xz(8.1)dtdz xybzdt其中 s,r,b 为变化区域有一定限制的实参数。该方程形式简单,表面上看并无惊人之处,但由该方程提示出的许多现象,促使“混沌”成为数学研究的崭新领域,在实际应用中也产生了巨大的影响。实验内容实验内容:先取定初值 y0=(0,0,0),参数 s=10,r=28,b=8/3,用 MATLAB的数值求常微分方程函数 ods45 编程对(8.1)进行求解实验要求实验要求:(1)对目前取定的参数值 s,r 和 b,选取不同的初值 y0 进行运算,观察计算的结果有什么特点?解的曲线是否有界?解的曲线是不是周期的或趋于某个固定点?(2)在问题允许的范围内适当改变其中的参数值 s,r,b,再选取不同的初始值 y0 进行运算,观察并记录计算的结果有什么特点?是否发现什么不同的现象?思考题一思考题一:考虑如下常微分方程( ) k0k1c o s mt ()xrxbs inax先固定其中参数:r=0.9,b=3,a=1,k0=0,m=1,初始值为原点,t 的范围为 0-500分别取不同的 k1,如 1,1.5,2,2.5,3,3.5 等,绘图观察相位图(x,x)的变化情况,能找到其中的规律吗?试试改变其它参数呢?14相关 MATLAB函数提示:t,y=ode45(odefun,tspan,y0)odefun 表示 f(t,y)的函数句柄,t 是标量,y 是标量或向量;tspan 是二维向量t0,tf,表示自变量初值 t0 和终值 tf;y0表示初值向量,若无输出参数,则作出图形15附录MATLABMATLAB简介简介这里介绍 MATLAB 一些入门知识,包括 MATLAB桌面和窗口,MATLAB命令格式、数据格式、数据文件和变量管理, MATLAB 的数组和矩阵运算,MATLAB 的字符串、元胞和结构等数据类型,MATLAB 的程序设计方法,MATLAB作图方法在线帮助的使用和程序文件和目录的管理等。表一 MATLAB的基本命令主题词含义主题词含义format设置数据显示格式feval函数求值who显示变量名input提示输入whos显示变量信息disp输出clear清除内存变量tic启动秒表save保存工作变量到文件toc时间读数(秒)load从文件装载变量help帮助linspace区间等分lookfor查找length获取数组长度type列程序清单size矩阵大小which查找文件目录max最大值double双精度min最小值str2num字符串转化为数值sum求和num2str数值转化为字符串find条件检索一、一、MATLABMATLAB桌面桌面启动 MATLAB后,就进入 MATLAB的桌面,图 1 为 MATLAB6.1的默认(Default) 桌面。 第一行为菜单栏, 第二行为工具栏, 下面是三个最常用的窗口。右边最大的是命令窗口( Command Window) ,左上方前台为发行说明书窗口(Launch pad) ,后台为工作空间(Workspace) ,左下方为命令历史(CommandHistory)后台为当前目录(Current Directory) 。1.窗口(1)命令窗口该窗口是进行 MATLAB操作最主要的窗口。窗口中“”为命令输入提示符,其后输入运算命令,按回车键就可执行运算,并显示运算结果.。16图 1(2)发行说明书窗口发行说明书窗口是 MATLAB 所特有的,用来说明用户所拥有的 Mathworks公司产品的工具包、演示以及帮助信息。(3)工作空间在默认桌面,位于左上方窗口前台,列出内存中 MATLAB工作空间的所有变量的变量名、尺寸、字节数。用鼠标选中变量,击右键可以打开、保存、删除、绘图等操作。(4)当前目录在默认桌面,位于左下方窗口后台,用鼠标点击可以切换到前台。该窗口列出当前目录的程序文件(.m)和数据文件(.mat)等。用鼠标选中文件,击右键可以进行打开、运行、删除等操作。(5)命令历史(Command History)该窗口列出在命令窗口执行过的 MATLAB命令行的历史记录。用鼠标选中命令行,击右键可以进行复制、执行(Evaluate Selection) 、删除等操作。除上述窗口外,MATLAB常用窗口还有编程器窗口、图形窗口等。二、数据和变量二、数据和变量1.表达式在命令窗口作一些简单的计算, 就如同使用一个功能强大的计算器,使用变量无须预先定义类型。174例如,设球半径为 r=2,求球的体积V r3。3r=2%表达式将 2 赋予变量 rr=%系统返回 r 的值2v=4/3*pi*r3%pi 为内置常量,乘方用表示v=33.5103几个表达式可以写在一行,用分号(; )或逗号(, )分割,用分号(; )使该表达式运算结果不显示,而逗号(, )则显示结果。也可以将一个长表达式分在几行上写,用三点()续行。若需要修改已执行过的命令行, 可以在命令历史中找到该命令行复制,再粘贴至命令窗口修改。也可以直接使用键盘调出已执行过的命令行修改。2.数据显示格式MATLAB默认的数据显示格式为短格式(short) :当结果为整数,就作为整数显示;当结果是实数,以小数点后四位的长度显示。若结果的有效数字超出一定范围,以科学计数法显示(如3.2000e-006 表示3.2106) 。数据显示格式可使用命令 Format 改变。例如: format long;v%长格式,16 位v =33.51032163829112 format short;v%短格式v =33.5103 format rational;v%有理格式,近似分数v =6501/1943.复数MATLAB中复数可以如同实数一样,直接输入和计算。例如: a=1+2i;b=5-4*i;c=a/bc =-0.0732 + 0.3415i4.预定义变量MATLAB有一些预定义变量(表 1) ,启动时就已赋值,可以直接使用,如前我们使用的圆周率 pi 和虚数单位 i.表 1 常用预定义变量变量名说明i 或 j虚数单位1pi圆周率 3.14159eps浮点数识别精度 2(-52)=2.22041016realmin最小正实数2.225110308realmax最大正实数1.797710308inf无穷大18NaN没有意义的数预定义变量在工作空间观察不到。 如果预定义变量被用户重新赋值,则原来的功能暂不能使用。当这些用户变量被清除(clear)或 MATLAB重新启动后,这些功能得以恢复。5.用户变量MATLAB变量名总以字母开头,以字母、数字或下划线组成,区分大小写,有效字符长度为 63 个。如 A,a,a1,a_b 都是合法的,且 a 与 A 表示不同变量。在Command Window中使用的变量一旦被赋值,就会携带这个值存在于工作空间,直到被清除或被赋予新的值。ans 是系统一个特别的变量名。若一个表达式运算结果没有赋予任何变量,系统自动用 ans 存放答案。例如: A=5+4i;b=5-4*i;B=1;A*b%没有定义 A*b 的输出变量ans =41%ans 来接受计算结果,注意这是大写 A 与小写 b 的乘积, 尽管我们可以使用工作空间来查询和清除变量,但使用下列命令方式更快捷: whos%查询 Workspace中的变量列表NameSizeBytesClassA1x116double array (complex)B1x18double arraya1x116double array (complex)ans1x18double arrayb1x116double array (complex)c1x116double array (complex)Grand total is 6 elements using 80 bytes A%查询变量 A 的值A =5.0000 + 4.0000i clear A%清除变量 A A%再查询 A 的值,已经不存在了? Undefined function or variable A. clear%清除 Workspace中所有变量 whos%Workspace中已没有任何变量了三、数组和矩阵运算三、数组和矩阵运算MATLAB基本数据单元是无需指定维数的数组。 数组运算是 MATLAB最鲜明的特点,一方面可以使得计算程序简明易读,另一方面可以提高计算速度。1.数组的输入最常用的数组是双精度数值数组(double array) 。一维数组相当于向量,二维数组相当于矩阵,一维数组可以视为二维数组的特例。二维数组的第一维称为“行” ,第二维称为“列” 。MATLAB 数组无需预先定义维数。直接输入数组的19元素,用中括号()表示一个数组,同行元素间用空格或逗号分隔,不同行间用分号或回车分隔,例如: clear;a=1,2,3;4,5,6;7,8,9a =123456789或 a=1 2 3%这种方式特别适用于大型矩阵4 5 67 8 9a =123456789对于等差数列构造的一维数组,可用冒号运算生成,也可用函数linspace 生成。 b=0:3:10%初值:增量:终值b =0369 b=0:10%增量为 1 可省略b =012345678910 b=10:-3:0%递减b =10741b=linspace(0,10,4)%将区间0,10等分为 4-1=3 份b =03.33336.666710.0000 length(b)%查询 b 的长度ans =4 b(3)%查询 b 的第三个元素ans =6.6667 b(1,end)%查询 b 的首和尾元素ans =010二维数组元素双下标编址按通常方式,单下标编址按列排序。 size(a)%查询数组 a 的尺寸ans =33 a(3,2),a(6)20ans =8ans =8 c=a(1 3,2 3)%提取 a 的第一、第三行和第二、第三列(分块矩阵)c =2389 d=a(2,:)%提取 a 的第二行d =456 a(:)%将 a 所有元素按单下标顺序排为列向量ans =147258369一些特殊的二维数组可以用函数产生,例如: a=zeros(2,4)%生成 2 行 4 列零矩阵a =00000000 b=ones(1,4)%生成 1 行 4 列 1 矩阵b =1111 c=a;b%拼接c =000000001111 c(2,1)=100%修改部分元素c =00001000001111 reshape(c,2,6)%按 2 行 6 列重排矩阵元素ans =0100102110001001注意:数组下标对应矩阵的行和列,编址一律从 1 开始,不能用 0.矩阵输入也可用“load”命令从外部数据文件导入2.数组运算数组运算是指数组对应元素之间的运算,也称点运算。矩阵的乘法、乘方和除法有特殊的数学含义,并不是数组对应元素的运算,所数组乘法、乘方和除法的运算符前特别加了一个点。特别要区分数组运算在乘法、乘方和除法上的意义和表示上与矩阵运算的不同。表 2 数组运算符运算符号说明数组加与减A+B 与 A-B对应元素之间加减数乘数组k*A 或 A*kk 乘 A 的每个元素数与数组加减k+A 或 k-Ak 加(减)A 的每个元素数组乘数组A.*B点运算只有点乘、点乘方、点除三个,表示对应元素之间的运算; (.*)是一个整数组乘方A.k,k.A体,点(.)不能漏掉, (.)和(*)之间也数除以数组k./A数组除法左除 A.B,右除 B./A不能有空格 clear;A=1 -1;0 2;B=0 1;1 -1; A.*B%注意不是 A*Bans =0-10-2 A.B,A./BWarning: Divide by zero.ans =0-1.0000Inf-0.5000Warning: Divide by zero.ans =Inf-10-2 A.2ans =1104 1./AWarning: Divide by zero.ans =1.0000-1.0000Inf0.50003.矩阵运算矩阵是一个二维数组, 所以矩阵的加、 减、 数乘等运算与数组运算是一致的。但是有两点需要注意:22(1)对于乘法、乘方和除法等三种运算,矩阵运算与数组运算的运算符及含义不同:矩阵运算按线性变换定义,使用通常符号;数组运算按对应元素运算定义,使用点运算符;(2)数与矩阵加减、矩阵除法在数学上是没有意义的,在 MATLAB 中为简便起见,定义了这两类运算,其含义见表 3.表 3 矩阵运算符运算符号说明转置A加与减A+B 与 A-B同数组运算数乘矩阵k*A 或 A*k同数组运算矩阵乘法A*B矩阵乘方Ak数与矩阵加减k+A 与 k-Ak+A 等价于 k*ones(size(A)+A矩阵除法左除AB, 右除B/A它们分别为矩阵方程 AX=B 和 XA=B 的解 A=1 2;3 4;B=4 3;2 1; 100+Aans =101102103104 A*B,A.*B%注意矩阵运算和数组运算的区别ans =852013ans =4664 AB,B/A,A.B,B./A%注意矩阵运算和数组运算的区别ans =-6.0000-5.00005.00004.0000ans =-3.50002.5000-2.50001.5000ans =4.00001.50000.66670.2500ans =4.00001.50000.66670.25004.数学函数数组的数学函数也是按每个元素的运算, 使用通常的函数符号,常用数学函数见表 423函数意义意义sin正弦向 0 取整cos余弦模余tan正切除法余数cot余切绝对值(模)asin反正弦指数函数acos反余弦自然对数sqrt开方以 10 为底的对数 A=4 -1;3 2; B=exp(A)B =54.59820.367920.08557.3891 C=fix(B)C =540207 D=sin(C)D =-0.558800.91290.6570 E=log(D)Warning: Log of zero.E =-0.5820 + 3.1416i-Inf-0.0911-0.42015.关系与逻辑运算MATLAB 的关系运算和逻辑运算符都是对于元素的操作,其结果是特殊的逻辑数组(logical array)表5, “真”用1 表示, “假”用0 表示,而逻辑运算中,所有非零元素作为 1(真)处理。表 5 关系运算和逻辑运算运算符含义运算符含义小于&与大于非=大于等于all= =等于any=不等于 A=-2:4,B=4:-1:-2A =-2-101234B =43210-1-224表 4 数学函数函数fixmodremabsexploglog10 ABans =0000111 A=Bans =0001000 A&B%逻辑运算中,所有非零元素作为 1(真)处理ans =1101011 A|Bans =1111111 find(abs(A)=2)%返回绝对值大于或等于 2 的元素的下标ans =1567 any(abs(A)5)%若存在绝对值大于 5 的元素,返回 1ans =0 all(abs(A)5)%若所有元素绝对值大于 5,返回 1ans =0四、字符串、元胞和结构四、字符串、元胞和结构除数值(double)以外,常用的数据类型还有字符 (char)、元胞(cell)和结构(structure),由此进一步组成字符数组(char array)、元胞数组(cell array)和结构数组(structure array).1.字符串MATLAB字符串用单引号对来标识,其数据类型为字符数组。 a1=Hello

    注意事项

    本文(数值分析上机实验指导书.pdf)为本站会员(赵**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开