当前位置:文档之家› 计算方法与软件应用1

计算方法与软件应用1

数学计算方法与软件的工程应用第一章 MATLAB 软件基础介绍MATLAB 是Matrix Laboratory (矩阵实验室)的缩写,最初是专门用于处理矩阵计算的软件。

目前,它是集计算、可视化及编程等功能于一身的一个最流行的数学软件。

其特点是:1、功能强大它不仅具有强大的数值计算功能,可以处理如:矩阵计算、微积分运算、各种方程的求 解、插值和拟合计算、完成各种统计和优化问题,最新的版本甚至可以进行数字图象处理、小波分析等;同时它还有方便的画图功能和完善的图形可视化功能。

2、使用方便MATLAB 语言灵活,它将编译、连接和执行融为一体,是一种演算式语言。

与其他语言不同,在MATLAB 中各种变量不需先说明变量的数据类型或定义向量或矩阵变量的维数。

此外,MATLAB 的帮助系统使用也十分方便,用户可以通过演示和示例学习如何使用该软件。

3、编程容易效率高MATLAB 具有结构化的控制语句,又具有面向对象的编程特性。

它允许用户以数学形式的语言编程,比其他语言更接近书写计算公式的思维方式。

MATLAB 程序文件是文本文件,它的编写和修改可以用任何字处理软件进行,程序调试也非常方便。

4、扩充能力强MATLAB 软件是一个开放的系统,除内部函数外它的其他函数的源程序都是可以修改的;同时,用户自行编写的程序和开发的工具箱可以象库函数一样任意调用。

MATLAB 也可以方便地与FORTRAN 、C 等语言进行对接,实现不同语言编写的程序、子程序之间的相互调用。

本章主要介绍MATLAB 的基础应用,在后面的各个部分中,我们将详细介绍MATLAB 在这一部分的调用,编程或计算。

一、数据和变量1、表达式在命令窗口做一些简单的计算,就如同使用一个功能强大的计算器,使用变量无须预先 定义类型。

如设球的半径为2=r ,求球的体积334r V π=,则在命令窗口中输入:>>r=2 %表达式将2赋予变量rr=2 %系统返回r的值>>V=4/3*pi*r^3 %pi为内置变量,乘方用^V=33.5103注意:几个表达式可以写在一行,用分号(;)或逗号(,)分割,用分号则该表达式运算结果不显示。

如:>>r=2;V=4/3*pi*r^3V=33.5103如果需要修改已执行过的命令行,可以在命令历史中找到该命令行复制,再粘帖到命令窗口修改,也可使用键盘↑↓,调出已执行过的命令行修改.2、据显示格式MATLAB默认的数据显示格式为短格式(short),当结果为整数时,显示整数,当结果为实数时,以小数点后4为长度显示。

若结果的有效数字超出一定范围,以科学记数法显示。

数据显示格式可使用命令Format改变。

如>>format long; V %长格式(long),16位V=2.144 660 584 850 632e+003>>format short g; V %短紧凑格式(short g),书写习惯格式V=2144.7>>format rational; V %有理格式,近似分数V=120 101/56>>format; V %恢复默认的短格式V=2.1447e+003注意:数据显示格式也可以通过菜单命令:File: Preference: Command: Numeric format 改变.3、复数的输入与计算在MATLAB中,复数可以与实数一样输入计算。

如>>a=1+2*i; b=5-4*i; c=a/bc=-0.0732+0.3415*i4、预定义变量MATLAB中的一些常见的预先定义的变量有:i 或j----------虚数单位1- Pi-------------圆周率eps----------浮点数识别精度:2^(-52)=16102204.2-⨯relmin-------最小正实数为: 308102251.2-⨯,低于该值为0relmax-------最大正实数为: 308107977.1⨯,超过该值为无穷大Inf----------无穷大 NaN----------无意义的数二、数组和矩阵运算1、数组输入最常用的数组是双精度数值数组(double array )。

一维数组相当于向量,二维数组相当于矩阵,一维数组可以视为二维数组的特例。

二维数组的第一维称为“行”,第二维称为“列”。

输入方式如下: >>clear>>a=[1,2,3;4,5,6;7,8,9] a=1 2 3 4 5 6 7 8 9对于等差数列构造的一维数组,可以用冒号生成,也可以用函数linspace 生成.如 >>b=0:3:10 b=0 3 6 9>>b=0:10 %默认步长为1 b=0 1 2 3 4 5 6 7 8 9 10>>b=linspace(0,10,4) %将区间[0,10]等分为4-1=3分 b=0 3.333 3 6.666 7 10.000 0 >>length(b) %查询b 的长度 b=4>>b(3) %查询b 的第三个元素 ans=6.666 7二维数组元素双下标编址按通常方式,单下标编址按列排序,如:>>size(a) %查询数组尺寸ans=3 3>>a(3,2) %查询a的第3行,第2列元素ans=8>>c=a([1 3],[2 3]) %提取a的1,3行,2,4列c=2 389>>d=a(2,:) %提取a的第2行d=4 5 6>>d=a(:,3) %提取a的第3列d=369一些特殊的二维数组可以用函数产生.>>a=zeros(2,4) %产生2行4列零矩阵a=0 0 0 00 0 0 0>>b=ones(1,4) %产生2行4列元素全为1的矩阵b=1 1 1 1>>c=[a;b] %矩阵的拼接c=0 0 0 00 0 0 01 1 1 1>>c(2,1)=100 %修改部分元素c=0 0 0 0100 0 0 01 1 1 12、数组运算数组运算是指数组对应的元素之间的运算,也称点运算。

矩阵的乘法、乘方和除法有特殊的数学含义,并不是数组对应的元素的运算,所以数组乘法、乘方和除法的运算符前特别加了一点。

表一数组运算符>>clear>>A=[1,-1;0,2];B=[0,1;1,-1];>>A。

*Bans=0-10-2>>A。

\B,A。

/Bans=0-1.000 0Inf -0,500 0Ans=Inf -10-23、矩阵运算矩阵是一个二为数组,所以矩阵的加、减、数乘运算与数组运算的运算符号一致(见下表),但有两点需要注意:(1)对于乘法、乘方和除法三种运算,矩阵运算与数组运算是不同的。

数组运算是点运算符,而矩阵运算是按线性变换来定义的。

(2)数与矩阵的加、减及矩阵的除法在数学上是无意义的,在MATLAB中为了方便使用,定义了这两类运算(见表二)表一数组运算符>>A=[1,2;3,4];B=[4,3;2,1];>>100+Aans=101102102104>>A*B,A。

*Bans=8 520 19ans=4 66 4>>A\B,B/Aans=-6 -55 4ans=-3.5 2.5-2.5 1.54、数学函数在MATLAB中,常用的数学函数有:sin cos tan cot asin(反正弦) acos (反余弦)sqrt(开方) exp log(自然对数) log10floor(向- 取整)>>A=[4,-1;3,2];>>B=exp(A)B=54.598 0.3678820.086 7.3891>>C=floor(B)C=54020 7>>D=sin(C)D=-0.55879 00.91295 0.656995、关系与逻辑运算MATLAB的关系运算和逻辑运算符都是对于元素操作的,其结果是特殊的逻辑数组。

在MATLAB中,“真”用1表示,“假”用0表示。

见下表表三关系运算和逻辑运算>>A=-2:4,B=4:-1:-2A=-2 -1 0 1 2 3 4B=4 3 2 1 0 -1 -2>>A>Bans=0 0 0 0 1 1 1>>A&B %逻辑运算中,所有非零元素作为1处理ans=1 1 0 1 0 1 1>>find(abs(A)>=2) %返回绝对值大于或等于2的元素的下标ans=1 5 6 7>>any(abs(A)>5) %若存在绝对值大于5的元素,返回1ans=>>all(abs(A)>5) %若所有元素的绝对值大于5,返回1ans=三、字符串、元胞和结构除数值(double)以外,常用的数据类型还有字符(char)、元胞(cell)和结构(structure),并由此可以进一步组成字符数组(char array)、元胞数组(cell array)和结构数组(structure array)。

1、字符串>>a1=’Hello everyone’a1=Hello everyone>>a2=’各位好’a2=各位好>>a=[a1,’.’,a2,’.’] %字符拼接a=Hello everyone. 各位好.2、元胞和结构不管是数值组还是字符组,其结构必须是整齐的。

首先数值和字符不能混合,其次小数组拼接成大数组时,其尺寸必须相符>>A=[‘first ’;’second ’] %错误输入 ??? Error using ==> vertcatAll rows in the bracketed expression must have the same number of columns.如果要将不同类型、不同尺寸的数组或字符串拼接,可用下面方法: >>Ac1={‘first ’;1:3};Ac2={‘second ’;[1,2;3,4]}; >>Ac=[Ac1,Ac2] Ac=‘first ’ ‘second ’ [1×3 double] [2×2 double]>>Ac(2,1) %小括号,查询Ac 的第二行,第一列 ans=[1×3 double]>>Ac{2,1} %大括号,查询Ac 的第二行,第一列的具体内容 ans=1 2 3四、程序设计1、控制流:语法以end 结尾,常用结构为:例1 计算∑==100121i ns >>clear >>s=0;>>for n=1:100s=s+1/n/n; end >>s s=1.63502、M 脚本文件复杂程序结构在命令窗口调试或保存都是不方便的,所以进行复杂的运算大都使用程序文件。

相关主题