收藏 分销(赏)

matlab数值分析实验.doc

上传人:xrp****65 文档编号:7022323 上传时间:2024-12-25 格式:DOC 页数:157 大小:1.93MB
下载 相关 举报
matlab数值分析实验.doc_第1页
第1页 / 共157页
matlab数值分析实验.doc_第2页
第2页 / 共157页
点击查看更多>>
资源描述
数值分析实验 董海云 数理学院数学实验教学中心 目 录 0 Matlab介绍入门知识 3 1 绪论 17 1.1 例题解答 17 1.2 Matlab中数值计算精度 20 2 线性方程组的直接解法 22 2.1 例题解答 22 2.2 Matlab解线性方程组常用命令介绍 36 3 线性方程组的迭代解法 38 3.1 例题解答 38 3.2 Matlab迭代解法用到的函数介绍 53 4 方阵特征值和特征向量的计算 55 4.1 例题解答 55 4.2 Matlab关于方阵特征值为特征向量函数介绍 62 5 非线性方程求根 64 5.1 例题解答 64 5.2 Matlab非线性方程求根的命令 85 6 插值法 86 6.1 例题解答 86 6.2 Matlab插值函数介绍 101 7 数据拟合和最佳平方逼近 103 7.1 例题解答 103 7.2 Matlab数据拟合命令介绍 113 8 数值积分与数值微分 114 8.1 例题解答 114 9 常微分方程数值解法 138 9.1 例题解答 138 9.2 Matlab常微分方程数值解常用命令介绍 154 0 Matlab介绍入门知识 1. Matlab简介 MATLAB的含义是矩阵实验室(MATRIX LABORATORY),主要用于方便矩阵的存取,其基本元素是无须定义维数的矩阵.MATLAB自问世以来,就是以数值计算称.MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使得MATLAB高度“向量化”.经过十几年的完善和扩充,现已发展成为线性代数课程的标准工具.由于它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的.MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具.工具箱实际上是对MATLAB进行扩展应用的一系列MATLAB函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等.随着MATLAB版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,MATLAB提供的工具箱已覆盖信号处理、系统控制、统计计算、优化计算、神经网络、小波分析、偏微分方程、模糊逻辑、动态系统模拟、系统辨识和符号运算等领域.当前它的使用范围涵盖了工业、电子、医疗、建筑等各行各业.MATLAB中包括了图形界面编辑GUI,让使用者也可以象VB、VC、VJ、DELPHI等那样进行一般的可视化的程序编辑.在命令窗口(matlab command window)键入simulink,就出现(SIMULINK) 窗口.以往十分困难的系统仿真问题,用SIMULINK只需拖动鼠标即可轻而易举地解决问题,这也是近来受到重视的原因所在. MATLAB 语言由美国 The MathWorks 开发,最早是由C.Moler用Fortran语言编写的,用来方便地调用LINPACK和EISPACK矩阵代数软件包的程序.后来他创立了MATHHWORKS公司,对MATLAB作了大量的、坚持不懈的改进.Cleve B.Moler是The MathWork公司的主席和首席科学家.曾任密歇系教授.他在两个计算机硬件制造商Intel公司的Hypercube组织和Arden Computers 公司工作了五年.他的主要专业兴趣在于数值分析和科学计算.他是MATLAB软件的创始者,也是著名的矩阵计算软件包LINPACK和EISPACK的著作这一,已撰写了三本有相关数值方法的教材.同时,他在SIAM(美国工业与应用数学学会)历任期刊编辑、委员会成员和副总裁,并从1996年开始担任理事会成员. 2. Matlab入门知识 Matlab变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符.在MATLAB中,变量名区分字母的大小写. 赋值语句: 变量=表达式 或 表达式 其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵. clear命令用于删除MATLAB工作空间中的变量.who和whos这两个命令用于显示在MATLAB工作空间中已经驻留的变量名清单.who命令只显示出驻留变量的名称,whos在给出变量名的同时,还给出它们的大小、所占字节数及数据类型等信息. 利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来,扩展名是.mat.MAT文件的生成和装入由save和load命令来完成.常用格式为: save 文件名 [变量名表] [-append][-ascii] load 文件名 [变量名表] [-ascii] 其中,文件名可以带路径,但不需带扩展名.mat,命令隐含一定对.mat文件进行操作.变量名表中的变量个数不限,只要内存或文件中存在即可,变量名之间以空格分隔.当变量名表省略时,保存或装入全部变量.-ascii选项使文件以ASCII格式处理,省略该选项时文件将以二进制格式处理.save命令中的-append选项控制将变量追加到MAT文件中. (1) 向量的创建 用步长生成法: 数组=初值:步长(增量):终值 >> a=1:0.5:3 a = 1.0000 1.5000 2.0000 2.5000 3.0000 用linspace生成: 数组=linspace(初值,终值,等分点数目) >> b=linspace(1,3,5) b = 1.0000 1.5000 2.0000 2.5000 3.0000 列向量用分号(;)作为分行标记: >> c=[1;2;3;4;] c = 1 2 3 4 若不想输出结果,在每一条语句后用分号作为结束符,若留空或用逗号结束,则在执行该语句后会把结果输出来. >> a+b; >> a+b ans = 2 3 4 5 6 (2) 矩阵的创建 直接输入: 最简单的建立矩阵的方法是从键盘直接输入矩阵的元素.具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔. >> A=[1 2 3;4 5 6;2 3 5] A = 1 2 3 4 5 6 2 3 5 利用矩阵函数创建: >> B=magic(3)%魔方阵 B = 8 1 6 3 5 7 4 9 2 >> C=hilb(3)%3阶Hilbert矩阵 C = 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000 Matlab中用%引导注释 其它创建矩阵函数还有: eye(m,n):生成m行n列单位矩阵. zeros(m,n):生成m行n列全零矩阵. ones(m,n):生成全1矩阵. rand(m,n):生成随机矩阵. rand:生成一个随机数. diag(A):取A的对角线元素. tril(A):取A的下三角元素. triu(A):取A的上三角元素. hilb(n):生成n维Hilbert矩阵. randn(n):产生均值为0,方差为1的标准正态分布随机矩阵. vander(V):生成以向量V为基础向量的范得蒙矩阵. invhilb(n): 求n阶的希尔伯特矩阵的逆矩阵. toeplitz(x,y): 生成一个以x为第一列,y为第一行的托普利兹矩阵 compan(p): 生成伴随矩阵, p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后. pascal(n): 生成一个n阶帕斯卡矩阵. compan: 生成伴随矩阵 (3) 矩阵运算 MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方). 加法: >> A+B ans = 9 3 9 7 10 13 6 12 7 减法: >> B-A ans = 7 -1 3 -1 0 1 2 6 -3 乘法: >> A*B ans = 26 38 26 71 83 71 45 62 43 除法: >> magic(3)/hilb(3) ans = 1.0e+003 * 0.2160 -1.1760 1.1400 0.0570 -0.4080 0.4500 -0.2280 1.2240 -1.1400 在MATLAB中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算.点运算符有.*、./、.\和.^.两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同. >> A.*B ans = 8 2 18 12 25 42 8 27 10 MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于). >> A>B ans = 0 1 0 1 0 0 0 0 1 MATLAB提供了3种逻辑运算符:&(与)、|(或)和~(非). 在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示.设参与逻辑运算的是两个标量a和b,那么, a&b a,b全为非零时,运算结果为1,否则为0. a|b a,b中只要有一个非零,运算结果为1. ~a 当a是零时,运算结果为1;当a非零时,运算结果为0. 3. 矩阵操作和矩阵函数 矩阵通过下标引用矩阵的元素,矩阵元素的序号就是相应元素在内存中的排列顺序.在MATLAB中,矩阵元素按列存储,先第一列,再第二列,依次类推. (1) 矩阵拆分 利用冒号表达式获得子矩阵.A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素.A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素. 此外,还可利用一般向量和end运算符来表示矩阵下标,从而获得子矩阵.end表示某一维的末尾元素下标. (2) 利用空矩阵删除矩阵的元素 在MATLAB中,定义[]为空矩阵.给变量X赋空矩阵的语句为X=[]. (3) 矩阵的转置 转置运算符是单撇号(‘). (4) 矩阵的旋转 利用函数rot90(A,k)将矩阵A旋转90o的k倍,当k为1时可省略. (5) 矩阵的左右翻转 对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依次类推.MATLAB对矩阵A实施左右翻转的函数是fliplr(A). (6) 矩阵的上下翻转 MATLAB对矩阵A实施上下翻转的函数是flipud(A). (7) 方阵A的逆矩阵inv(A) >> A=magic(3) A = 8 1 6 3 5 7 4 9 2 >> B=inv(A) B = 0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056 -0.0194 0.1889 -0.1028 >> A*B ans = 1.0000 0 -0.0000 -0.0000 1.0000 0 0.0000 0 1.0000 (8) 方阵的行列式 >> det(A) ans = -360 (9) 矩阵的迹 >> C=trace(A) C = 15 (10) 一些常用的基本初等三角函数 三角函数:sin(x),cos(x),tan(x) 反三角函数:asin(x),acos(x),atan(x) 指数函数:exp(x) 自然对数:log(x) 常用对数:log10(x) 以2为底的对数:log2(x) 开平方:sqrt(x) 绝对值:abs(x) 计算一般函数值:eval(f) 求虚部函数: imag(x) 求实部函数: real(x) 角相位函数:angle(x) 共轭复数函数:conj(x) 沿零方向取整 :fix (x) 舍入取整:round(x) 沿负无穷大方向取整:floor (x) 沿正无穷大方向取整:ceil(x) 求除法的余数: rem 符号函数:sign(x) 最大公约数:gcd() 4. 图形可视化 (1) 二维绘图指令plot plot函数的基本调用格式为: plot(x,y,) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据. plot(x) plot函数最简单的调用格式.当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线.实际上是绘制折线图. plot(x1,y1,x2,y2,…,xn,yn) 当输入参数都为向量时,x1和y1,x2和y2,…,xn和yn分别组成一组向量对,每一组向量对的长度可以不同.每一向量对可以绘制出一条曲线,可以在同一坐标内绘制出多条曲线. plotyy(x1,y1,x2,y2) 绘制出具有不同纵坐标标度的两个图形. hold on/off 保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换. plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n) 设置曲线样式进行绘图. 选项字段见下表: 表 Matlab常用线形与颜色标记表 符号 线型 符号 线型 符号 线型 颜色 含义 - 实线 . 实点标记 ^ 朝上三角 g 绿色 -- 虚线 o 圆圈 < 朝左三角 r 红色 : 点线 X 叉字符 > 朝右三角 c 青色 -. 点划线 + 加号 p 五角星 m 洋红 * 星号 h 六角形 y 黄色 s 方块 k 黑色 d 菱形 w 白色 v 朝下三角 b 蓝色 (2) 图形标注: title('图形名称'):图形标题 xlabel('x轴说明') ylabel('y轴说明') text(x,y,'图形说明') legend('图例1','图例2',…) gtext('用鼠标确定位置的字符说明') (3) 坐标控制axis axis([xmin xmax ymin ymax zmin zmax]) axis函数功能丰富,常用的格式还有: axis equal:纵、横坐标轴采用等长刻度. axis square:产生正方形坐标系(缺省为矩形). axis auto:使用缺省设置. axis off:取消坐标轴. axis on:显示坐标轴. grid on/off:网格开/关 box on/off:加/不加边框线 上述命令示例如下: >> x=1:length(peaks); >> plot(x,peaks); >> box on; >> title('绘制混合图形'); >> xlabel('X轴'); >> ylabel('Y轴'); 绘制图像为: (4) 二维数值函数的专用绘图函数fplot fplot(functionname,[a,b],tol,选项) 其中functionname为函数名,以字符串形式出现,[a,b]为绘图区间,tol为相对允许误差,其系统默认值为2e-3.选项定义与plot函数相同. >> fplot(@(x)[tan(x),sin(x),cos(x)], 2*pi*[-1 1 -1 1]); (5) 二维符号函数曲线专用命令ezplot f = f(x)时: ezplot(f):在默认区间-2π<x<2π绘制f = f(x)的图形. ezplot(f, [a,b]):在区间a<x<b绘制f = f(x)的图形 f = f(x,y)时: ezplot(f):在默认区间-2π<x<2π和-2π<y<2π绘制f(x,y) = 0的图形. ezplot(f, [xmin,xmax,ymin,ymax]):在区间xmin<x<xmax和ymin<y<ymax绘制f(x,y) = 0的图形 ezplot(f, [a,b]):在区间a<x<b和a<y< b绘制f(x,y) = 0的图形 若x = x(t),y = y(t): ezplot(x,y):在默认区间0<t<2π绘制x=x(t)和y=y(t)的图形. ezplot(x,y, [tmin,tmax]):在区间tmin < t < tmax绘制x=x(t)和y=y(t)的图形 >> figure;ezplot('cos(tan(pi*x))',[ 0,1]); (6) 图形窗口的分割subplot subplot(m,n,p) 该函数将当前图形窗口分成m×n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区.在每一个绘图区允许以不同的坐标系单独绘制图形. (7) 其他坐标系下的二维数据曲线图 对数坐标图形: semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…) 极坐标图polar: polar(theta,r,选项) 其中theta为极坐标极角,r为极坐标矢径,选项的内容与plot函数相似. 二维统计分析图: bar(x,y,选项):条形图 stairs(x,y,选项):阶梯图 stem(x,y,选项):杆图 fill(x1,y1,选项1,x2,y2,选项2,…):填充图 (8) 三维曲线plot3 plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同.当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线.当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数. >> t=0:0.1:8*pi; >> plot3(sin(t),cos(t),t); (9) 产生三维数据 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵.其格式为: [X,Y]=meshgrid(x,y); 语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数. (10) 绘制三维曲面的函数 surf函数和mesh函数的调用格式为: mesh(x,y,z,c) surf(x,y,z,c) 一般情况下,x,y,z是维数相同的矩阵.x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围. (11) 标准三维曲面 sphere函数的调用格式为: [x,y,z]=sphere(n) cylinder函数的调用格式为: [x,y,z]= cylinder(R,n) MATLAB还有一个peaks 函数,称为多峰函数,常用于三维曲面的演示. (12) 其他三维绘图指令介绍 bar3函数绘制三维条形图,常用格式为 bar3(y) bar3(x,y) stem3函数绘制离散序列数据的三维杆图,常用格式为: stem3(z) stem3(x,y,z) pie3函数绘制三维饼图,常用格式为: pie3(x) fill3函数等效于三维函数fill,可在三维空间内绘制出填充过的多边形,常用格式为: fill3(x,y,z,c) 5. 程序控制结构 (1)数据的输入: A=input(提示信息,选项) 其中提示信息为一个字符串,用于提示用户输入什么样的数据.如果在input函数调用时采用's'选项,则允许用户输入一个字符串. (2)数据的输出: disp(输出项) (3)程序的暂停: pause(延迟秒数) 如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行. 若要强行中止程序的运行可使用Ctrl+C命令. (4)单分支if语句: if 条件 语句组 end 当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句. (5) 双分支if语句: if 条件 语句组1 else 语句组2 end 当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句. (6) 多分支if语句: if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组n end 语句用于实现多分支选择结构. (7)switch语句: switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 …… case 表达式m 语句组m otherwise 语句组n end (8)try语句 语句格式为: try 语句组1 catch 语句组2 end try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2. (9)for语句 for语句的格式为: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值.步长为1时,表达式2可以省略. for语句更一般的格式为: for 循环变量=矩阵表达式 循环体语句 end 执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕. (10)while语句 while语句的一般格式为: while (条件) 循环体语句 end 其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环. (11)break语句和continue语句 与循环结构相关的语句还有break语句和continue语句.它们一般与if语句配合使用. break语句用于终止循环的执行.当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句. continue语句控制跳过循环体中的某些语句.当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环. (12)循环的嵌套 如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构. (13)函数文件的基本结构 函数文件由function语句引导,其基本结构为 function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 其中以function开头的一行为引导行,表示该M文件是一个函数文件.函数名的命名规则与变量名相同.输入形参为函数的输入参数,输出形参为函数的输出参数.当输出形参多于一个时,则应该用方括号括起来. (14)函数调用 函数调用的一般格式是: [输出实参表]=函数名(输入实参表) 注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错.函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能. 在MATLAB中,函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它自身.一个函数调用它自身称为函数的递归调用. (15)函数参数的可调性 在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数.只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理. (16)全局变量与局部变量 全局变量用global命令定义,格式为: global 变量名 (17)程序调试 Debug菜单项: 该菜单项用于程序调试,需要与Breakpoints菜单项配合使用. Breakpoints菜单项: 该菜单项共有6个菜单命令,前两个是用于在程序中设置和清除断点的,后4个是设置停止条件的,用于临时停止M文件的执行,并给用户一个检查局部变量的机会,相当于在M文件指定的行号前加入了一个keyboard命令. 调试命令: 除了采用调试器调试程序外,MATLAB还提供了一些命令用于程序调试.命令的功能和调试器菜单命令类似,具体使用方法请读者查询MATLAB帮助文档. 1 绪论 1.1 例题解答 例1.1 计算,. 解: 创建符号函数: >> syms x; >>f=sym('sin(x)') f = sin(x) 展开至7阶泰勒级数: >> h=taylor(f,8,0) h = x-1/6*x^3+1/120*x^5-1/5040*x^7 求泰勒级数在处的函数值: >> subs(h,x,0.5) ans = 0.479425533234127 也可以通过内联函数来求解: >>H=inline(h) H = Inline function: H(x) = x-1./6.*x.^3+1./120.*x.^5-1./5040.*x.^7 >>feval(H,0.5) ans = 0.479425533234127 例 1.2 计算积分值. 解: 解法一:( 符号法): >> I=int('1/(1+x)','x',0,1) I = log(2) 解法二 :(数值法): >>x=0:0.2:1; %将[0,1]等分为4等份 >>f=1./(1+x); %分别计算每一个等分点的函数值 >>I=0; >>for i=1:5 I=I+(f(i)+f(i+1))/2*0.2; %将每一小曲边的梯形累加起来作为积分值 End >> vpa(I,9) %取结果的小数精度为9位小数 ans = .695634921 例 1.3略 例 1.4 不用开平方根计算的值. 解: 解法一(符号法): >> A=sym('a'); >> sqrt(A) ans = a^(1/2) 解法二(数值法): 按以下迭代公式迭代计算近似值: 建立函数文件msqrt.m function x=msqrt(x0,a) %用迭代法近似计算平方根 %x0为初始迭代值,a为开平方数 format long; x=zeros(20,1); x(1)=x0; for i=2:20 x(i)=1/2*(x(i-1)+a/x(i-1)); end disp(x); 用编写的函数计算,: >> msqrt(2,3); 2.000000000000000 1.750000000000000 1.732142857142857 1.732050810014727 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 上述结果为迭代过程计算的中间结果,分析数据可知迭代收敛速度快,只需四次计算即可计算出较为准确的数值. 例 1.5 略. 例 1.6 计算,视已知数为精确数,用4位浮点数计算. 解: 直接在Matlab中输入式子: >> 1/759-1/760 ans = 1.7336e-006 若先转化为浮点数再运算可得: >> a=1/759,b=1/760,a-b a = 0.0013 b = 0.0013 ans = 1.7336e-006 可见Matlba在计算时,数据结构都取为双精度而提高了运算准确度.若以符号运算计算之,有: >> a=sym('1/759'),b=sym('1/760'),c=a-b a = 1/759 b = 1/760 c = 1/576840 可见符号运算准确但耗费运算时间. 例 1.7 略. 例 1.8 解方程. 解: 符号法解方程: >> x=solve('x^2-18*x+1','x') x = 9+4*5^(1/2) 9-4*5^(1/2) 将结果保留小数点6位: >> vpa(x,6) ans = 17.9443 .5572e-1 1.2 Matlab中数值计算精度 1. Matlab中有三种运算精度,它们分别为数值算法、符号算法和可控精度算法,将它们分别介绍如下: (1) 数值算法把每个数取为16位,计算按浮点运算进行,它是运算速度最快的一种算法. (2) 符号算法把每个数都变为符号量,运算按有理量计算进行,它的优点是能够得到精确结果,缺点是占用空间大,并且运算速度最慢. (3) 可控精度算法介于上述两种算法之间,它能够使运算在可控的精度下进行计算. 2. Matlab的数据显示格式,列表如下: 表 Matlab数据显示格式命令 命令 意义 举例() format short 短格式方式,显示5位定点十进制数 3.1416 format long 长格式方式,显示15位定点十进制数 3.141592653589793 format short e 最优化短格式显示,5位加指数 3.1416e+000 format long e 最优格式,15位加指数 3.141592653589793e+000 format short g 5位定点或浮点格式 3.1416 format long g 对双精度,显示15位定点或浮点格式,对单精度,显示7位定点或浮点格式 3.14159265358979 format short eng 至少5位加3位指数 3.1416e+000 format long eng 16位加至少3位指数 3.14159265358979e+000 format hex 十六进制格式方式 400921fb54442d18 format bank 银行格式.按元、角、分(小数点后具有两位)的固定格式 3.14 format + +格式,以+,—和空格分别表示中的正数,负数和零元素 + format 缺省时为默认短格式方式与format short相同 3.1416 format rat 分数格式形式.用有理数逼近显示数据 355/113 format loose 松散格式.数据之间有空行 format compact 紧凑格式.数据之间无空行 vpa(date,n) 将数据date以n位有效数字显示 vpa(pi,5)= 3.1416 format并不影响matlab如何计算和存储变量的值.对浮点型变量的计算,即单精度或双精度,按合适的浮点精度进行,而不论变量是如何显示的.对整型变量采用整型数据.整型变量总是根据不同的类(class)以合适的数据位显示. 3. Matlab的特殊变量 ans :对最近输入的反应 computer :当前计算机类型 eps :浮点精度 flops :计算浮点操作次数,现已不再常用 i :虚部单位 inf :无穷大 inputname :输入参数名 j :虚部单位 nan :非数值 nargin :输入参数的数目 nargout :输出参数的数目(用户定义函数) pi :圆周率 realmax :最大正浮点数 realmin :最小正浮点数 varargin varargout :返回参数数目(matlab函数) cputime:CPU工作时间 2 线性方程组的直接解法 2.1 例题解答 例 2.1 用Gauss消元法解方程组: 解: 直接建立求解该方程组的M文件Gauss.m如下: %求解例题2.1 %高斯法求解线性方程组Ax=b %A为输入矩阵系数,b为方程组右端系数 %方程组的解保存在x变量中 %先输入方程系数 A=[1 2 3;2 7 5;1 4 9]; b=[1 6 -3]'; [m,n]=size(A); %检查系数正确性 if m~=n error('矩阵A的行数和列数必须相同'); return; end if m~=size(b) error('b的大小必须和A的行数或A的列数相同'); return; end %
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服